Merge "Update polymer to 1.11.0" into stable-2.15
diff --git a/WORKSPACE b/WORKSPACE
index f9dd757..ad1bc8a 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -100,18 +100,18 @@
     sha1 = "5d9e2e895e3111622720157d0aa540066d5fce3a",
 )
 
-GWT_VERS = "2.8.1"
+GWT_VERS = "2.8.2"
 
 maven_jar(
     name = "user",
     artifact = "com.google.gwt:gwt-user:" + GWT_VERS,
-    sha1 = "9a13fbee70848f1f1cddd3ae33ad180af3392d9e",
+    sha1 = "a2b9be2c996a658c4e009ba652a9c6a81c88a797",
 )
 
 maven_jar(
     name = "dev",
     artifact = "com.google.gwt:gwt-dev:" + GWT_VERS,
-    sha1 = "c7e88c07e9cda90cc623b4451d0d9713ae03aa53",
+    sha1 = "7a87e060bbf129386b7ae772459fb9f87297c332",
 )
 
 maven_jar(
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/account/GroupCacheImpl.java b/gerrit-server/src/main/java/com/google/gerrit/server/account/GroupCacheImpl.java
index 7887929..f1112de 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/account/GroupCacheImpl.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/account/GroupCacheImpl.java
@@ -34,6 +34,7 @@
 import java.io.IOException;
 import java.util.Optional;
 import java.util.concurrent.ExecutionException;
+import java.util.function.BooleanSupplier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -150,7 +151,7 @@
   static class ByIdLoader extends CacheLoader<AccountGroup.Id, Optional<InternalGroup>> {
     private final SchemaFactory<ReviewDb> schema;
     private final Groups groups;
-    private final boolean hasGroupIndex;
+    private final BooleanSupplier hasGroupIndex;
     private final Provider<InternalGroupQuery> groupQueryProvider;
 
     @Inject
@@ -161,13 +162,13 @@
         Provider<InternalGroupQuery> groupQueryProvider) {
       this.schema = schema;
       this.groups = groups;
-      this.hasGroupIndex = groupIndexCollection.getSearchIndex() != null;
+      hasGroupIndex = () -> groupIndexCollection.getSearchIndex() != null;
       this.groupQueryProvider = groupQueryProvider;
     }
 
     @Override
     public Optional<InternalGroup> load(AccountGroup.Id key) throws Exception {
-      if (hasGroupIndex) {
+      if (hasGroupIndex.getAsBoolean()) {
         return groupQueryProvider.get().byId(key);
       }
 
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/auth/ldap/LdapRealm.java b/gerrit-server/src/main/java/com/google/gerrit/server/auth/ldap/LdapRealm.java
index ec803e5..bd8f765 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/auth/ldap/LdapRealm.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/auth/ldap/LdapRealm.java
@@ -326,14 +326,20 @@
   @Override
   public boolean isActive(String username)
       throws LoginException, NamingException, AccountException {
+    final DirContext ctx = helper.open();
     try {
-      DirContext ctx = helper.open();
       Helper.LdapSchema schema = helper.getSchema(ctx);
       helper.findAccount(schema, ctx, username, false);
+      return true;
     } catch (NoSuchUserException e) {
       return false;
+    } finally {
+      try {
+        ctx.close();
+      } catch (NamingException e) {
+        log.warn("Cannot close LDAP query handle", e);
+      }
     }
-    return true;
   }
 
   static class UserLoader extends CacheLoader<String, Optional<Account.Id>> {
diff --git a/lib/BUILD b/lib/BUILD
index c2148bf..91334cb 100644
--- a/lib/BUILD
+++ b/lib/BUILD
@@ -176,6 +176,7 @@
 java_library(
     name = "jsr305",
     data = ["//lib:LICENSE-Apache2.0"],
+    visibility = ["//visibility:public"],
     exports = ["@jsr305//jar"],
 )
 
diff --git a/tools/bzl/gwt.bzl b/tools/bzl/gwt.bzl
index 0cc2988..9cec4f4 100644
--- a/tools/bzl/gwt.bzl
+++ b/tools/bzl/gwt.bzl
@@ -62,6 +62,7 @@
 ]
 
 GWT_TRANSITIVE_DEPS = [
+    "//lib:jsr305",
     "//lib/gwt:ant",
     "//lib/gwt:colt",
     "//lib/gwt:javax-validation",
diff --git a/tools/bzl/js.bzl b/tools/bzl/js.bzl
index d110f3e..77ac71b 100644
--- a/tools/bzl/js.bzl
+++ b/tools/bzl/js.bzl
@@ -21,7 +21,7 @@
   """rule to download a NPM archive."""
   name = ctx.name
   version= NPM_VERSIONS[name]
-  sha1 = NPM_VERSIONS[name]
+  sha1 = NPM_SHA1S[name]
 
   dir = '%s-%s' % (name, version)
   filename = '%s.tgz' % dir
@@ -38,7 +38,6 @@
   python = ctx.which("python")
   script = ctx.path(ctx.attr._download_script)
 
-  sha1 = NPM_SHA1S[name]
   args = [python, script, "-o", dest, "-u", url, "-v", sha1]
   out = ctx.execute(args)
   if out.return_code: