Retrieve download schemes via REST
Change-Id: I8fee0345ca28742f215b7bdcf7a2b1ec10bf84f6 Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
This commit is contained in:
parent
b1b475cb5c
commit
bf78e39abf
@ -16,7 +16,6 @@ package com.google.gerrit.common.data;
|
||||
|
||||
import com.google.gerrit.reviewdb.client.Account;
|
||||
import com.google.gerrit.reviewdb.client.Account.FieldName;
|
||||
import com.google.gerrit.reviewdb.client.AccountGeneralPreferences.DownloadScheme;
|
||||
import com.google.gerrit.reviewdb.client.AuthType;
|
||||
|
||||
import java.util.List;
|
||||
@ -35,7 +34,6 @@ public class GerritConfig implements Cloneable {
|
||||
|
||||
protected GitwebConfig gitweb;
|
||||
protected AuthType authType;
|
||||
protected Set<DownloadScheme> downloadSchemes;
|
||||
protected String gitDaemonUrl;
|
||||
protected String gitHttpUrl;
|
||||
protected String sshdAddress;
|
||||
@ -135,14 +133,6 @@ public class GerritConfig implements Cloneable {
|
||||
authType = t;
|
||||
}
|
||||
|
||||
public Set<DownloadScheme> getDownloadSchemes() {
|
||||
return downloadSchemes;
|
||||
}
|
||||
|
||||
public void setDownloadSchemes(final Set<DownloadScheme> s) {
|
||||
downloadSchemes = s;
|
||||
}
|
||||
|
||||
public GitwebConfig getGitwebLink() {
|
||||
return gitweb;
|
||||
}
|
||||
|
@ -0,0 +1,85 @@
|
||||
// Copyright (C) 2015 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.client.config;
|
||||
|
||||
import com.google.gerrit.client.rpc.NativeMap;
|
||||
import com.google.gerrit.client.rpc.NativeString;
|
||||
import com.google.gerrit.client.rpc.Natives;
|
||||
import com.google.gwt.core.client.JavaScriptObject;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public class DownloadInfo extends JavaScriptObject {
|
||||
public final Set<String> schemes() {
|
||||
return Natives.keys(_schemes());
|
||||
}
|
||||
public final native DownloadSchemeInfo scheme(String n) /*-{ return this.schemes[n]; }-*/;
|
||||
private final native NativeMap<DownloadSchemeInfo> _schemes() /*-{ return this.schemes; }-*/;
|
||||
|
||||
protected DownloadInfo() {
|
||||
}
|
||||
|
||||
public static class DownloadSchemeInfo extends JavaScriptObject {
|
||||
public final Set<String> commandNames() {
|
||||
return Natives.keys(_commands());
|
||||
}
|
||||
|
||||
public final Set<DownloadCommandInfo> commands(String project) {
|
||||
Set<DownloadCommandInfo> commands = new HashSet<>();
|
||||
for (String commandName : commandNames()) {
|
||||
commands.add(new DownloadCommandInfo(commandName, command(commandName,
|
||||
project)));
|
||||
}
|
||||
return commands;
|
||||
}
|
||||
|
||||
public final String command(String commandName, String project) {
|
||||
return command(commandName).replaceAll("\\$\\{project\\}", project);
|
||||
}
|
||||
|
||||
public final String getUrl(String project) {
|
||||
return url().replaceAll("\\$\\{project\\}", project);
|
||||
}
|
||||
|
||||
public final native String name() /*-{ return this.name; }-*/;
|
||||
public final native String url() /*-{ return this.url; }-*/;
|
||||
public final native boolean isAuthRequired() /*-{ return this.is_auth_required || false; }-*/;
|
||||
public final native boolean isAuthSupported() /*-{ return this.is_auth_supported || false; }-*/;
|
||||
public final native String command(String n) /*-{ return this.commands[n]; }-*/;
|
||||
private final native NativeMap<NativeString> _commands() /*-{ return this.commands; }-*/;
|
||||
|
||||
protected DownloadSchemeInfo() {
|
||||
}
|
||||
}
|
||||
|
||||
public static class DownloadCommandInfo {
|
||||
private final String name;
|
||||
private final String command;
|
||||
|
||||
DownloadCommandInfo(String name, String command) {
|
||||
this.name = name;
|
||||
this.command = command;
|
||||
}
|
||||
|
||||
public String name() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public String command() {
|
||||
return command;
|
||||
}
|
||||
}
|
||||
}
|
@ -19,6 +19,7 @@ import com.google.gwt.core.client.JavaScriptObject;
|
||||
public class ServerInfo extends JavaScriptObject {
|
||||
public final native AuthInfo auth() /*-{ return this.auth; }-*/;
|
||||
public final native ContactStoreInfo contactStore() /*-{ return this.contact_store; }-*/;
|
||||
public final native DownloadInfo download() /*-{ return this.download; }-*/;
|
||||
public final native GerritInfo gerrit() /*-{ return this.gerrit; }-*/;
|
||||
|
||||
public final boolean hasContactStore() {
|
||||
|
@ -135,31 +135,27 @@ public class DownloadUrlLink extends Anchor implements ClickHandler {
|
||||
public static List<DownloadUrlLink> createDownloadUrlLinks(String project,
|
||||
boolean allowAnonymous) {
|
||||
List<DownloadUrlLink> urls = new ArrayList<>();
|
||||
Set<DownloadScheme> allowedSchemes = Gerrit.getConfig().getDownloadSchemes();
|
||||
Set<String> allowedSchemes = Gerrit.info().download().schemes();
|
||||
|
||||
if (allowAnonymous
|
||||
&& Gerrit.getConfig().getGitDaemonUrl() != null
|
||||
&& (allowedSchemes.contains(DownloadScheme.ANON_GIT) ||
|
||||
allowedSchemes.contains(DownloadScheme.DEFAULT_DOWNLOADS))) {
|
||||
&& allowedSchemes.contains("git")) {
|
||||
urls.add(new DownloadUrlLink.AnonGitLink(project));
|
||||
}
|
||||
|
||||
if (allowAnonymous
|
||||
&& (allowedSchemes.contains(DownloadScheme.ANON_HTTP) ||
|
||||
allowedSchemes.contains(DownloadScheme.DEFAULT_DOWNLOADS))) {
|
||||
&& allowedSchemes.contains("anonymous http")) {
|
||||
urls.add(new DownloadUrlLink.AnonHttpLink(project));
|
||||
}
|
||||
|
||||
if (Gerrit.getConfig().getSshdAddress() != null
|
||||
&& hasUserName()
|
||||
&& (allowedSchemes.contains(DownloadScheme.SSH) ||
|
||||
allowedSchemes.contains(DownloadScheme.DEFAULT_DOWNLOADS))) {
|
||||
&& allowedSchemes.contains("ssh")) {
|
||||
urls.add(new DownloadUrlLink.SshLink(project));
|
||||
}
|
||||
|
||||
if ((hasUserName() || siteReliesOnHttp())
|
||||
&& (allowedSchemes.contains(DownloadScheme.HTTP)
|
||||
|| allowedSchemes.contains(DownloadScheme.DEFAULT_DOWNLOADS))) {
|
||||
&& allowedSchemes.contains("http")) {
|
||||
urls.add(new DownloadUrlLink.HttpLink(project, allowAnonymous));
|
||||
}
|
||||
return urls;
|
||||
|
@ -27,7 +27,6 @@ import com.google.gerrit.server.change.GetArchive;
|
||||
import com.google.gerrit.server.config.AnonymousCowardName;
|
||||
import com.google.gerrit.server.config.AuthConfig;
|
||||
import com.google.gerrit.server.config.ConfigUtil;
|
||||
import com.google.gerrit.server.config.DownloadConfig;
|
||||
import com.google.gerrit.server.config.GerritServerConfig;
|
||||
import com.google.gerrit.server.ssh.SshInfo;
|
||||
import com.google.inject.Inject;
|
||||
@ -45,7 +44,6 @@ class GerritConfigProvider implements Provider<GerritConfig> {
|
||||
private final Realm realm;
|
||||
private final Config cfg;
|
||||
private final AuthConfig authConfig;
|
||||
private final DownloadConfig downloadConfig;
|
||||
private final GetArchive.AllowedFormats archiveFormats;
|
||||
private final GitWebConfig gitWebConfig;
|
||||
private final SshInfo sshInfo;
|
||||
@ -60,13 +58,11 @@ class GerritConfigProvider implements Provider<GerritConfig> {
|
||||
GitWebConfig gwc,
|
||||
SshInfo si,
|
||||
ServletContext sc,
|
||||
DownloadConfig dc,
|
||||
GetArchive.AllowedFormats af,
|
||||
@AnonymousCowardName String acn) {
|
||||
realm = r;
|
||||
cfg = gsc;
|
||||
authConfig = ac;
|
||||
downloadConfig = dc;
|
||||
archiveFormats = af;
|
||||
gitWebConfig = gwc;
|
||||
sshInfo = si;
|
||||
@ -108,7 +104,6 @@ class GerritConfigProvider implements Provider<GerritConfig> {
|
||||
config.setSwitchAccountUrl(cfg.getString("auth", null, "switchAccountUrl"));
|
||||
config.setGitDaemonUrl(cfg.getString("gerrit", null, "canonicalgiturl"));
|
||||
config.setGitHttpUrl(cfg.getString("gerrit", null, "gitHttpUrl"));
|
||||
config.setDownloadSchemes(downloadConfig.getDownloadSchemes());
|
||||
config.setAuthType(authConfig.getAuthType());
|
||||
config.setDocumentationAvailable(servletContext
|
||||
.getResource("/Documentation/index.html") != null);
|
||||
|
Loading…
Reference in New Issue
Block a user