diff --git a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/WebModule.java b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/WebModule.java index 852caae1d3..0d14b796d7 100644 --- a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/WebModule.java +++ b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/WebModule.java @@ -25,6 +25,7 @@ import com.google.gerrit.httpd.auth.ldap.LdapAuthModule; import com.google.gerrit.httpd.gitweb.GitWebModule; import com.google.gerrit.httpd.rpc.UiRpcModule; import com.google.gerrit.lifecycle.LifecycleModule; +import com.google.gerrit.server.CmdLineParserModule; import com.google.gerrit.server.RemotePeer; import com.google.gerrit.server.account.AccountManager; import com.google.gerrit.server.account.ChangeUserName; @@ -38,7 +39,6 @@ import com.google.gerrit.server.contact.ContactStore; import com.google.gerrit.server.contact.ContactStoreProvider; import com.google.gerrit.server.util.GuiceRequestScopePropagator; import com.google.gerrit.server.util.RequestScopePropagator; -import com.google.gerrit.util.cli.CmdLineParser; import com.google.inject.AbstractModule; import com.google.inject.Inject; import com.google.inject.Injector; @@ -134,7 +134,7 @@ public class WebModule extends FactoryModule { bind(ChangeUserName.CurrentUser.class); factory(ChangeUserName.Factory.class); factory(ClearPassword.Factory.class); - factory(CmdLineParser.Factory.class); + install(new CmdLineParserModule()); factory(GeneratePassword.Factory.class); bind(SocketAddress.class).annotatedWith(RemotePeer.class).toProvider( diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/CmdLineParserModule.java b/gerrit-server/src/main/java/com/google/gerrit/server/CmdLineParserModule.java new file mode 100644 index 0000000000..e64533c0f0 --- /dev/null +++ b/gerrit-server/src/main/java/com/google/gerrit/server/CmdLineParserModule.java @@ -0,0 +1,62 @@ +// Copyright (C) 2012 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package com.google.gerrit.server; + +import com.google.gerrit.reviewdb.client.Account; +import com.google.gerrit.reviewdb.client.AccountGroup; +import com.google.gerrit.reviewdb.client.Change; +import com.google.gerrit.reviewdb.client.PatchSet; +import com.google.gerrit.server.config.FactoryModule; +import com.google.gerrit.server.project.ProjectControl; +import com.google.gerrit.server.args4j.AccountGroupIdHandler; +import com.google.gerrit.server.args4j.AccountGroupUUIDHandler; +import com.google.gerrit.server.args4j.AccountIdHandler; +import com.google.gerrit.server.args4j.ChangeIdHandler; +import com.google.gerrit.server.args4j.ObjectIdHandler; +import com.google.gerrit.server.args4j.PatchSetIdHandler; +import com.google.gerrit.server.args4j.ProjectControlHandler; +import com.google.gerrit.server.args4j.SocketAddressHandler; +import com.google.gerrit.util.cli.CmdLineParser; +import com.google.gerrit.util.cli.OptionHandlerUtil; + +import org.eclipse.jgit.lib.ObjectId; + +import org.kohsuke.args4j.spi.OptionHandler; + +import java.net.SocketAddress; + +public class CmdLineParserModule extends FactoryModule { + public CmdLineParserModule() { + } + + @Override + protected void configure() { + factory(CmdLineParser.Factory.class); + + registerOptionHandler(Account.Id.class, AccountIdHandler.class); + registerOptionHandler(AccountGroup.Id.class, AccountGroupIdHandler.class); + registerOptionHandler(AccountGroup.UUID.class, AccountGroupUUIDHandler.class); + registerOptionHandler(Change.Id.class, ChangeIdHandler.class); + registerOptionHandler(ObjectId.class, ObjectIdHandler.class); + registerOptionHandler(PatchSet.Id.class, PatchSetIdHandler.class); + registerOptionHandler(ProjectControl.class, ProjectControlHandler.class); + registerOptionHandler(SocketAddress.class, SocketAddressHandler.class); + } + + private void registerOptionHandler(Class type, + Class> impl) { + install(OptionHandlerUtil.moduleFor(type, impl)); + } +} diff --git a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/AccountGroupIdHandler.java b/gerrit-server/src/main/java/com/google/gerrit/server/args4j/AccountGroupIdHandler.java similarity index 97% rename from gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/AccountGroupIdHandler.java rename to gerrit-server/src/main/java/com/google/gerrit/server/args4j/AccountGroupIdHandler.java index 307a10a834..bf74a4afbd 100644 --- a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/AccountGroupIdHandler.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/args4j/AccountGroupIdHandler.java @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package com.google.gerrit.sshd.args4j; +package com.google.gerrit.server.args4j; import com.google.gerrit.reviewdb.client.AccountGroup; import com.google.gerrit.server.account.GroupCache; diff --git a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/AccountGroupUUIDHandler.java b/gerrit-server/src/main/java/com/google/gerrit/server/args4j/AccountGroupUUIDHandler.java similarity index 98% rename from gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/AccountGroupUUIDHandler.java rename to gerrit-server/src/main/java/com/google/gerrit/server/args4j/AccountGroupUUIDHandler.java index 8e7c3ff2a3..406ca58b6d 100644 --- a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/AccountGroupUUIDHandler.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/args4j/AccountGroupUUIDHandler.java @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package com.google.gerrit.sshd.args4j; +package com.google.gerrit.server.args4j; import com.google.gerrit.common.data.GroupReference; import com.google.gerrit.reviewdb.client.AccountGroup; diff --git a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/AccountIdHandler.java b/gerrit-server/src/main/java/com/google/gerrit/server/args4j/AccountIdHandler.java similarity index 98% rename from gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/AccountIdHandler.java rename to gerrit-server/src/main/java/com/google/gerrit/server/args4j/AccountIdHandler.java index d54ae34cd7..8e71b88782 100644 --- a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/AccountIdHandler.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/args4j/AccountIdHandler.java @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package com.google.gerrit.sshd.args4j; +package com.google.gerrit.server.args4j; import com.google.gerrit.reviewdb.client.Account; import com.google.gerrit.reviewdb.client.AuthType; diff --git a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/ChangeIdHandler.java b/gerrit-server/src/main/java/com/google/gerrit/server/args4j/ChangeIdHandler.java similarity index 98% rename from gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/ChangeIdHandler.java rename to gerrit-server/src/main/java/com/google/gerrit/server/args4j/ChangeIdHandler.java index 0194b91dbb..0840d23d16 100644 --- a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/ChangeIdHandler.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/args4j/ChangeIdHandler.java @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package com.google.gerrit.sshd.args4j; +package com.google.gerrit.server.args4j; import com.google.gerrit.reviewdb.client.Branch; import com.google.gerrit.reviewdb.client.Change; diff --git a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/ObjectIdHandler.java b/gerrit-server/src/main/java/com/google/gerrit/server/args4j/ObjectIdHandler.java similarity index 97% rename from gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/ObjectIdHandler.java rename to gerrit-server/src/main/java/com/google/gerrit/server/args4j/ObjectIdHandler.java index adb5ad6616..b7f2fb9232 100644 --- a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/ObjectIdHandler.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/args4j/ObjectIdHandler.java @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package com.google.gerrit.sshd.args4j; +package com.google.gerrit.server.args4j; import com.google.inject.Inject; import com.google.inject.assistedinject.Assisted; diff --git a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/PatchSetIdHandler.java b/gerrit-server/src/main/java/com/google/gerrit/server/args4j/PatchSetIdHandler.java similarity index 97% rename from gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/PatchSetIdHandler.java rename to gerrit-server/src/main/java/com/google/gerrit/server/args4j/PatchSetIdHandler.java index 2d6a4dfdc7..a48568f9fc 100644 --- a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/PatchSetIdHandler.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/args4j/PatchSetIdHandler.java @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package com.google.gerrit.sshd.args4j; +package com.google.gerrit.server.args4j; import com.google.gerrit.reviewdb.client.PatchSet; import com.google.inject.Inject; diff --git a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/ProjectControlHandler.java b/gerrit-server/src/main/java/com/google/gerrit/server/args4j/ProjectControlHandler.java similarity index 98% rename from gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/ProjectControlHandler.java rename to gerrit-server/src/main/java/com/google/gerrit/server/args4j/ProjectControlHandler.java index e0f7c4c52c..c1c9c50cc0 100644 --- a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/ProjectControlHandler.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/args4j/ProjectControlHandler.java @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package com.google.gerrit.sshd.args4j; +package com.google.gerrit.server.args4j; import com.google.gerrit.reviewdb.client.Project; import com.google.gerrit.server.project.NoSuchProjectException; diff --git a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/SocketAddressHandler.java b/gerrit-server/src/main/java/com/google/gerrit/server/args4j/SocketAddressHandler.java similarity index 97% rename from gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/SocketAddressHandler.java rename to gerrit-server/src/main/java/com/google/gerrit/server/args4j/SocketAddressHandler.java index 454a084635..0c20b2d61b 100644 --- a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/SocketAddressHandler.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/args4j/SocketAddressHandler.java @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package com.google.gerrit.sshd.args4j; +package com.google.gerrit.server.args4j; import com.google.gerrit.server.util.SocketUtil; import com.google.inject.Inject; diff --git a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/SubcommandHandler.java b/gerrit-server/src/main/java/com/google/gerrit/server/args4j/SubcommandHandler.java similarity index 97% rename from gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/SubcommandHandler.java rename to gerrit-server/src/main/java/com/google/gerrit/server/args4j/SubcommandHandler.java index 3df73a8f95..619ec1f6b7 100644 --- a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/args4j/SubcommandHandler.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/args4j/SubcommandHandler.java @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package com.google.gerrit.sshd.args4j; +package com.google.gerrit.server.args4j; import com.google.inject.Inject; import com.google.inject.assistedinject.Assisted; diff --git a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/DispatchCommand.java b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/DispatchCommand.java index 37f141124f..301d68dd02 100644 --- a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/DispatchCommand.java +++ b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/DispatchCommand.java @@ -19,7 +19,7 @@ import com.google.common.util.concurrent.Atomics; import com.google.gerrit.extensions.annotations.RequiresCapability; import com.google.gerrit.server.CurrentUser; import com.google.gerrit.server.account.CapabilityControl; -import com.google.gerrit.sshd.args4j.SubcommandHandler; +import com.google.gerrit.server.args4j.SubcommandHandler; import com.google.inject.Inject; import com.google.inject.Provider; import com.google.inject.assistedinject.Assisted; 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 33e4baee37..f8007835c3 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 @@ -23,6 +23,7 @@ import com.google.gerrit.reviewdb.client.Account; import com.google.gerrit.reviewdb.client.AccountGroup; import com.google.gerrit.reviewdb.client.Change; import com.google.gerrit.reviewdb.client.PatchSet; +import com.google.gerrit.server.CmdLineParserModule; import com.google.gerrit.server.PeerDaemonUser; import com.google.gerrit.server.RemotePeer; import com.google.gerrit.server.account.AccountManager; @@ -38,18 +39,8 @@ import com.google.gerrit.server.plugins.StartPluginListener; import com.google.gerrit.server.project.ProjectControl; import com.google.gerrit.server.ssh.SshInfo; import com.google.gerrit.server.util.RequestScopePropagator; -import com.google.gerrit.sshd.args4j.AccountGroupIdHandler; -import com.google.gerrit.sshd.args4j.AccountGroupUUIDHandler; -import com.google.gerrit.sshd.args4j.AccountIdHandler; -import com.google.gerrit.sshd.args4j.ChangeIdHandler; -import com.google.gerrit.sshd.args4j.ObjectIdHandler; -import com.google.gerrit.sshd.args4j.PatchSetIdHandler; -import com.google.gerrit.sshd.args4j.ProjectControlHandler; -import com.google.gerrit.sshd.args4j.SocketAddressHandler; import com.google.gerrit.sshd.commands.DefaultCommandModule; import com.google.gerrit.sshd.commands.QueryShell; -import com.google.gerrit.util.cli.CmdLineParser; -import com.google.gerrit.util.cli.OptionHandlerUtil; import com.google.inject.Inject; import com.google.inject.internal.UniqueAnnotations; import com.google.inject.servlet.RequestScoped; @@ -59,7 +50,6 @@ import org.apache.sshd.server.CommandFactory; import org.apache.sshd.server.PublickeyAuthenticator; import org.eclipse.jgit.lib.Config; import org.eclipse.jgit.lib.ObjectId; -import org.kohsuke.args4j.spi.OptionHandler; import java.net.SocketAddress; import java.util.Map; @@ -83,7 +73,7 @@ public class SshModule extends FactoryModule { bind(SshScope.class).in(SINGLETON); configureRequestScope(); - configureCmdLineParser(); + install(new CmdLineParserModule()); configureAliases(); install(SshKeyCacheImpl.module()); @@ -155,22 +145,4 @@ public class SshModule extends FactoryModule { install(new GerritRequestModule()); } - - private void configureCmdLineParser() { - factory(CmdLineParser.Factory.class); - - registerOptionHandler(Account.Id.class, AccountIdHandler.class); - registerOptionHandler(AccountGroup.Id.class, AccountGroupIdHandler.class); - registerOptionHandler(AccountGroup.UUID.class, AccountGroupUUIDHandler.class); - registerOptionHandler(Change.Id.class, ChangeIdHandler.class); - registerOptionHandler(ObjectId.class, ObjectIdHandler.class); - registerOptionHandler(PatchSet.Id.class, PatchSetIdHandler.class); - registerOptionHandler(ProjectControl.class, ProjectControlHandler.class); - registerOptionHandler(SocketAddress.class, SocketAddressHandler.class); - } - - private void registerOptionHandler(Class type, - Class> impl) { - install(OptionHandlerUtil.moduleFor(type, impl)); - } }