Add support for user-specific URL aliases

User-specific URL aliases overwrite global URL aliases.

Plugins may use user-specific URL aliases to replace certain screens
for certain users. The cookbook plugin was adapted to demonstrate
this.

Change-Id: I9b4d89e9b0fcedbeceb7298b91506167d464a070
Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
This commit is contained in:
Edwin Kempin
2015-07-22 15:36:56 +02:00
parent 107b0ad53f
commit b1e6a3a69c
8 changed files with 112 additions and 11 deletions

View File

@@ -14,6 +14,9 @@
package com.google.gerrit.client.info;
import com.google.gerrit.client.rpc.NativeMap;
import com.google.gerrit.client.rpc.NativeString;
import com.google.gerrit.client.rpc.Natives;
import com.google.gerrit.reviewdb.client.AccountGeneralPreferences;
import com.google.gerrit.reviewdb.client.AccountGeneralPreferences.DateFormat;
import com.google.gerrit.reviewdb.client.AccountGeneralPreferences.DiffView;
@@ -24,7 +27,9 @@ import com.google.gerrit.reviewdb.client.AccountGeneralPreferences.TimeFormat;
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.core.client.JsArray;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class AccountPreferencesInfo extends JavaScriptObject {
public static AccountPreferencesInfo create() {
@@ -197,6 +202,26 @@ public class AccountPreferencesInfo extends JavaScriptObject {
final native void initMy() /*-{ this.my = []; }-*/;
final native void addMy(TopMenuItem m) /*-{ this.my.push(m); }-*/;
public final Map<String, String> urlAliases() {
Map<String, String> urlAliases = new HashMap<>();
for (String k : Natives.keys(_urlAliases())) {
urlAliases.put(k, urlAliasToken(k));
}
return urlAliases;
}
private final native String urlAliasToken(String m) /*-{ return this.url_aliases[m]; }-*/;
private final native NativeMap<NativeString> _urlAliases() /*-{ return this.url_aliases; }-*/;
public final void setUrlAliases(Map<String, String> urlAliases) {
initUrlAliases();
for (Map.Entry<String, String> e : urlAliases.entrySet()) {
putUrlAlias(e.getKey(), e.getValue());
}
}
private final native void putUrlAlias(String m, String t) /*-{ this.url_aliases[m] = t; }-*/;
private final native void initUrlAliases() /*-{ this.url_aliases = {}; }-*/;
protected AccountPreferencesInfo() {
}
}