summaryrefslogtreecommitdiffstats
path: root/gerrit-server/src/main/java/com/google/gerrit/server/plugins/AutoRegisterModules.java
diff options
context:
space:
mode:
Diffstat (limited to 'gerrit-server/src/main/java/com/google/gerrit/server/plugins/AutoRegisterModules.java')
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/plugins/AutoRegisterModules.java36
1 files changed, 22 insertions, 14 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/plugins/AutoRegisterModules.java b/gerrit-server/src/main/java/com/google/gerrit/server/plugins/AutoRegisterModules.java
index e8af06092c..6062ae93eb 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/plugins/AutoRegisterModules.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/plugins/AutoRegisterModules.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.plugins;
+import static com.google.gerrit.server.plugins.AutoRegisterUtil.calculateBindAnnotation;
import static com.google.gerrit.server.plugins.PluginGuiceEnvironment.is;
import com.google.common.collect.LinkedListMultimap;
@@ -26,7 +27,6 @@ import com.google.inject.AbstractModule;
import com.google.inject.Module;
import com.google.inject.Scopes;
import com.google.inject.TypeLiteral;
-import com.google.inject.internal.UniqueAnnotations;
import org.eclipse.jgit.util.IO;
import org.objectweb.asm.AnnotationVisitor;
@@ -116,16 +116,7 @@ class AutoRegisterModules {
@SuppressWarnings("unchecked")
Class<Object> impl = (Class<Object>) e.getValue();
- Annotation n = impl.getAnnotation(Export.class);
- if (n == null) {
- n = impl.getAnnotation(javax.inject.Named.class);
- }
- if (n == null) {
- n = impl.getAnnotation(com.google.inject.name.Named.class);
- }
- if (n == null) {
- n = UniqueAnnotations.create();
- }
+ Annotation n = calculateBindAnnotation(impl);
bind(type).annotatedWith(n).to(impl);
}
}
@@ -245,9 +236,16 @@ class AutoRegisterModules {
if (rawType.getAnnotation(ExtensionPoint.class) != null) {
TypeLiteral<?> tl = TypeLiteral.get(type);
- if (env.hasDynamicSet(tl)) {
+ if (env.hasDynamicItem(tl)) {
+ sysSingletons.add(clazz);
+ sysListen.put(tl, clazz);
+ httpGen.listen(tl, clazz);
+ sshGen.listen(tl, clazz);
+ } else if (env.hasDynamicSet(tl)) {
sysSingletons.add(clazz);
sysListen.put(tl, clazz);
+ httpGen.listen(tl, clazz);
+ sshGen.listen(tl, clazz);
} else if (env.hasDynamicMap(tl)) {
if (clazz.getAnnotation(Export.class) == null) {
throw new InvalidPluginException(String.format(
@@ -256,6 +254,8 @@ class AutoRegisterModules {
}
sysSingletons.add(clazz);
sysListen.put(tl, clazz);
+ httpGen.listen(tl, clazz);
+ sshGen.listen(tl, clazz);
} else {
throw new InvalidPluginException(String.format(
"Cannot register %s, server does not accept %s",
@@ -299,7 +299,7 @@ class AutoRegisterModules {
return data;
}
- private static class ClassData implements ClassVisitor {
+ private static class ClassData extends ClassVisitor {
private static final String EXPORT = Type.getType(Export.class).getDescriptor();
private static final String LISTEN = Type.getType(Listen.class).getDescriptor();
@@ -308,6 +308,10 @@ class AutoRegisterModules {
String exportedAsName;
boolean listen;
+ ClassData() {
+ super(Opcodes.ASM4);
+ }
+
boolean isConcrete() {
return (access & Opcodes.ACC_ABSTRACT) == 0
&& (access & Opcodes.ACC_INTERFACE) == 0;
@@ -370,8 +374,12 @@ class AutoRegisterModules {
}
}
- private static abstract class AbstractAnnotationVisitor implements
+ private static abstract class AbstractAnnotationVisitor extends
AnnotationVisitor {
+ AbstractAnnotationVisitor() {
+ super(Opcodes.ASM4);
+ }
+
@Override
public AnnotationVisitor visitAnnotation(String arg0, String arg1) {
return null;