summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEdwin Kempin <edwin.kempin@sap.com>2013-10-16 12:49:11 +0200
committerEdwin Kempin <edwin.kempin@sap.com>2013-10-16 21:22:08 +0200
commit29324b1fa63dd077228af63579d561046edcc6bf (patch)
tree6cfa79b83632d5b42d0a653a185c9e019c12ece7
parent048cf106bf80950cda6eff3b841d645275509956 (diff)
Add extension points for adding download schemes and commands
Implementing the new extension points doesn't have any effect yet. This is also why they are not yet documented. The documentation will be added later once Gerrit makes use of them. Change-Id: I30f46a1a4188d31a0aa825ad64cd794253932053 Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
-rw-r--r--gerrit-extension-api/src/main/java/com/google/gerrit/extensions/config/DownloadCommand.java33
-rw-r--r--gerrit-extension-api/src/main/java/com/google/gerrit/extensions/config/DownloadScheme.java34
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/config/GerritGlobalModule.java4
3 files changed, 71 insertions, 0 deletions
diff --git a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/config/DownloadCommand.java b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/config/DownloadCommand.java
new file mode 100644
index 0000000000..83f3fc4bfe
--- /dev/null
+++ b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/config/DownloadCommand.java
@@ -0,0 +1,33 @@
+// Copyright (C) 2013 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.extensions.config;
+
+import com.google.gerrit.extensions.annotations.ExtensionPoint;
+
+@ExtensionPoint
+public abstract class DownloadCommand {
+ /**
+ * Returns the download command for the given download scheme, project and
+ * ref.
+ *
+ * @param scheme the download scheme for which the command should be returned
+ * @param project the name of the project for which the download command
+ * should be returned
+ * @param ref the change ref
+ * @return the download command
+ */
+ public abstract String getCommand(DownloadScheme scheme, String project,
+ String ref);
+}
diff --git a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/config/DownloadScheme.java b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/config/DownloadScheme.java
new file mode 100644
index 0000000000..1a9e754c04
--- /dev/null
+++ b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/config/DownloadScheme.java
@@ -0,0 +1,34 @@
+// Copyright (C) 2013 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.extensions.config;
+
+import com.google.gerrit.extensions.annotations.ExtensionPoint;
+
+@ExtensionPoint
+public abstract class DownloadScheme {
+ /**
+ * Returns the URL of this download scheme.
+ *
+ * @param project the name of the project for which the URL should be returned
+ * @return URL of the download scheme
+ */
+ public abstract String getUrl(String project);
+
+ /** @return whether this scheme requires authentication */
+ public abstract boolean isAuthRequired();
+
+ /** @return whether the download scheme is enabled */
+ public abstract boolean isEnabled();
+}
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/config/GerritGlobalModule.java b/gerrit-server/src/main/java/com/google/gerrit/server/config/GerritGlobalModule.java
index ca20868c80..6a90165223 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/config/GerritGlobalModule.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/config/GerritGlobalModule.java
@@ -20,6 +20,8 @@ import com.google.common.cache.Cache;
import com.google.gerrit.audit.AuditModule;
import com.google.gerrit.common.ChangeListener;
import com.google.gerrit.extensions.config.CapabilityDefinition;
+import com.google.gerrit.extensions.config.DownloadCommand;
+import com.google.gerrit.extensions.config.DownloadScheme;
import com.google.gerrit.extensions.events.GitReferenceUpdatedListener;
import com.google.gerrit.extensions.events.LifecycleListener;
import com.google.gerrit.extensions.events.NewProjectCreatedListener;
@@ -241,6 +243,8 @@ public class GerritGlobalModule extends FactoryModule {
DynamicItem.itemOf(binder(), AvatarProvider.class);
DynamicSet.setOf(binder(), LifecycleListener.class);
DynamicSet.setOf(binder(), TopMenu.class);
+ DynamicMap.mapOf(binder(), DownloadScheme.class);
+ DynamicMap.mapOf(binder(), DownloadCommand.class);
bind(AnonymousUser.class);