factory) {
- factory(Key.get(factory), factory);
- }
-
- /**
- * Register an assisted injection factory.
- *
- * This function provides an automatic way to define a factory that creates a
- * concrete type through assited injection. For example to configure the
- * following assisted injection case:
- *
- *
- * public class Foo {
- * public interface Factory {
- * Foo create(int a);
- * }
- * @Inject
- * Foo(Logger log, @Assisted int a) {...}
- * }
- *
- *
- * Just pass {@code Foo.Factory.class} to this method. The factory will be
- * generated to return its one return type as declared in the creation method.
- *
- * @param
- * @param key key to bind with in Guice bindings.
- * @param factory interface which specifies the bean factory method.
- */
- protected void factory(final Key key, final Class factory) {
- final Method[] methods = factory.getDeclaredMethods();
- switch (methods.length) {
- case 1: {
- final Class> result = methods[0].getReturnType();
- if (isAbstract(result)) {
- addError("Factory " + factory.getName() + " returns abstract result.");
- } else {
- bind(key).toProvider(FactoryProvider.newFactory(factory, result));
- }
- break;
- }
-
- case 0:
- addError("Factory " + factory.getName() + " has no create method.");
- break;
-
- default:
- addError("Factory " + factory.getName()
- + " has more than one create method.");
- break;
- }
- }
-
- private static boolean isAbstract(final Class> result) {
- return result.isInterface()
- || (result.getModifiers() & Modifier.ABSTRACT) == Modifier.ABSTRACT;
+ protected void factory(final Class> factory) {
+ install(new FactoryModuleBuilder().build(factory));
}
}
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/contact/HttpContactStoreConnection.java b/gerrit-server/src/main/java/com/google/gerrit/server/contact/HttpContactStoreConnection.java
index 781f401f26..6c007ae3a9 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/contact/HttpContactStoreConnection.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/contact/HttpContactStoreConnection.java
@@ -2,15 +2,13 @@
package com.google.gerrit.server.contact;
-import static com.google.inject.Scopes.SINGLETON;
-
import com.google.gerrit.server.contact.ContactStoreConnection;
import com.google.gerrit.server.contact.HttpContactStoreConnection;
import com.google.inject.AbstractModule;
import com.google.inject.Inject;
import com.google.inject.Module;
import com.google.inject.assistedinject.Assisted;
-import com.google.inject.assistedinject.FactoryProvider;
+import com.google.inject.assistedinject.FactoryModuleBuilder;
import org.eclipse.jgit.util.IO;
@@ -27,11 +25,9 @@ public class HttpContactStoreConnection implements ContactStoreConnection {
return new AbstractModule() {
@Override
protected void configure() {
- bind(ContactStoreConnection.Factory.class)
- .toProvider(FactoryProvider.newFactory(
- ContactStoreConnection.Factory.class,
- HttpContactStoreConnection.class))
- .in(SINGLETON);
+ install(new FactoryModuleBuilder()
+ .implement(ContactStoreConnection.class, HttpContactStoreConnection.class)
+ .build(ContactStoreConnection.Factory.class));
}
};
}
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/PushReplication.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/PushReplication.java
index 154c60949b..49d24368dd 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/git/PushReplication.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/PushReplication.java
@@ -20,6 +20,7 @@ import com.google.gerrit.reviewdb.ReviewDb;
import com.google.gerrit.server.CurrentUser;
import com.google.gerrit.server.ReplicationUser;
import com.google.gerrit.server.config.ConfigUtil;
+import com.google.gerrit.server.config.FactoryModule;
import com.google.gerrit.server.config.SitePaths;
import com.google.gerrit.server.project.NoSuchProjectException;
import com.google.gerrit.server.project.PerRequestProjectControlCache;
@@ -29,7 +30,6 @@ import com.google.inject.AbstractModule;
import com.google.inject.Inject;
import com.google.inject.Injector;
import com.google.inject.Singleton;
-import com.google.inject.assistedinject.FactoryProvider;
import com.google.inject.servlet.RequestScoped;
import com.jcraft.jsch.Session;
@@ -430,14 +430,12 @@ public class PushReplication implements ReplicationQueue {
}
}).getInstance(ProjectControl.Factory.class);
- opFactory = injector.createChildInjector(new AbstractModule() {
+ opFactory = injector.createChildInjector(new FactoryModule() {
@Override
protected void configure() {
- bind(PushReplication.ReplicationConfig.class).toInstance(
- ReplicationConfig.this);
+ bind(PushReplication.ReplicationConfig.class).toInstance(ReplicationConfig.this);
bind(RemoteConfig.class).toInstance(remote);
- bind(PushOp.Factory.class).toProvider(
- FactoryProvider.newFactory(PushOp.Factory.class, PushOp.class));
+ factory(PushOp.Factory.class);
}
}).getInstance(PushOp.Factory.class);
}
diff --git a/gerrit-server/src/test/java/com/google/gerrit/server/project/RefControlTest.java b/gerrit-server/src/test/java/com/google/gerrit/server/project/RefControlTest.java
index 29b27628c9..a77a95ca06 100644
--- a/gerrit-server/src/test/java/com/google/gerrit/server/project/RefControlTest.java
+++ b/gerrit-server/src/test/java/com/google/gerrit/server/project/RefControlTest.java
@@ -37,14 +37,13 @@ import com.google.gerrit.server.account.CapabilityControl;
import com.google.gerrit.server.account.GroupCache;
import com.google.gerrit.server.cache.ConcurrentHashMapCache;
import com.google.gerrit.server.config.AllProjectsName;
+import com.google.gerrit.server.config.FactoryModule;
import com.google.gerrit.server.config.GerritServerConfig;
import com.google.gerrit.server.git.GitRepositoryManager;
import com.google.gerrit.server.git.ProjectConfig;
import com.google.gwtorm.client.SchemaFactory;
-import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.Injector;
-import com.google.inject.assistedinject.FactoryProvider;
import junit.framework.TestCase;
@@ -294,18 +293,14 @@ public class RefControlTest extends TestCase {
}
};
- Injector injector = Guice.createInjector(new AbstractModule() {
+ Injector injector = Guice.createInjector(new FactoryModule() {
@Override
protected void configure() {
- bind(Config.class) //
- .annotatedWith(GerritServerConfig.class) //
+ bind(Config.class)
+ .annotatedWith(GerritServerConfig.class)
.toInstance(new Config());
- bind(CapabilityControl.Factory.class)
- .toProvider(FactoryProvider.newFactory(
- CapabilityControl.Factory.class,
- CapabilityControl.class));
-
+ factory(CapabilityControl.Factory.class);
bind(ProjectCache.class).toInstance(projectCache);
}
});
diff --git a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/SshModule.java b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/SshModule.java
index 816955dfde..d4bd31b895 100644
--- a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/SshModule.java
+++ b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/SshModule.java
@@ -42,11 +42,7 @@ import com.google.gerrit.sshd.commands.DefaultCommandModule;
import com.google.gerrit.sshd.commands.ProjectNode;
import com.google.gerrit.sshd.commands.QueryShell;
import com.google.gerrit.util.cli.CmdLineParser;
-import com.google.gerrit.util.cli.OptionHandlerFactory;
import com.google.gerrit.util.cli.OptionHandlerUtil;
-import com.google.inject.Key;
-import com.google.inject.TypeLiteral;
-import com.google.inject.assistedinject.FactoryProvider;
import com.google.inject.servlet.RequestScoped;
import org.apache.sshd.common.KeyPairProvider;
@@ -129,14 +125,6 @@ public class SshModule extends FactoryModule {
private void registerOptionHandler(Class type,
Class extends OptionHandler> impl) {
- final Key> key = OptionHandlerUtil.keyFor(type);
-
- final TypeLiteral> factoryType =
- new TypeLiteral>() {};
-
- final TypeLiteral extends OptionHandler> implType =
- TypeLiteral.get(impl);
-
- bind(key).toProvider(FactoryProvider.newFactory(factoryType, implType));
+ install(OptionHandlerUtil.moduleFor(type, impl));
}
}
diff --git a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/AccountGroupIdHandler.java b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/AccountGroupIdHandler.java
index f269541a60..0cb8011750 100644
--- a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/AccountGroupIdHandler.java
+++ b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/AccountGroupIdHandler.java
@@ -29,11 +29,10 @@ import org.kohsuke.args4j.spi.Setter;
public class AccountGroupIdHandler extends OptionHandler {
private final GroupCache groupCache;
- @SuppressWarnings({"unchecked", "rawtypes"})
@Inject
public AccountGroupIdHandler(final GroupCache groupCache,
@Assisted final CmdLineParser parser, @Assisted final OptionDef option,
- @Assisted final Setter setter) {
+ @Assisted final Setter setter) {
super(parser, option, setter);
this.groupCache = groupCache;
}
diff --git a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/AccountGroupUUIDHandler.java b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/AccountGroupUUIDHandler.java
index 90b49875c1..74e72e4128 100644
--- a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/AccountGroupUUIDHandler.java
+++ b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/AccountGroupUUIDHandler.java
@@ -29,11 +29,10 @@ import org.kohsuke.args4j.spi.Setter;
public class AccountGroupUUIDHandler extends OptionHandler {
private final GroupCache groupCache;
- @SuppressWarnings({"unchecked", "rawtypes"})
@Inject
public AccountGroupUUIDHandler(final GroupCache groupCache,
@Assisted final CmdLineParser parser, @Assisted final OptionDef option,
- @Assisted final Setter setter) {
+ @Assisted final Setter setter) {
super(parser, option, setter);
this.groupCache = groupCache;
}
diff --git a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/AccountIdHandler.java b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/AccountIdHandler.java
index 1f6454be9a..7f1fc87101 100644
--- a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/AccountIdHandler.java
+++ b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/AccountIdHandler.java
@@ -37,13 +37,12 @@ public class AccountIdHandler extends OptionHandler {
private final AccountManager accountManager;
private final AuthType authType;
- @SuppressWarnings({"unchecked", "rawtypes"})
@Inject
public AccountIdHandler(final AccountResolver accountResolver,
final AccountManager accountManager,
final AuthConfig authConfig,
@Assisted final CmdLineParser parser, @Assisted final OptionDef option,
- @Assisted final Setter setter) {
+ @Assisted final Setter setter) {
super(parser, option, setter);
this.accountResolver = accountResolver;
this.accountManager = accountManager;
diff --git a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/PatchSetIdHandler.java b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/PatchSetIdHandler.java
index 847184db32..aa5b5ffa9e 100644
--- a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/PatchSetIdHandler.java
+++ b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/PatchSetIdHandler.java
@@ -26,10 +26,10 @@ import org.kohsuke.args4j.spi.Parameters;
import org.kohsuke.args4j.spi.Setter;
public class PatchSetIdHandler extends OptionHandler {
- @SuppressWarnings({"unchecked", "rawtypes"})
+
@Inject
public PatchSetIdHandler(@Assisted final CmdLineParser parser,
- @Assisted final OptionDef option, @Assisted final Setter setter) {
+ @Assisted final OptionDef option, @Assisted final Setter setter) {
super(parser, option, setter);
}
diff --git a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/ProjectControlHandler.java b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/ProjectControlHandler.java
index 1e0c3a6aae..411a09c6d5 100644
--- a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/ProjectControlHandler.java
+++ b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/ProjectControlHandler.java
@@ -30,12 +30,11 @@ import org.kohsuke.args4j.spi.Setter;
public class ProjectControlHandler extends OptionHandler {
private final ProjectControl.Factory projectControlFactory;
- @SuppressWarnings({"unchecked", "rawtypes"})
@Inject
public ProjectControlHandler(
final ProjectControl.Factory projectControlFactory,
@Assisted final CmdLineParser parser, @Assisted final OptionDef option,
- @Assisted final Setter setter) {
+ @Assisted final Setter setter) {
super(parser, option, setter);
this.projectControlFactory = projectControlFactory;
}
diff --git a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/SocketAddressHandler.java b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/SocketAddressHandler.java
index 50e41ae522..454a084635 100644
--- a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/SocketAddressHandler.java
+++ b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/SocketAddressHandler.java
@@ -28,10 +28,10 @@ import org.kohsuke.args4j.spi.Setter;
import java.net.SocketAddress;
public class SocketAddressHandler extends OptionHandler {
- @SuppressWarnings({"unchecked", "rawtypes"})
+
@Inject
public SocketAddressHandler(@Assisted final CmdLineParser parser,
- @Assisted final OptionDef option, @Assisted final Setter setter) {
+ @Assisted final OptionDef option, @Assisted final Setter setter) {
super(parser, option, setter);
}
diff --git a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/SubcommandHandler.java b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/SubcommandHandler.java
index 434230f367..3df73a8f95 100644
--- a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/SubcommandHandler.java
+++ b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/SubcommandHandler.java
@@ -25,10 +25,10 @@ import org.kohsuke.args4j.spi.Parameters;
import org.kohsuke.args4j.spi.Setter;
public class SubcommandHandler extends OptionHandler {
- @SuppressWarnings({"unchecked", "rawtypes"})
+
@Inject
public SubcommandHandler(@Assisted final CmdLineParser parser,
- @Assisted final OptionDef option, @Assisted final Setter setter) {
+ @Assisted final OptionDef option, @Assisted final Setter setter) {
super(parser, option, setter);
}
diff --git a/gerrit-util-cli/pom.xml b/gerrit-util-cli/pom.xml
index 401a2ba13e..c995cd7639 100644
--- a/gerrit-util-cli/pom.xml
+++ b/gerrit-util-cli/pom.xml
@@ -39,12 +39,12 @@ limitations under the License.
- com.google.code.guice
+ com.google.inject
guice
- com.google.code.guice
+ com.google.inject.extensions
guice-assistedinject
diff --git a/gerrit-util-cli/src/main/java/com/google/gerrit/util/cli/OptionHandlerFactory.java b/gerrit-util-cli/src/main/java/com/google/gerrit/util/cli/OptionHandlerFactory.java
index 0009d057f5..8e997786d9 100644
--- a/gerrit-util-cli/src/main/java/com/google/gerrit/util/cli/OptionHandlerFactory.java
+++ b/gerrit-util-cli/src/main/java/com/google/gerrit/util/cli/OptionHandlerFactory.java
@@ -20,7 +20,6 @@ import org.kohsuke.args4j.spi.Setter;
/** Creates an args4j OptionHandler through a Guice Injector. */
public interface OptionHandlerFactory {
- @SuppressWarnings("rawtypes")
- OptionHandler create(org.kohsuke.args4j.CmdLineParser cmdLineParser,
- OptionDef optionDef, Setter setter);
+ OptionHandler create(org.kohsuke.args4j.CmdLineParser cmdLineParser,
+ OptionDef optionDef, Setter setter);
}
diff --git a/gerrit-util-cli/src/main/java/com/google/gerrit/util/cli/OptionHandlerUtil.java b/gerrit-util-cli/src/main/java/com/google/gerrit/util/cli/OptionHandlerUtil.java
index ab6739709b..3d67fff6ff 100644
--- a/gerrit-util-cli/src/main/java/com/google/gerrit/util/cli/OptionHandlerUtil.java
+++ b/gerrit-util-cli/src/main/java/com/google/gerrit/util/cli/OptionHandlerUtil.java
@@ -15,8 +15,13 @@
package com.google.gerrit.util.cli;
import com.google.inject.Key;
+import com.google.inject.Module;
import com.google.inject.TypeLiteral;
-import com.google.inject.internal.MoreTypes.ParameterizedTypeImpl;
+import com.google.inject.assistedinject.FactoryModuleBuilder;
+import com.google.inject.util.Types;
+
+import org.kohsuke.args4j.spi.OptionHandler;
+import org.kohsuke.args4j.spi.Setter;
import java.lang.reflect.Type;
@@ -25,10 +30,21 @@ public class OptionHandlerUtil {
/** Generate a key for an {@link OptionHandlerFactory} in Guice. */
@SuppressWarnings("unchecked")
public static Key> keyFor(final Class valueType) {
- final Type factoryType =
- new ParameterizedTypeImpl(null, OptionHandlerFactory.class, valueType);
+ final Type factoryType = Types.newParameterizedType(OptionHandlerFactory.class, valueType);
+ return (Key>) Key.get(factoryType);
+ }
- return (Key>) Key.get(TypeLiteral.get(factoryType));
+ @SuppressWarnings("unchecked")
+ private static Key> handlerOf(Class type) {
+ final Type handlerType = Types.newParameterizedTypeWithOwner(null, OptionHandler.class, type);
+ return (Key>) Key.get(handlerType);
+ }
+
+ @SuppressWarnings("unchecked")
+ public static Module moduleFor(final Class type, Class extends OptionHandler> impl) {
+ return new FactoryModuleBuilder()
+ .implement(handlerOf(type), impl)
+ .build(keyFor(type));
}
private OptionHandlerUtil() {
diff --git a/pom.xml b/pom.xml
index f3f7c648cb..7bded1684b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -52,7 +52,7 @@ limitations under the License.
1.2.5
2.3.0
1.6.1
- 2.0
+ 3.0
7.2.1.v20101111
false
@@ -485,6 +485,11 @@ limitations under the License.
0.9.6
pom
+
+
+ com.google.code.guice
+ guice
+
jug
@@ -557,19 +562,19 @@ limitations under the License.
- com.google.code.guice
+ com.google.inject
guice
${guiceVersion}
- com.google.code.guice
+ com.google.inject.extensions
guice-servlet
${guiceVersion}
- com.google.code.guice
+ com.google.inject.extensions
guice-assistedinject
${guiceVersion}