Merge "GetPastAssignees: Return past assignees as list"
diff --git a/BUILD b/BUILD
index 7ae3589..76e2177 100644
--- a/BUILD
+++ b/BUILD
@@ -10,4 +10,4 @@
 
 pkg_war(name = 'gerrit')
 pkg_war(name = 'headless', ui = None)
-pkg_war(name = 'release', ui = 'ui_optdbg_r', context = ['//plugins:core'])
+#pkg_war(name = 'release', ui = 'ui_optdbg_r', context = ['//plugins:core'])
diff --git a/WORKSPACE b/WORKSPACE
index b07f289..3be5fab 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -318,6 +318,12 @@
 )
 
 maven_jar(
+  name = 'commons_lang3',
+  artifact = 'org.apache.commons:commons-lang3:3.3.2',
+  sha1 = '90a3822c38ec8c996e84c16a3477ef632cbc87a3',
+)
+
+maven_jar(
   name = 'commons_dbcp',
   artifact = 'commons-dbcp:commons-dbcp:1.4',
   sha1 = '30be73c965cc990b153a100aaaaafcf239f82d39',
@@ -430,6 +436,12 @@
 )
 
 maven_jar(
+  name = 'lucene_codecs',
+  artifact = 'org.apache.lucene:lucene-codecs:' + LUCENE_VERS,
+  sha1 = 'e01fe463d9490bb1b4a6a168e771f7b7255a50b1',
+)
+
+maven_jar(
   name = 'backward_codecs',
   artifact = 'org.apache.lucene:lucene-backward-codecs:' + LUCENE_VERS,
   sha1 = 'c5cfcd7a8cf48a0144b61fb991c8e50a0bf868d5',
@@ -447,40 +459,89 @@
   sha1 = '8ac921563e744463605284c6d9d2d95e1be5b87c',
 )
 
+
+maven_jar(
+  name = 'lucene_highlighter',
+  artifact = 'org.apache.lucene:lucene-highlighter:' + LUCENE_VERS,
+  sha1 = 'd127ac514e9df965ab0b57d92bbe0c68d3d145b8',
+)
+
+maven_jar(
+  name = 'lucene_join',
+  artifact = 'org.apache.lucene:lucene-join:'+ LUCENE_VERS,
+  sha1 = 'dac1b322508f3f2696ecc49a97311d34d8382054',
+)
+
+maven_jar(
+  name = 'lucene_memory',
+  artifact = 'org.apache.lucene:lucene-memory:' + LUCENE_VERS,
+  sha1 = '7409db9863d8fbc265c27793c6cc7511304182c2',
+)
+
+maven_jar(
+  name = 'lucene_misc',
+  artifact = 'org.apache.lucene:lucene-misc:' + LUCENE_VERS,
+  sha1 = '37bbe5a2fb429499dfbe75d750d1778881fff45d',
+)
+
+maven_jar(
+  name = 'lucene_sandbox',
+  artifact = 'org.apache.lucene:lucene-sandbox:' + LUCENE_VERS,
+  sha1 = '30a91f120706ba66732d5a974b56c6971b3c8a16',
+)
+
+maven_jar(
+  name = 'lucene_spatial',
+  artifact = 'org.apache.lucene:lucene-spatial:' + LUCENE_VERS,
+  sha1 = '8ed7a9a43d78222038573dd1c295a61f3c0bb0db',
+)
+
+maven_jar(
+  name = 'lucene_suggest',
+  artifact = 'org.apache.lucene:lucene-suggest:' + LUCENE_VERS,
+  sha1 = 'e8316b37dddcf2092a54dab2ce6aad0d5ad78585',
+)
+
+maven_jar(
+  name = 'lucene_queries',
+  artifact = 'org.apache.lucene:lucene-queries:' + LUCENE_VERS,
+  sha1 = '692f1ad887cf4e006a23f45019e6de30f3312d3f',
+)
+
 maven_jar(
   name = 'mime_util',
   artifact = 'eu.medsea.mimeutil:mime-util:2.1.3',
   sha1 = '0c9cfae15c74f62491d4f28def0dff1dabe52a47',
 )
 
-PROLOG_VERS = '1.4.1'
+PROLOG_VERS = '1.4.2'
 
 maven_jar(
   name = 'prolog_runtime',
   repository = 'http://gerrit-maven.storage.googleapis.com/',
   artifact = 'com.googlecode.prolog-cafe:prolog-runtime:' + PROLOG_VERS,
-  sha1 = 'c5d9f92e49c485969dcd424dfc0c08125b5f8246',
+  sha1 = '4421b4806b6e3a318680f6ab1d57569e857169c6',
 )
 
 maven_jar(
   name = 'prolog_compiler',
   repository = 'http://gerrit-maven.storage.googleapis.com/',
   artifact = 'com.googlecode.prolog-cafe:prolog-compiler:' + PROLOG_VERS,
-  sha1 = 'ac24044c6ec166fdcb352b78b80d187ead3eff41',
+  sha1 = '7e5a7ca5efe7db7f69e015cf492f8f04665244d8',
 )
 
 maven_jar(
   name = 'prolog_io',
   repository = 'http://gerrit-maven.storage.googleapis.com/',
   artifact = 'com.googlecode.prolog-cafe:prolog-io:' + PROLOG_VERS,
-  sha1 = 'b072426a4b1b8af5e914026d298ee0358a8bb5aa',
+  sha1 = 'd177f6211d1013e0f31a507127f5c87a7f6941f3',
 )
 
 maven_jar(
   name = 'cafeteria',
   repository = 'http://gerrit-maven.storage.googleapis.com/',
   artifact = 'com.googlecode.prolog-cafe:prolog-cafeteria:' + PROLOG_VERS,
-  sha1 = '8cbc3b0c19e7167c42d3f11667b21cb21ddec641',
+  sha1 = '11f396cb2588b65e6a78070488aaa58d12bf000e',
 )
 
 maven_jar(
@@ -798,3 +859,98 @@
   artifact = "org.jruby:jruby-complete:9.1.5.0",
   sha1 = "00d0003e99da3c4d830b12c099691ce910c84e39",
 )
+
+maven_jar(
+  name = 'elasticsearch',
+  artifact = 'org.elasticsearch:elasticsearch:2.4.0',
+  sha1 = 'aeb9704a76fa8654c348f38fcbb993a952a7ab07',
+)
+
+# Java REST client for Elasticsearch.
+JEST_VERSION = '2.0.3'
+
+maven_jar(
+  name = 'jest_common',
+  artifact = 'io.searchbox:jest-common:' + JEST_VERSION,
+  sha1 = 'f304c66894aaf2f6c17a886bc826f09c7a161cf9',
+)
+
+maven_jar(
+  name = 'jest',
+  artifact = 'io.searchbox:jest:' + JEST_VERSION,
+  sha1 = 'b8f9ed1423489b361804e47f640515ea9f1fa08d',
+)
+
+maven_jar(
+  name = 'compress_lzf',
+  artifact = 'com.ning:compress-lzf:1.0.2',
+  sha1 = '62896e6fca184c79cc01a14d143f3ae2b4f4b4ae',
+)
+
+maven_jar(
+  name = 'hppc',
+  artifact = 'com.carrotsearch:hppc:0.7.1',
+  sha1 = '8b5057f74ea378c0150a1860874a3ebdcb713767',
+)
+
+maven_jar(
+  name = 'jsr166e',
+  artifact = 'com.twitter:jsr166e:1.1.0',
+  sha1 = '233098147123ee5ddcd39ffc57ff648be4b7e5b2',
+)
+
+maven_jar(
+  name = 'netty',
+  artifact = 'io.netty:netty:3.10.0.Final',
+  sha1 = 'ad61cd1bba067e6634ddd3e160edf0727391ac30',
+)
+
+maven_jar(
+  name = 't_digest',
+  artifact = 'com.tdunning:t-digest:3.0',
+  sha1 = '84ccf145ac2215e6bfa63baa3101c0af41017cfc',
+)
+
+maven_jar(
+  name = 'jna',
+  artifact = 'net.java.dev.jna:jna:4.1.0',
+  sha1 = '1c12d070e602efd8021891cdd7fd18bc129372d4',
+)
+
+JACKSON_VERSION = '2.6.6'
+
+maven_jar(
+  name = 'jackson_core',
+  artifact = 'com.fasterxml.jackson.core:jackson-core:' + JACKSON_VERSION,
+  sha1 = '02eb801df67aacaf5b1deb4ac626e1964508e47b',
+)
+
+maven_jar(
+  name = 'jackson_dataformat_smile',
+  artifact = 'com.fasterxml.jackson.dataformat:jackson-dataformat-smile:' + JACKSON_VERSION,
+  sha1 = 'ccbfc948748ed2754a58c1af9e0a02b5cc1aed69',
+)
+
+maven_jar(
+  name = 'jackson_dataformat_cbor',
+  artifact = 'com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:' + JACKSON_VERSION,
+  sha1 = '34c7b7ff495fc6b049612bdc9db0900a68e112f8',
+)
+
+maven_jar(
+  name = 'httpasyncclient',
+  artifact = 'org.apache.httpcomponents:httpasyncclient:4.1.2',
+  sha1 = '95aa3e6fb520191a0970a73cf09f62948ee614be',
+)
+
+maven_jar(
+  name = 'httpcore_nio',
+  artifact = 'org.apache.httpcomponents:httpcore-nio:' + HTTPCOMP_VERS,
+  sha1 = 'a8c5e3c3bfea5ce23fb647c335897e415eb442e3',
+)
+
+maven_jar(
+  name = 'httpcore_niossl',
+  artifact = 'org.apache.httpcomponents:httpcore-niossl:4.0-alpha6',
+  sha1 = '9c662e7247ca8ceb1de5de629f685c9ef3e4ab58',
+)
diff --git a/gerrit-elasticsearch/BUILD b/gerrit-elasticsearch/BUILD
new file mode 100644
index 0000000..8ea9f9a
--- /dev/null
+++ b/gerrit-elasticsearch/BUILD
@@ -0,0 +1,53 @@
+java_library(
+  name = 'elasticsearch',
+  srcs = glob(['src/main/java/**/*.java']),
+  deps = [
+    '//gerrit-antlr:query_exception',
+    '//gerrit-extension-api:api',
+    '//gerrit-lucene:lucene', # only for LuceneAccountIndex
+    '//gerrit-reviewdb:client',
+    '//gerrit-reviewdb:server',
+    '//gerrit-server:server',
+    '//gerrit-index:index',
+    '//lib:gson',
+    '//lib:guava',
+    '//lib:gwtorm',
+    '//lib:protobuf',
+    '//lib/commons:codec',
+    '//lib/commons:lang',
+    '//lib/elasticsearch:elasticsearch',
+    '//lib/elasticsearch:jest',
+    '//lib/elasticsearch:jest-common',
+    '//lib/guice:guice',
+    '//lib/guice:guice-assistedinject',
+    '//lib/jgit/org.eclipse.jgit:jgit',
+    '//lib/joda:joda-time',
+    '//lib/log:api',
+    '//lib/lucene:lucene-analyzers-common',
+    '//lib/lucene:lucene-core',
+  ],
+  visibility = ['//visibility:public'],
+)
+
+load('//tools/bzl:junit.bzl', 'junit_tests')
+
+junit_tests(
+  name = 'elasticsearch_tests',
+  tags = ['elastic'],
+  srcs = glob(['src/test/java/**/*.java']),
+  deps = [
+    ':elasticsearch',
+    '//gerrit-extension-api:api',
+    '//gerrit-server:server',
+    '//gerrit-server:testutil',
+    '//gerrit-server:query_tests_code',
+    '//lib:gson',
+    '//lib:guava',
+    '//lib:junit',
+    '//lib:truth',
+    '//lib/elasticsearch:elasticsearch',
+    '//lib/guice:guice',
+    '//lib/jgit/org.eclipse.jgit:jgit',
+    '//lib/jgit/org.eclipse.jgit.junit:junit',
+  ],
+)
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/AccountConstants.properties b/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/AccountConstants.properties
index 41fe1a1..2479c87 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/AccountConstants.properties
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/AccountConstants.properties
@@ -15,9 +15,9 @@
 messageShowInReviewCategoryAbbrev = Show Abbreviated Name
 
 emailFieldLabel = Email Notifications:
-messageEnabled = Enabled
-messageCCMeOnMyComments = CC Me On Comments I Write
-messageDisabled = Disabled
+messageCCMeOnMyComments = Every Comment
+messageEnabled = Only Comments Left By Others
+messageDisabled = None
 
 defaultBaseForMerges = Default Base For Merges:
 autoMerge = Auto Merge
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/MyPreferencesScreen.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/MyPreferencesScreen.java
index 6bdeac6..3bfc7da 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/MyPreferencesScreen.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/MyPreferencesScreen.java
@@ -95,13 +95,13 @@
         GeneralPreferencesInfo.ReviewCategoryStrategy.ABBREV.name());
 
     emailStrategy = new ListBox();
-    emailStrategy.addItem(Util.C.messageEnabled(),
-        GeneralPreferencesInfo.EmailStrategy.ENABLED.name());
     emailStrategy
         .addItem(
             Util.C.messageCCMeOnMyComments(),
             GeneralPreferencesInfo.EmailStrategy.CC_ON_OWN_COMMENTS
                 .name());
+    emailStrategy.addItem(Util.C.messageEnabled(),
+        GeneralPreferencesInfo.EmailStrategy.ENABLED.name());
     emailStrategy
         .addItem(
             Util.C.messageDisabled(),
diff --git a/gerrit-index/BUILD b/gerrit-index/BUILD
new file mode 100644
index 0000000..119d5c4
--- /dev/null
+++ b/gerrit-index/BUILD
@@ -0,0 +1,13 @@
+java_library(
+  name = 'index',
+  srcs = glob(['src/main/java/**/*.java']),
+  deps = [
+    '//gerrit-extension-api:api',
+    '//gerrit-server:server',
+    '//gerrit-patch-jgit:server',
+    '//lib/guice:guice',
+    '//lib/jgit/org.eclipse.jgit:jgit',
+    '//lib:guava',
+  ],
+  visibility = ['//visibility:public'],
+)
diff --git a/gerrit-lucene/BUILD b/gerrit-lucene/BUILD
index 2f1cba7..de010eb 100644
--- a/gerrit-lucene/BUILD
+++ b/gerrit-lucene/BUILD
@@ -25,6 +25,7 @@
     '//gerrit-common:annotations',
     '//gerrit-common:server',
     '//gerrit-extension-api:api',
+    '//gerrit-index:index',
     '//gerrit-reviewdb:server',
     '//gerrit-server:server',
     '//lib:guava',
diff --git a/gerrit-pgm/BUILD b/gerrit-pgm/BUILD
index 5bdc8fb..8e3cbcf 100644
--- a/gerrit-pgm/BUILD
+++ b/gerrit-pgm/BUILD
@@ -45,6 +45,7 @@
     ':init-api',
     ':util',
     '//gerrit-common:annotations',
+    '//gerrit-index:index',
     '//gerrit-launcher:launcher', # We want this dep to be provided_deps
     '//gerrit-lucene:lucene',
     '//lib:args4j',
@@ -110,6 +111,7 @@
   ':init-api',
   ':util',
   '//gerrit-cache-h2:cache-h2',
+  '//gerrit-elasticsearch:elasticsearch',
   '//gerrit-gpg:gpg',
   '//gerrit-lucene:lucene',
   '//gerrit-oauth:oauth',
diff --git a/gerrit-server/BUILD b/gerrit-server/BUILD
index 6c7ab3e..3874fc9 100644
--- a/gerrit-server/BUILD
+++ b/gerrit-server/BUILD
@@ -169,6 +169,20 @@
   ['src/test/java/com/google/gerrit/server/query/**/*.java'],
 )
 
+java_library(
+  name = 'query_tests_code',
+  srcs = QUERY_TESTS,
+  deps = TESTUTIL_DEPS + [
+    ':testutil',
+    '//gerrit-antlr:query_exception',
+    '//gerrit-antlr:query_parser',
+    '//gerrit-common:annotations',
+    '//gerrit-server/src/main/prolog:common',
+    '//lib/antlr:java_runtime',
+  ],
+  visibility = ['//visibility:public'],
+)
+
 junit_tests(
   name = 'query_tests',
   srcs = QUERY_TESTS,
diff --git a/gerrit-war/BUILD b/gerrit-war/BUILD
index ae210d4..9262ad4 100644
--- a/gerrit-war/BUILD
+++ b/gerrit-war/BUILD
@@ -5,6 +5,7 @@
   srcs = glob(['src/main/java/**/*.java']),
   deps = [
     '//gerrit-cache-h2:cache-h2',
+    '//gerrit-elasticsearch:elasticsearch',
     '//gerrit-extension-api:api',
     '//gerrit-gpg:gpg',
     '//gerrit-httpd:httpd',
diff --git a/lib/codemirror/cm.bzl b/lib/codemirror/cm.bzl
index fbf1e91..7a0e899 100644
--- a/lib/codemirror/cm.bzl
+++ b/lib/codemirror/cm.bzl
@@ -216,7 +216,7 @@
 TOP = 'META-INF/resources/webjars/codemirror/%s' % VERSION
 TOP_MINIFIED = 'META-INF/resources/webjars/codemirror-minified/%s' % VERSION
 LICENSE = '//lib:LICENSE-codemirror-original'
-LICENSE_MINIFIED = '//lib:LICENSE-codemirror-original-minified'
+LICENSE_MINIFIED = '//lib:LICENSE-codemirror-minified'
 
 DIFF_MATCH_PATCH_VERSION = '20121119-1'
 DIFF_MATCH_PATCH_TOP = ('META-INF/resources/webjars/google-diff-match-patch/%s'
diff --git a/lib/commons/BUILD b/lib/commons/BUILD
index 7f6f6b2..d4d6145 100644
--- a/lib/commons/BUILD
+++ b/lib/commons/BUILD
@@ -1,3 +1,5 @@
+package(default_visibility = ['//visibility:public'])
+
 java_library(
   name = 'codec',
   exports = ['@commons_codec//jar'],
@@ -27,6 +29,12 @@
 )
 
 java_library(
+  name = 'lang3',
+  exports = [ '@commons_lang3//jar'],
+  data = ['//lib:LICENSE-Apache2.0'],
+)
+
+java_library(
   name = 'net',
   exports = ['@commons_net//jar'],
   visibility = ['//visibility:public'],
diff --git a/lib/elasticsearch/BUCK b/lib/elasticsearch/BUCK
index 86594ce..373f4d2 100644
--- a/lib/elasticsearch/BUCK
+++ b/lib/elasticsearch/BUCK
@@ -31,19 +31,19 @@
 )
 
 # Java REST client for Elasticsearch.
-VERSION = '0.1.7'
+VERSION = '2.0.3'
 
 maven_jar(
   name = 'jest-common',
   id = 'io.searchbox:jest-common:' + VERSION,
-  sha1 = 'ff6e2694405557a3a02b444cb7f7da28c4d99f07',
+  sha1 = 'f304c66894aaf2f6c17a886bc826f09c7a161cf9',
   license = 'Apache2.0',
 )
 
 maven_jar(
   name = 'jest',
   id = 'io.searchbox:jest:' + VERSION,
-  sha1 = '686619c7141edb50b562ad2a39d32ea4cf20b567',
+  sha1 = 'b8f9ed1423489b361804e47f640515ea9f1fa08d',
   license = 'Apache2.0',
   deps = [
     ':elasticsearch',
diff --git a/lib/elasticsearch/BUILD b/lib/elasticsearch/BUILD
new file mode 100644
index 0000000..6c3d423
--- /dev/null
+++ b/lib/elasticsearch/BUILD
@@ -0,0 +1,92 @@
+package(default_visibility=['//visibility:public'])
+
+java_library(
+  name = 'elasticsearch',
+  data = [ '//lib:LICENSE-Apache2.0' ],
+  exports = [ '@elasticsearch//jar' ],
+  runtime_deps = [
+    ':jna',
+    ':hppc',
+    ':jsr166e',
+    ':netty',
+    ':t-digest',
+    ':compress-lzf',
+    '//lib/joda:joda-time',
+    '//lib/lucene:lucene-codecs',
+    '//lib/lucene:lucene-highlighter',
+    '//lib/lucene:lucene-join',
+    '//lib/lucene:lucene-memory',
+    '//lib/lucene:lucene-sandbox',
+    '//lib/lucene:lucene-suggest',
+    '//lib/lucene:lucene-queries',
+    '//lib/lucene:lucene-spatial',
+    '//lib/jackson:jackson-core',
+    '//lib/jackson:jackson-dataformat-cbor',
+    '//lib/jackson:jackson-dataformat-smile',
+  ]
+)
+
+# Java REST client for Elasticsearch.
+VERSION = '0.1.7'
+
+java_library(
+  name = 'jest-common',
+  exports = [ '@jest_common//jar' ],
+  data = [ '//lib:LICENSE-Apache2.0' ],
+)
+
+java_library(
+  name = 'jest',
+  exports = [ '@jest//jar' ],
+  data = [ '//lib:LICENSE-Apache2.0' ],
+  runtime_deps = [
+    ':elasticsearch',
+    ':jest-common',
+    '//lib/commons:lang3',
+    '//lib/httpcomponents:httpasyncclient',
+    '//lib/httpcomponents:httpclient',
+    '//lib/httpcomponents:httpcore-nio',
+    '//lib/httpcomponents:httpcore-niossl',
+  ],
+)
+
+java_library(
+  name = 'compress-lzf',
+  exports = [ '@compress_lzf//jar' ],
+  data = [ '//lib:LICENSE-Apache2.0' ],
+  visibility = ['//lib/elasticsearch:__pkg__'],
+)
+
+java_library(
+  name = 'hppc',
+  exports = [ '@hppc//jar' ],
+  data = [ '//lib:LICENSE-Apache2.0' ],
+  visibility = ['//lib/elasticsearch:__pkg__'],
+)
+
+java_library(
+  name = 'jsr166e',
+  exports = [ '@jsr166e//jar' ],
+  data = [ '//lib:LICENSE-Apache2.0' ],
+  visibility = ['//lib/elasticsearch:__pkg__'],
+)
+
+java_library(
+  name = 'netty',
+  exports = [ '@netty//jar' ],
+  data = [ '//lib:LICENSE-Apache2.0' ],
+  visibility = ['//lib/elasticsearch:__pkg__'],
+)
+
+java_library(
+  name = 't-digest',
+  exports = [ '@t_digest//jar' ],
+  data = [ '//lib:LICENSE-Apache2.0' ],
+  visibility = ['//lib/elasticsearch:__pkg__'],
+)
+
+java_library(
+  name = 'jna',
+  exports = [ '@jna//jar' ],
+  data = [ '//lib:LICENSE-Apache2.0' ],
+)
diff --git a/lib/httpcomponents/BUILD b/lib/httpcomponents/BUILD
index 1dd3ccf..c11df29 100644
--- a/lib/httpcomponents/BUILD
+++ b/lib/httpcomponents/BUILD
@@ -1,3 +1,5 @@
+package(default_visibility = ['//visibility:public'])
+
 java_library(
   name = 'fluent-hc',
   exports = ['@fluent_hc//jar'],
@@ -31,3 +33,21 @@
   visibility = ['//visibility:public'],
   data = ['//lib:LICENSE-Apache2.0'],
 )
+
+java_library(
+  name = 'httpasyncclient',
+  exports = [ '@httpasyncclient//jar' ],
+  data = ['//lib:LICENSE-Apache2.0'],
+)
+
+java_library(
+  name = 'httpcore-nio',
+  exports =  [ '@httpcore_nio//jar' ],
+  data = ['//lib:LICENSE-Apache2.0'],
+)
+
+java_library(
+  name = 'httpcore-niossl',
+  exports = ['@httpcore_niossl//jar'],
+  data = ['//lib:LICENSE-Apache2.0'],
+)
diff --git a/lib/jackson/BUILD b/lib/jackson/BUILD
new file mode 100644
index 0000000..87ea42e4
--- /dev/null
+++ b/lib/jackson/BUILD
@@ -0,0 +1,21 @@
+package(default_visibility = [ "//visibility:public"])
+
+VERSION = '2.6.6'
+
+java_library(
+  name = 'jackson-core',
+  exports = [ '@jackson_core//jar' ],
+  data = [ '//lib:LICENSE-Apache2.0' ],
+)
+
+java_library(
+  name = 'jackson-dataformat-smile',
+  exports = [ '@jackson_dataformat_smile//jar' ],
+  data = [ '//lib:LICENSE-Apache2.0' ],
+)
+
+java_library(
+  name = 'jackson-dataformat-cbor',
+  exports = [ '@jackson_dataformat_cbor//jar' ],
+  data = [ '//lib:LICENSE-Apache2.0' ],
+)
diff --git a/lib/lucene/BUILD b/lib/lucene/BUILD
index e228c45..4739981 100644
--- a/lib/lucene/BUILD
+++ b/lib/lucene/BUILD
@@ -1,3 +1,4 @@
+package(default_visibility = [ "//visibility:public"])
 load('//tools/bzl:maven.bzl', 'merge_maven_jars')
 
 # core and backward-codecs both provide
@@ -21,6 +22,20 @@
 )
 
 java_library(
+  name = 'lucene-codecs',
+  exports = ['@lucene_codecs//jar'],
+  visibility = ['//visibility:public'],
+  data = ['//lib:LICENSE-Apache2.0'],
+)
+
+java_library(
+  name = 'lucene-core',
+  exports = ['@lucene_core//jar'],
+  visibility = ['//visibility:public'],
+  data = ['//lib:LICENSE-Apache2.0'],
+)
+
+java_library(
   name = 'lucene-misc',
   exports = ['@lucene_misc//jar'],
   runtime_deps = [':lucene-core-and-backward-codecs'],
@@ -35,3 +50,45 @@
   visibility = ['//visibility:public'],
   data = ['//lib:LICENSE-Apache2.0'],
 )
+
+java_library(
+  name = 'lucene-highlighter',
+  exports = [ '@lucene_highlighter//jar' ],
+  data = ['//lib:LICENSE-Apache2.0'],
+)
+
+java_library(
+  name = 'lucene-join',
+  exports = [ '@lucene_join//jar' ],
+  data = ['//lib:LICENSE-Apache2.0'],
+)
+
+java_library(
+  name = 'lucene-memory',
+  exports = [ '@lucene_memory//jar' ],
+  data = ['//lib:LICENSE-Apache2.0'],
+)
+
+java_library(
+  name = 'lucene-sandbox',
+  exports = [ '@lucene_sandbox//jar' ],
+  data = ['//lib:LICENSE-Apache2.0'],
+)
+
+java_library(
+  name = 'lucene-spatial',
+  exports = [ '@lucene_spatial//jar' ],
+  data = ['//lib:LICENSE-Apache2.0'],
+)
+
+java_library(
+  name = 'lucene-suggest',
+  exports = [ '@lucene_suggest//jar' ],
+  data = ['//lib:LICENSE-Apache2.0'],
+)
+
+java_library(
+  name = 'lucene-queries',
+  exports = [ '@lucene_queries//jar' ],
+  data = ['//lib:LICENSE-Apache2.0'],
+)
diff --git a/lib/prolog/BUCK b/lib/prolog/BUCK
index 77fe5ac..854b0f7 100644
--- a/lib/prolog/BUCK
+++ b/lib/prolog/BUCK
@@ -1,12 +1,12 @@
 include_defs('//lib/maven.defs')
 
-VERSION = '1.4.1'
+VERSION = '1.4.2'
 REPO = GERRIT
 
 maven_jar(
   name = 'runtime',
   id = 'com.googlecode.prolog-cafe:prolog-runtime:' + VERSION,
-  sha1 = 'c5d9f92e49c485969dcd424dfc0c08125b5f8246',
+  sha1 = '4421b4806b6e3a318680f6ab1d57569e857169c6',
   license = 'prologcafe',
   repository = REPO,
 )
@@ -14,7 +14,7 @@
 maven_jar(
   name = 'compiler',
   id = 'com.googlecode.prolog-cafe:prolog-compiler:' + VERSION,
-  sha1 = 'ac24044c6ec166fdcb352b78b80d187ead3eff41',
+  sha1 = '7e5a7ca5efe7db7f69e015cf492f8f04665244d8',
   license = 'prologcafe',
   repository = REPO,
   deps = [
@@ -26,7 +26,7 @@
 maven_jar(
   name = 'io',
   id = 'com.googlecode.prolog-cafe:prolog-io:' + VERSION,
-  sha1 = 'b072426a4b1b8af5e914026d298ee0358a8bb5aa',
+  sha1 = 'd177f6211d1013e0f31a507127f5c87a7f6941f3',
   license = 'prologcafe',
   repository = REPO,
   deps = [':runtime'],
@@ -36,7 +36,7 @@
 maven_jar(
   name = 'cafeteria',
   id = 'com.googlecode.prolog-cafe:prolog-cafeteria:' + VERSION,
-  sha1 = '8cbc3b0c19e7167c42d3f11667b21cb21ddec641',
+  sha1 = '11f396cb2588b65e6a78070488aaa58d12bf000e',
   license = 'prologcafe',
   repository = REPO,
   deps = [
diff --git a/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view.html b/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view.html
index 4f1cb87..8194c21 100644
--- a/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view.html
+++ b/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view.html
@@ -165,10 +165,9 @@
               <select
                   is="gr-select"
                   bind-value="{{_localPrefs.email_strategy}}">
-                <option value="ENABLED">Enabled</option>
-                <option
-                    value="CC_ON_OWN_COMMENTS">CC Me On Comments I Write</option>
-                <option value="DISABLED">Disabled</option>
+                <option value="CC_ON_OWN_COMMENTS">Every Comment</option>
+                <option value="ENABLED">Only Comments Left By Others</option>
+                <option value="DISABLED">None</option>
               </select>
             </span>
           </section>
diff --git a/polygerrit-ui/app/elements/shared/gr-date-formatter/gr-date-formatter.js b/polygerrit-ui/app/elements/shared/gr-date-formatter/gr-date-formatter.js
index f380dd9..f6117e4 100644
--- a/polygerrit-ui/app/elements/shared/gr-date-formatter/gr-date-formatter.js
+++ b/polygerrit-ui/app/elements/shared/gr-date-formatter/gr-date-formatter.js
@@ -21,7 +21,7 @@
 
   var TimeFormats = {
     TIME_12: 'h:mm A', // 2:14 PM
-    TIME_24: 'H:mm', // 14:14
+    TIME_24: 'HH:mm', // 14:14
     MONTH_DAY: 'MMM DD', // Aug 29
     MONTH_DAY_YEAR: 'MMM DD, YYYY', // Aug 29, 1997
   };
diff --git a/polygerrit-ui/app/elements/shared/gr-date-formatter/gr-date-formatter_test.html b/polygerrit-ui/app/elements/shared/gr-date-formatter/gr-date-formatter_test.html
index d1886e7..8d65bc3 100644
--- a/polygerrit-ui/app/elements/shared/gr-date-formatter/gr-date-formatter_test.html
+++ b/polygerrit-ui/app/elements/shared/gr-date-formatter/gr-date-formatter_test.html
@@ -98,13 +98,13 @@
       test('More than 24 hours but less than six months', function(done) {
         testDates('2015-07-29 20:34:14.985000000',
                   '2015-06-15 03:25:14.985000000',
-                  'Jun 15', 'Jun 15, 2015, 3:25', done);
+                  'Jun 15', 'Jun 15, 2015, 03:25', done);
       });
 
       test('More than six months', function(done) {
         testDates('2015-09-15 20:34:00.000000000',
                   '2015-01-15 03:25:00.000000000',
-                  'Jan 15, 2015', 'Jan 15, 2015, 3:25', done);
+                  'Jan 15, 2015', 'Jan 15, 2015, 03:25', done);
       });
     });
 
@@ -174,7 +174,7 @@
       });
 
       test('Default preferences are respected', function() {
-        assert.equal(element._timeFormat, 'H:mm');
+        assert.equal(element._timeFormat, 'HH:mm');
         assert.isFalse(element._relative);
       });
     });