SRCS = glob([
  'src/main/java/**/*.java',
  'src/test/java/com/google/gerrit/server/project/Util.java'
])
RESOURCES =  glob(['src/main/resources/**/*'])

# TODO(sop) break up gerrit-server java_library(), its too big
java_library2(
  name = 'server',
  srcs = SRCS,
  resources = RESOURCES,
  deps = [
    '//gerrit-antlr:query_exception',
    '//gerrit-antlr:query_parser',
    '//gerrit-common:server',
    '//gerrit-extension-api:api',
    '//gerrit-patch-commonsnet:commons-net',
    '//gerrit-patch-jgit:server',
    '//gerrit-prettify:server',
    '//gerrit-reviewdb:server',
    '//gerrit-util-cli:cli',
    '//gerrit-util-ssl:ssl',
    '//lib:args4j',
    '//lib:automaton',
    '//lib:gson',
    '//lib:guava',
    '//lib:gwtjsonrpc',
    '//lib:gwtorm',
    '//lib:jsch',
    '//lib:juniversalchardet',
    '//lib:mime-util',
    '//lib:ow2-asm',
    '//lib:ow2-asm-tree',
    '//lib:ow2-asm-util',
    '//lib:parboiled-core',
    '//lib:pegdown',
    '//lib:protobuf',
    '//lib:velocity',
    '//lib/antlr:java_runtime',
    '//lib/commons:codec',
    '//lib/commons:dbcp',
    '//lib/commons:lang',
    '//lib/commons:net',
    '//lib/guice:guice',
    '//lib/guice:guice-assistedinject',
    '//lib/guice:guice-servlet',
    '//lib/jgit:jgit',
    '//lib/log:api',
    '//lib/prolog:prolog-cafe',
  ],
  compile_deps = [
    '//lib/bouncycastle:bcprov',
    '//lib/bouncycastle:bcpg',
  ],
  visibility = ['PUBLIC'],
)

java_sources(
  name = 'server-src',
  srcs = SRCS + RESOURCES,
  visibility = ['PUBLIC'],
)

TESTUTIL = glob(['src/test/java/com/google/gerrit/testutil/**/*.java'])
java_library(
  name = 'testutil',
  srcs = TESTUTIL,
  deps = [
    ':server',
    '//gerrit-common:server',
    '//gerrit-cache-h2:cache-h2',
    '//gerrit-lucene:lucene',
    '//gerrit-reviewdb:client',
    '//gerrit-reviewdb:server',
    '//lib:guava',
    '//lib:gwtorm',
    '//lib:h2',
    '//lib:junit',
    '//lib/guice:guice',
    '//lib/guice:guice-servlet',
    '//lib/jgit:jgit',
    '//lib/jgit:junit',
  ],
  visibility = ['PUBLIC'],
)

PROLOG_TEST_CASE = [
  'src/test/java/com/google/gerrit/rules/PrologTestCase.java',
]
PROLOG_TESTS = glob(
  ['src/test/java/com/google/gerrit/rules/**/*.java'],
  excludes = PROLOG_TEST_CASE,
)

java_library(
  name = 'prolog_test_case',
  srcs = PROLOG_TEST_CASE,
  deps = [
    ':server',
    '//lib:junit',
    '//lib/guice:guice',
    '//lib/prolog:prolog-cafe',
  ],
  export_deps = True,
)

java_test(
  name = 'prolog_tests',
  srcs = PROLOG_TESTS,
  resources = glob(['src/test/resources/com/google/gerrit/rules/**/*']),
  deps = [
    ':prolog_test_case',
    '//gerrit-server/src/main/prolog:common',
  ],
)

java_test(
  name = 'server_tests',
  srcs = glob(
    ['src/test/java/**/*.java'],
    excludes = TESTUTIL + PROLOG_TESTS + PROLOG_TEST_CASE
  ),
  deps = [
    ':server',
    ':testutil',
    '//gerrit-antlr:query_exception',
    '//gerrit-antlr:query_parser',
    '//gerrit-common:server',
    '//gerrit-extension-api:api',
    '//gerrit-reviewdb:server',
    '//lib:easymock',
    '//lib:guava',
    '//lib:gwtorm',
    '//lib:junit',
    '//lib/antlr:java_runtime',
    '//lib/guice:guice',
    '//lib/jgit:jgit',
    '//lib/jgit:junit',
    '//lib/prolog:prolog-cafe',
  ],
  source_under_test = [':server'],
)
