Dynamic{Set,Map} should only include explicitly bound items.

Currently, the Dynamic{Set,Map}Provider includes any binding that
matches the type of the Set or Map, whether it was bound via the
Dynamic{Set,Map} or not. The Dynamic{Set,Map}Provider was updated
to include only bindings with an Annotation.

Change-Id: I124101c982bd52bc3bf27c7bcd70138fd203226a
diff --git a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/registration/DynamicMapProvider.java b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/registration/DynamicMapProvider.java
index 816cf01..c6e4701 100644
--- a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/registration/DynamicMapProvider.java
+++ b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/registration/DynamicMapProvider.java
@@ -38,7 +38,9 @@
     List<Binding<T>> bindings = injector.findBindingsByType(type);
     if (bindings != null) {
       for (Binding<T> b : bindings) {
-        m.put("gerrit", b.getKey(), b.getProvider());
+        if (b.getKey().getAnnotation() != null) {
+          m.put("gerrit", b.getKey(), b.getProvider());
+        }
       }
     }
     return m;
diff --git a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/registration/DynamicSetProvider.java b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/registration/DynamicSetProvider.java
index 64b45e8..6c21553 100644
--- a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/registration/DynamicSetProvider.java
+++ b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/registration/DynamicSetProvider.java
@@ -19,6 +19,7 @@
 import com.google.inject.Injector;
 import com.google.inject.Provider;
 import com.google.inject.TypeLiteral;
+import com.google.inject.internal.UniqueAnnotations;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -26,6 +27,8 @@
 import java.util.concurrent.atomic.AtomicReference;
 
 class DynamicSetProvider<T> implements Provider<DynamicSet<T>> {
+  private static final Class<?> UNIQUE_ANNOTATION =
+      UniqueAnnotations.create().getClass();
   private final TypeLiteral<T> type;
 
   @Inject
@@ -49,7 +52,9 @@
     }
     List<AtomicReference<Provider<T>>> r = newList(cnt);
     for (Binding<T> b : bindings) {
-      r.add(new AtomicReference<Provider<T>>(b.getProvider()));
+      if (b.getKey().getAnnotation() != null) {
+        r.add(new AtomicReference<Provider<T>>(b.getProvider()));
+      }
     }
     return r;
   }