diff options
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.java | 36 |
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; |