Merge "Encode project name in download commands" into stable-2.16
diff --git a/Documentation/dev-plugins.txt b/Documentation/dev-plugins.txt
index fd29bf7..53b03b1 100644
--- a/Documentation/dev-plugins.txt
+++ b/Documentation/dev-plugins.txt
@@ -2355,6 +2355,16 @@
`com.google.gerrit.server.git.ChangeReportFormatter` interface, a plugin
may change the formatting of the report.
+[[url-formatting]]
+== URL Formatting
+
+URLs to various parts of Gerrit are usually formed by adding suffixes to
+the canonical web URL.
+
+By implementing the
+`com.google.gerrit.server.config.UrlFormatter` interface, a plugin may
+change the format of the URL.
+
[[links-to-external-tools]]
== Links To External Tools
diff --git a/java/com/google/gerrit/httpd/init/WebAppInitializer.java b/java/com/google/gerrit/httpd/init/WebAppInitializer.java
index 624b307..db218d8 100644
--- a/java/com/google/gerrit/httpd/init/WebAppInitializer.java
+++ b/java/com/google/gerrit/httpd/init/WebAppInitializer.java
@@ -443,7 +443,10 @@
modules.add(sysInjector.getInstance(GetUserFilter.Module.class));
// StaticModule contains a "/*" wildcard, place it last.
- modules.add(sysInjector.getInstance(StaticModule.class));
+ GerritOptions opts = sysInjector.getInstance(GerritOptions.class);
+ if (opts.enableMasterFeatures()) {
+ modules.add(sysInjector.getInstance(StaticModule.class));
+ }
return sysInjector.createChildInjector(modules);
}
diff --git a/java/com/google/gerrit/httpd/raw/StaticModule.java b/java/com/google/gerrit/httpd/raw/StaticModule.java
index 062d776..fc6762b 100644
--- a/java/com/google/gerrit/httpd/raw/StaticModule.java
+++ b/java/com/google/gerrit/httpd/raw/StaticModule.java
@@ -142,10 +142,8 @@
});
if (!options.headless()) {
install(new CoreStaticModule());
+ install(new PolyGerritModule());
}
-
- install(new PolyGerritModule());
-
if (options.enableGwtUi()) {
install(new GwtUiModule());
}
diff --git a/java/com/google/gerrit/pgm/Daemon.java b/java/com/google/gerrit/pgm/Daemon.java
index a777a1c..fa7662d 100644
--- a/java/com/google/gerrit/pgm/Daemon.java
+++ b/java/com/google/gerrit/pgm/Daemon.java
@@ -612,7 +612,10 @@
modules.add(sysInjector.getInstance(GetUserFilter.Module.class));
// StaticModule contains a "/*" wildcard, place it last.
- modules.add(sysInjector.getInstance(StaticModule.class));
+ GerritOptions opts = sysInjector.getInstance(GerritOptions.class);
+ if (opts.enableMasterFeatures()) {
+ modules.add(sysInjector.getInstance(StaticModule.class));
+ }
return sysInjector.createChildInjector(modules);
}
diff --git a/java/com/google/gerrit/server/config/DefaultUrlFormatter.java b/java/com/google/gerrit/server/config/DefaultUrlFormatter.java
index 70fb465..060ee3f 100644
--- a/java/com/google/gerrit/server/config/DefaultUrlFormatter.java
+++ b/java/com/google/gerrit/server/config/DefaultUrlFormatter.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.config;
+import com.google.gerrit.extensions.registration.DynamicItem;
import com.google.inject.AbstractModule;
import com.google.inject.Inject;
import com.google.inject.Provider;
@@ -27,7 +28,8 @@
public static class Module extends AbstractModule {
@Override
protected void configure() {
- bind(UrlFormatter.class).to(DefaultUrlFormatter.class);
+ DynamicItem.itemOf(binder(), UrlFormatter.class);
+ DynamicItem.bind(binder(), UrlFormatter.class).to(DefaultUrlFormatter.class);
}
}
diff --git a/java/com/google/gerrit/server/plugincontext/PluginSetEntryContext.java b/java/com/google/gerrit/server/plugincontext/PluginSetEntryContext.java
index afffbef..2268c07 100644
--- a/java/com/google/gerrit/server/plugincontext/PluginSetEntryContext.java
+++ b/java/com/google/gerrit/server/plugincontext/PluginSetEntryContext.java
@@ -103,8 +103,9 @@
*
* <p>Should only be used in exceptional cases to get direct access to the extension
* implementation. If possible the extension should be invoked through {@link
- * #run(ExtensionImplConsumer)}, {@link #run(ExtensionImplConsumer, Class)}, {@link
- * #call(ExtensionImplFunction)} and {@link #call(CheckedExtensionImplFunction, Class)}.
+ * #run(PluginContext.ExtensionImplConsumer)}, {@link #run(PluginContext.ExtensionImplConsumer,
+ * java.lang.Class)}, {@link #call(PluginContext.ExtensionImplFunction)} and {@link
+ * #call(PluginContext.CheckedExtensionImplFunction, java.lang.Class)}.
*
* @return the implementation of this extension
*/