summaryrefslogtreecommitdiffstats
path: root/src/main/java/com/gitblit/transport/ssh/git/GitDispatchCommand.java
diff options
context:
space:
mode:
authorJames Moger <james.moger@gitblit.com>2014-03-17 21:23:44 -0400
committerJames Moger <james.moger@gitblit.com>2014-04-10 18:58:09 -0400
commit9d44ade215922fd9e7bda7c604b31c31d217d750 (patch)
treef73dff5e26e2a8ce842a43c49439581c7a0f5ee1 /src/main/java/com/gitblit/transport/ssh/git/GitDispatchCommand.java
parent01b529edac600feb3c0750d27d0759b5f49fde72 (diff)
downloadgitblit-9d44ade215922fd9e7bda7c604b31c31d217d750.tar.gz
gitblit-9d44ade215922fd9e7bda7c604b31c31d217d750.zip
Create git and gitblit dispatchers
Diffstat (limited to 'src/main/java/com/gitblit/transport/ssh/git/GitDispatchCommand.java')
-rw-r--r--src/main/java/com/gitblit/transport/ssh/git/GitDispatchCommand.java61
1 files changed, 61 insertions, 0 deletions
diff --git a/src/main/java/com/gitblit/transport/ssh/git/GitDispatchCommand.java b/src/main/java/com/gitblit/transport/ssh/git/GitDispatchCommand.java
new file mode 100644
index 00000000..adeace52
--- /dev/null
+++ b/src/main/java/com/gitblit/transport/ssh/git/GitDispatchCommand.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2014 gitblit.com.
+ *
+ * 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.gitblit.transport.ssh.git;
+
+import com.gitblit.git.GitblitReceivePackFactory;
+import com.gitblit.git.GitblitUploadPackFactory;
+import com.gitblit.git.RepositoryResolver;
+import com.gitblit.manager.IGitblit;
+import com.gitblit.models.UserModel;
+import com.gitblit.transport.ssh.CommandMetaData;
+import com.gitblit.transport.ssh.SshCommandContext;
+import com.gitblit.transport.ssh.SshDaemonClient;
+import com.gitblit.transport.ssh.commands.BaseCommand;
+import com.gitblit.transport.ssh.commands.DispatchCommand;
+
+@CommandMetaData(name = "git", description="Dispatcher for git receive and upload commands", hidden = true)
+public class GitDispatchCommand extends DispatchCommand {
+
+ protected RepositoryResolver<SshDaemonClient> repositoryResolver;
+ protected GitblitUploadPackFactory<SshDaemonClient> uploadPackFactory;
+ protected GitblitReceivePackFactory<SshDaemonClient> receivePackFactory;
+
+ @Override
+ public void setContext(SshCommandContext context) {
+ super.setContext(context);
+
+ IGitblit gitblit = context.getGitblit();
+ repositoryResolver = new RepositoryResolver<SshDaemonClient>(gitblit);
+ uploadPackFactory = new GitblitUploadPackFactory<SshDaemonClient>(gitblit);
+ receivePackFactory = new GitblitReceivePackFactory<SshDaemonClient>(gitblit);
+ }
+
+ @Override
+ protected void registerCommands(UserModel user) {
+ registerCommand(user, Upload.class);
+ registerCommand(user, Receive.class);
+ }
+
+ @Override
+ protected void provideStateTo(final BaseCommand cmd) {
+ super.provideStateTo(cmd);
+
+ BaseGitCommand a = (BaseGitCommand) cmd;
+ a.setRepositoryResolver(repositoryResolver);
+ a.setUploadPackFactory(uploadPackFactory);
+ a.setReceivePackFactory(receivePackFactory);
+ }
+}