Gerrit Client: Use REST API to get server info
The Gerrit Client needs to know about some server configuration parameters in order to render the UI and enable/disable certain functionality. At the moment the information about the server configuration is embedded into the host page, but there is a new REST endpoint that exposes some of the configuration parameters, and it should be used instead. Retrieving the data via REST is cleaner as this is an API which can be also used by other clients. Also it reduces some code duplication if the configuration parameters are only exposed via REST and not once again via the host page. This change is only a start to get rid of the configuration data which is embedded in the host page. It only consumes those configuration parameters via REST which are already exposed in the REST API. In future changes the REST API should be extended to provide all information that is needed by the Gerrit Client, so that no such data must be embedded into the host page. This change doesn't consume the download commands which are already exposed via REST, since this requires quite some changes in the Gerrit Client, and it is better done in an own change. Change-Id: Id367ba82a29bfc8f84fa4bb3c2fc973355e5cc4a Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
This commit is contained in:
@@ -18,7 +18,6 @@ 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 com.google.gerrit.reviewdb.client.Project;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
@@ -35,15 +34,12 @@ public class GerritConfig implements Cloneable {
|
||||
protected boolean httpPasswordSettingsEnabled = true;
|
||||
|
||||
protected GitwebConfig gitweb;
|
||||
protected boolean useContributorAgreements;
|
||||
protected boolean useContactInfo;
|
||||
protected AuthType authType;
|
||||
protected Set<DownloadScheme> downloadSchemes;
|
||||
protected String gitDaemonUrl;
|
||||
protected String gitHttpUrl;
|
||||
protected String sshdAddress;
|
||||
protected String editFullNameUrl;
|
||||
protected Project.NameKey wildProject;
|
||||
protected Set<Account.FieldName> editableAccountFields;
|
||||
protected boolean documentationAvailable;
|
||||
protected String anonymousCowardName;
|
||||
@@ -135,10 +131,6 @@ public class GerritConfig implements Cloneable {
|
||||
httpPasswordUrl = url;
|
||||
}
|
||||
|
||||
public AuthType getAuthType() {
|
||||
return authType;
|
||||
}
|
||||
|
||||
public void setAuthType(final AuthType t) {
|
||||
authType = t;
|
||||
}
|
||||
@@ -159,22 +151,6 @@ public class GerritConfig implements Cloneable {
|
||||
gitweb = w;
|
||||
}
|
||||
|
||||
public boolean isUseContributorAgreements() {
|
||||
return useContributorAgreements;
|
||||
}
|
||||
|
||||
public void setUseContributorAgreements(final boolean r) {
|
||||
useContributorAgreements = r;
|
||||
}
|
||||
|
||||
public boolean isUseContactInfo() {
|
||||
return useContactInfo;
|
||||
}
|
||||
|
||||
public void setUseContactInfo(final boolean r) {
|
||||
useContactInfo = r;
|
||||
}
|
||||
|
||||
public String getGitDaemonUrl() {
|
||||
return gitDaemonUrl;
|
||||
}
|
||||
@@ -205,22 +181,6 @@ public class GerritConfig implements Cloneable {
|
||||
sshdAddress = addr;
|
||||
}
|
||||
|
||||
public Project.NameKey getWildProject() {
|
||||
return wildProject;
|
||||
}
|
||||
|
||||
public void setWildProject(final Project.NameKey wp) {
|
||||
wildProject = wp;
|
||||
}
|
||||
|
||||
public boolean canEdit(final Account.FieldName f) {
|
||||
return editableAccountFields.contains(f);
|
||||
}
|
||||
|
||||
public Set<Account.FieldName> getEditableAccountFields() {
|
||||
return editableAccountFields;
|
||||
}
|
||||
|
||||
public void setEditableAccountFields(final Set<Account.FieldName> af) {
|
||||
editableAccountFields = af;
|
||||
}
|
||||
@@ -250,9 +210,9 @@ public class GerritConfig implements Cloneable {
|
||||
}
|
||||
|
||||
public boolean siteHasUsernames() {
|
||||
if (getAuthType() == AuthType.CUSTOM_EXTENSION
|
||||
if (authType == AuthType.CUSTOM_EXTENSION
|
||||
&& getHttpPasswordUrl() != null
|
||||
&& !canEdit(FieldName.USER_NAME)) {
|
||||
&& !editableAccountFields.contains(FieldName.USER_NAME)) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
||||
@@ -695,7 +695,7 @@ public class Dispatcher {
|
||||
}
|
||||
|
||||
if (matchExact(SETTINGS_AGREEMENTS, token)
|
||||
&& Gerrit.getConfig().isUseContributorAgreements()) {
|
||||
&& Gerrit.info().auth().useContributorAgreements()) {
|
||||
return new MyAgreementsScreen();
|
||||
}
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@ import com.google.gerrit.client.api.PluginLoader;
|
||||
import com.google.gerrit.client.changes.ChangeConstants;
|
||||
import com.google.gerrit.client.changes.ChangeListScreen;
|
||||
import com.google.gerrit.client.config.ConfigServerApi;
|
||||
import com.google.gerrit.client.config.ServerInfo;
|
||||
import com.google.gerrit.client.extensions.TopMenu;
|
||||
import com.google.gerrit.client.extensions.TopMenuItem;
|
||||
import com.google.gerrit.client.extensions.TopMenuList;
|
||||
@@ -49,7 +50,6 @@ import com.google.gerrit.extensions.client.GerritTopMenu;
|
||||
import com.google.gerrit.reviewdb.client.Account;
|
||||
import com.google.gerrit.reviewdb.client.AccountDiffPreference;
|
||||
import com.google.gerrit.reviewdb.client.AccountGeneralPreferences;
|
||||
import com.google.gerrit.reviewdb.client.AuthType;
|
||||
import com.google.gerrit.reviewdb.client.Project;
|
||||
import com.google.gwt.aria.client.Roles;
|
||||
import com.google.gwt.core.client.EntryPoint;
|
||||
@@ -106,6 +106,7 @@ public class Gerrit implements EntryPoint {
|
||||
|
||||
private static String myHost;
|
||||
private static GerritConfig myConfig;
|
||||
private static ServerInfo myServerInfo;
|
||||
private static HostPageData.Theme myTheme;
|
||||
private static Account myAccount;
|
||||
private static String defaultScreenToken;
|
||||
@@ -288,6 +289,11 @@ public class Gerrit implements EntryPoint {
|
||||
return myConfig;
|
||||
}
|
||||
|
||||
/** Get the public configuration data used by this Gerrit instance. */
|
||||
public static ServerInfo info() {
|
||||
return myServerInfo;
|
||||
}
|
||||
|
||||
public static GitwebLink getGitwebLink() {
|
||||
GitwebConfig gw = getConfig().getGitwebLink();
|
||||
return gw != null && gw.type != null ? new GitwebLink(gw) : null;
|
||||
@@ -426,8 +432,16 @@ public class Gerrit implements EntryPoint {
|
||||
initHostname();
|
||||
Window.setTitle(M.windowTitle1(myHost));
|
||||
|
||||
final HostPageDataService hpd = GWT.create(HostPageDataService.class);
|
||||
hpd.load(new GerritCallback<HostPageData>() {
|
||||
RpcStatus.INSTANCE = new RpcStatus();
|
||||
CallbackGroup cbg = new CallbackGroup();
|
||||
ConfigServerApi.serverInfo(cbg.add(new GerritCallback<ServerInfo>() {
|
||||
@Override
|
||||
public void onSuccess(ServerInfo info) {
|
||||
myServerInfo = info;
|
||||
}
|
||||
}));
|
||||
HostPageDataService hpd = GWT.create(HostPageDataService.class);
|
||||
hpd.load(cbg.addFinal(new GerritCallback<HostPageData>() {
|
||||
@Override
|
||||
public void onSuccess(final HostPageData result) {
|
||||
Document.get().getElementById("gerrit_hostpagedata").removeFromParent();
|
||||
@@ -444,7 +458,7 @@ public class Gerrit implements EntryPoint {
|
||||
}
|
||||
onModuleLoad2(result);
|
||||
}
|
||||
});
|
||||
}));
|
||||
}
|
||||
|
||||
private static void initHostname() {
|
||||
@@ -538,7 +552,6 @@ public class Gerrit implements EntryPoint {
|
||||
};
|
||||
gBody.add(body);
|
||||
|
||||
RpcStatus.INSTANCE = new RpcStatus();
|
||||
JsonUtil.addRpcStartHandler(RpcStatus.INSTANCE);
|
||||
JsonUtil.addRpcCompleteHandler(RpcStatus.INSTANCE);
|
||||
JsonUtil.setDefaultXsrfManager(new XsrfManager() {
|
||||
@@ -705,9 +718,9 @@ public class Gerrit implements EntryPoint {
|
||||
}
|
||||
|
||||
if (signedIn) {
|
||||
whoAmI(cfg.getAuthType() != AuthType.CLIENT_SSL_CERT_LDAP);
|
||||
whoAmI(!info().auth().isClientSslCertLdap());
|
||||
} else {
|
||||
switch (cfg.getAuthType()) {
|
||||
switch (info().auth().authType()) {
|
||||
case CLIENT_SSL_CERT_LDAP:
|
||||
break;
|
||||
|
||||
|
||||
@@ -16,7 +16,6 @@ package com.google.gerrit.client;
|
||||
|
||||
import com.google.gerrit.client.account.AccountInfo;
|
||||
import com.google.gerrit.client.ui.InlineHyperlink;
|
||||
import com.google.gerrit.reviewdb.client.AuthType;
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.dom.client.AnchorElement;
|
||||
import com.google.gwt.dom.client.Element;
|
||||
@@ -53,8 +52,8 @@ public class UserPopupPanel extends PluginSafePopupPanel {
|
||||
if (showSettingsLink) {
|
||||
if (Gerrit.getConfig().getSwitchAccountUrl() != null) {
|
||||
switchAccount.setHref(Gerrit.getConfig().getSwitchAccountUrl());
|
||||
} else if (Gerrit.getConfig().getAuthType() == AuthType.DEVELOPMENT_BECOME_ANY_ACCOUNT
|
||||
|| Gerrit.getConfig().getAuthType() == AuthType.OPENID) {
|
||||
} else if (Gerrit.info().auth().isDev()
|
||||
|| Gerrit.info().auth().isOpenId()) {
|
||||
switchAccount.setHref(Gerrit.selfRedirect("/login/"));
|
||||
} else {
|
||||
switchAccount.removeFromParent();
|
||||
|
||||
@@ -65,7 +65,7 @@ class ContactPanelFull extends ContactPanelShort {
|
||||
hasContact.setStyleName(Gerrit.RESOURCES.css().accountContactOnFile());
|
||||
hasContact.setVisible(false);
|
||||
|
||||
if (Gerrit.getConfig().isUseContactInfo()) {
|
||||
if (Gerrit.info().hasContactStore()) {
|
||||
body.add(privhtml);
|
||||
body.add(hasContact);
|
||||
body.add(infoSecure);
|
||||
@@ -116,7 +116,7 @@ class ContactPanelFull extends ContactPanelShort {
|
||||
@Override
|
||||
ContactInformation toContactInformation() {
|
||||
final ContactInformation info;
|
||||
if (Gerrit.getConfig().isUseContactInfo()) {
|
||||
if (Gerrit.info().hasContactStore()) {
|
||||
info = new ContactInformation();
|
||||
info.setAddress(addressTxt.getText());
|
||||
info.setCountry(countryTxt.getText());
|
||||
|
||||
@@ -23,7 +23,6 @@ import com.google.gerrit.common.PageLinks;
|
||||
import com.google.gerrit.common.errors.EmailException;
|
||||
import com.google.gerrit.reviewdb.client.Account;
|
||||
import com.google.gerrit.reviewdb.client.Account.FieldName;
|
||||
import com.google.gerrit.reviewdb.client.AuthType;
|
||||
import com.google.gerrit.reviewdb.client.ContactInformation;
|
||||
import com.google.gwt.core.client.JsArray;
|
||||
import com.google.gwt.event.dom.client.ChangeEvent;
|
||||
@@ -101,7 +100,7 @@ class ContactPanelShort extends Composite {
|
||||
}
|
||||
|
||||
int row = 0;
|
||||
if (!Gerrit.getConfig().canEdit(FieldName.USER_NAME)
|
||||
if (!Gerrit.info().auth().canEdit(FieldName.USER_NAME)
|
||||
&& Gerrit.getConfig().siteHasUsernames()) {
|
||||
infoPlainText.resizeRows(infoPlainText.getRowCount() + 1);
|
||||
row(infoPlainText, row++, Util.C.userName(), new UsernameField());
|
||||
@@ -168,11 +167,11 @@ class ContactPanelShort extends Composite {
|
||||
}
|
||||
|
||||
private boolean canEditFullName() {
|
||||
return Gerrit.getConfig().canEdit(Account.FieldName.FULL_NAME);
|
||||
return Gerrit.info().auth().canEdit(Account.FieldName.FULL_NAME);
|
||||
}
|
||||
|
||||
private boolean canRegisterNewEmail() {
|
||||
return Gerrit.getConfig().canEdit(Account.FieldName.REGISTER_NEW_EMAIL);
|
||||
return Gerrit.info().auth().canEdit(Account.FieldName.REGISTER_NEW_EMAIL);
|
||||
}
|
||||
|
||||
void hideSaveButton() {
|
||||
@@ -275,7 +274,7 @@ class ContactPanelShort extends Composite {
|
||||
@Override
|
||||
public void onSuccess(EmailInfo result) {
|
||||
box.hide();
|
||||
if (Gerrit.getConfig().getAuthType() == AuthType.DEVELOPMENT_BECOME_ANY_ACCOUNT) {
|
||||
if (Gerrit.info().auth().isDev()) {
|
||||
currentEmail = addr;
|
||||
if (emailPick.getItemCount() == 0) {
|
||||
final Account me = Gerrit.getUserAccount();
|
||||
@@ -325,7 +324,7 @@ class ContactPanelShort extends Composite {
|
||||
buttons.add(register);
|
||||
buttons.add(cancel);
|
||||
|
||||
if (Gerrit.getConfig().getAuthType() != AuthType.DEVELOPMENT_BECOME_ANY_ACCOUNT) {
|
||||
if (!Gerrit.info().auth().isDev()) {
|
||||
body.add(new HTML(Util.C.descRegisterNewEmail()));
|
||||
}
|
||||
body.add(inEmail);
|
||||
|
||||
@@ -21,7 +21,6 @@ import com.google.gerrit.client.rpc.ScreenLoadCallback;
|
||||
import com.google.gerrit.client.ui.FancyFlexTable;
|
||||
import com.google.gerrit.common.auth.openid.OpenIdUrls;
|
||||
import com.google.gerrit.reviewdb.client.AccountExternalId;
|
||||
import com.google.gerrit.reviewdb.client.AuthType;
|
||||
import com.google.gwt.event.dom.client.ClickEvent;
|
||||
import com.google.gwt.event.dom.client.ClickHandler;
|
||||
import com.google.gwt.event.logical.shared.ValueChangeEvent;
|
||||
@@ -59,8 +58,8 @@ public class MyIdentitiesScreen extends SettingsScreen {
|
||||
});
|
||||
add(deleteIdentity);
|
||||
|
||||
if (Gerrit.getConfig().getAuthType() == AuthType.OPENID
|
||||
|| Gerrit.getConfig().getAuthType() == AuthType.OAUTH) {
|
||||
if (Gerrit.info().auth().isOpenId()
|
||||
|| Gerrit.info().auth().isOAuth()) {
|
||||
Button linkIdentity = new Button(Util.C.buttonLinkIdentity());
|
||||
linkIdentity.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
|
||||
@@ -70,7 +70,7 @@ public class RegisterScreen extends AccountScreen {
|
||||
formBody.add(contactGroup);
|
||||
|
||||
if (Gerrit.getUserAccount().getUserName() == null
|
||||
&& Gerrit.getConfig().canEdit(FieldName.USER_NAME)) {
|
||||
&& Gerrit.info().auth().canEdit(FieldName.USER_NAME)) {
|
||||
final FlowPanel fp = new FlowPanel();
|
||||
fp.setStyleName(Gerrit.RESOURCES.css().registerScreenSection());
|
||||
fp.add(new SmallHeading(Util.C.welcomeUsernameHeading()));
|
||||
@@ -116,7 +116,7 @@ public class RegisterScreen extends AccountScreen {
|
||||
|
||||
final FlowPanel choices = new FlowPanel();
|
||||
choices.setStyleName(Gerrit.RESOURCES.css().registerScreenNextLinks());
|
||||
if (Gerrit.getConfig().isUseContributorAgreements()) {
|
||||
if (Gerrit.info().auth().useContributorAgreements()) {
|
||||
final FlowPanel agreementGroup = new FlowPanel();
|
||||
agreementGroup.setStyleName(Gerrit.RESOURCES.css().registerScreenSection());
|
||||
agreementGroup.add(new SmallHeading(Util.C.welcomeAgreementHeading()));
|
||||
|
||||
@@ -34,7 +34,7 @@ public abstract class SettingsScreen extends MenuScreen {
|
||||
}
|
||||
link(Util.C.tabWebIdentities(), PageLinks.SETTINGS_WEBIDENT);
|
||||
link(Util.C.tabMyGroups(), PageLinks.SETTINGS_MYGROUPS);
|
||||
if (Gerrit.getConfig().isUseContributorAgreements()) {
|
||||
if (Gerrit.info().auth().useContributorAgreements()) {
|
||||
link(Util.C.tabAgreements(), PageLinks.SETTINGS_AGREEMENTS);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -86,7 +86,7 @@ class UsernameField extends Composite {
|
||||
}
|
||||
|
||||
private boolean canEditUserName() {
|
||||
return Gerrit.getConfig().canEdit(Account.FieldName.USER_NAME);
|
||||
return Gerrit.info().auth().canEdit(Account.FieldName.USER_NAME);
|
||||
}
|
||||
|
||||
private void confirmSetUserName() {
|
||||
|
||||
@@ -250,8 +250,7 @@ public class AccessSectionEditor extends Composite implements
|
||||
if (value.getPermission(permissionName) != null) {
|
||||
return;
|
||||
}
|
||||
if (Gerrit.getConfig().getWildProject()
|
||||
.equals(projectAccess.getProjectName())
|
||||
if (Gerrit.info().gerrit().isAllProjects(projectAccess.getProjectName())
|
||||
&& !Permission.canBeOnAllProjects(value.getName(), permissionName)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -264,7 +264,7 @@ public class ProjectInfoScreen extends ProjectScreen {
|
||||
grid.addHeader(new SmallHeading(Util.C.headingAgreements()));
|
||||
|
||||
contributorAgreements = newInheritedBooleanBox();
|
||||
if (Gerrit.getConfig().isUseContributorAgreements()) {
|
||||
if (Gerrit.info().auth().useContributorAgreements()) {
|
||||
saveEnabler.listenTo(contributorAgreements);
|
||||
grid.add(Util.C.useContributorAgreements(), contributorAgreements);
|
||||
}
|
||||
@@ -310,7 +310,7 @@ public class ProjectInfoScreen extends ProjectScreen {
|
||||
}
|
||||
}
|
||||
if (inheritedIndex >= 0) {
|
||||
if (getProjectKey().equals(Gerrit.getConfig().getWildProject())) {
|
||||
if (Gerrit.info().gerrit().isAllProjects(getProjectKey())) {
|
||||
if (box.getSelectedIndex() == inheritedIndex) {
|
||||
for (int i = 0; i < box.getItemCount(); i++) {
|
||||
if (box.getValue(i).equals(InheritableBoolean.FALSE.name())) {
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
// 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.Natives;
|
||||
import com.google.gerrit.reviewdb.client.Account;
|
||||
import com.google.gerrit.reviewdb.client.AuthType;
|
||||
import com.google.gwt.core.client.JavaScriptObject;
|
||||
import com.google.gwt.core.client.JsArray;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class AuthInfo extends JavaScriptObject {
|
||||
public final AuthType authType() {
|
||||
return AuthType.valueOf(authTypeRaw());
|
||||
}
|
||||
|
||||
public final boolean isOpenId() {
|
||||
return authType() == AuthType.OPENID;
|
||||
}
|
||||
|
||||
public final boolean isOAuth() {
|
||||
return authType() == AuthType.OAUTH;
|
||||
}
|
||||
|
||||
public final boolean isDev() {
|
||||
return authType() == AuthType.DEVELOPMENT_BECOME_ANY_ACCOUNT;
|
||||
}
|
||||
|
||||
public final boolean isClientSslCertLdap() {
|
||||
return authType() == AuthType.CLIENT_SSL_CERT_LDAP;
|
||||
}
|
||||
|
||||
public final boolean isCustomExtension() {
|
||||
return authType() == AuthType.CUSTOM_EXTENSION;
|
||||
}
|
||||
|
||||
public final boolean canEdit(Account.FieldName f) {
|
||||
return editableAccountFields().contains(f);
|
||||
}
|
||||
|
||||
public final List<Account.FieldName> editableAccountFields() {
|
||||
List<Account.FieldName> fields = new ArrayList<>();
|
||||
for (AccountFieldNameInfo f : Natives.asList(_editableAccountFields())) {
|
||||
fields.add(f.get());
|
||||
}
|
||||
return fields;
|
||||
}
|
||||
|
||||
public final native boolean useContributorAgreements()
|
||||
/*-{ return this.use_contributor_agreements || false; }-*/;
|
||||
private final native String authTypeRaw() /*-{ return this.auth_type; }-*/;
|
||||
private final native JsArray<AccountFieldNameInfo> _editableAccountFields()
|
||||
/*-{ return this.editable_account_fields; }-*/;
|
||||
|
||||
protected AuthInfo() {
|
||||
}
|
||||
|
||||
private static class AccountFieldNameInfo extends JavaScriptObject {
|
||||
final Account.FieldName get() {
|
||||
return Account.FieldName.valueOf(getRaw());
|
||||
}
|
||||
|
||||
private final native String getRaw() /*-{ return this; }-*/;
|
||||
|
||||
protected AccountFieldNameInfo() {
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -37,4 +37,8 @@ public class ConfigServerApi {
|
||||
public static void defaultPreferences(AsyncCallback<Preferences> cb) {
|
||||
new RestApi("/config/server/preferences").get(cb);
|
||||
}
|
||||
|
||||
public static void serverInfo(AsyncCallback<ServerInfo> cb) {
|
||||
new RestApi("/config/server/info").get(cb);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
// 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.reviewdb.client.Project;
|
||||
import com.google.gwt.core.client.JavaScriptObject;
|
||||
|
||||
public class GerritInfo extends JavaScriptObject {
|
||||
public final Project.NameKey allProjectsNameKey() {
|
||||
return new Project.NameKey(allProjects());
|
||||
}
|
||||
|
||||
public final boolean isAllProjects(Project.NameKey p) {
|
||||
return allProjectsNameKey().equals(p);
|
||||
}
|
||||
|
||||
public final Project.NameKey allUsersNameKey() {
|
||||
return new Project.NameKey(allUsers());
|
||||
}
|
||||
|
||||
public final boolean isAllUsers(Project.NameKey p) {
|
||||
return allUsersNameKey().equals(p);
|
||||
}
|
||||
|
||||
public final native String allProjects() /*-{ return this.all_projects; }-*/;
|
||||
public final native String allUsers() /*-{ return this.all_users; }-*/;
|
||||
|
||||
protected GerritInfo() {
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
// 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.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 GerritInfo gerrit() /*-{ return this.gerrit; }-*/;
|
||||
|
||||
public final boolean hasContactStore() {
|
||||
return contactStore() != null;
|
||||
}
|
||||
|
||||
protected ServerInfo() {
|
||||
}
|
||||
|
||||
public static class ContactStoreInfo extends JavaScriptObject {
|
||||
public final native String url() /*-{ return this.url; }-*/;
|
||||
|
||||
protected ContactStoreInfo() {
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -17,7 +17,6 @@ package com.google.gerrit.client.download;
|
||||
import com.google.gerrit.client.Gerrit;
|
||||
import com.google.gerrit.reviewdb.client.AccountGeneralPreferences;
|
||||
import com.google.gerrit.reviewdb.client.AccountGeneralPreferences.DownloadScheme;
|
||||
import com.google.gerrit.reviewdb.client.AuthType;
|
||||
import com.google.gwt.aria.client.Roles;
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.event.dom.client.ClickEvent;
|
||||
@@ -129,7 +128,7 @@ public class DownloadUrlLink extends Anchor implements ClickHandler {
|
||||
|
||||
public static boolean siteReliesOnHttp() {
|
||||
return Gerrit.getConfig().getGitHttpUrl() != null
|
||||
&& Gerrit.getConfig().getAuthType() == AuthType.CUSTOM_EXTENSION
|
||||
&& Gerrit.info().auth().isCustomExtension()
|
||||
&& !Gerrit.getConfig().siteHasUsernames();
|
||||
}
|
||||
|
||||
|
||||
@@ -24,13 +24,11 @@ import com.google.gerrit.common.data.GitwebConfig;
|
||||
import com.google.gerrit.server.account.Realm;
|
||||
import com.google.gerrit.server.change.ArchiveFormat;
|
||||
import com.google.gerrit.server.change.GetArchive;
|
||||
import com.google.gerrit.server.config.AllProjectsName;
|
||||
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.contact.ContactStore;
|
||||
import com.google.gerrit.server.ssh.SshInfo;
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.Provider;
|
||||
@@ -50,20 +48,21 @@ class GerritConfigProvider implements Provider<GerritConfig> {
|
||||
private final DownloadConfig downloadConfig;
|
||||
private final GetArchive.AllowedFormats archiveFormats;
|
||||
private final GitWebConfig gitWebConfig;
|
||||
private final AllProjectsName wildProject;
|
||||
private final SshInfo sshInfo;
|
||||
|
||||
private final ContactStore contactStore;
|
||||
private final ServletContext servletContext;
|
||||
private final String anonymousCowardName;
|
||||
|
||||
@Inject
|
||||
GerritConfigProvider(final Realm r, @GerritServerConfig final Config gsc,
|
||||
final AuthConfig ac, final GitWebConfig gwc, final AllProjectsName wp,
|
||||
final SshInfo si, final ContactStore cs,
|
||||
final ServletContext sc, final DownloadConfig dc,
|
||||
final GetArchive.AllowedFormats af,
|
||||
@AnonymousCowardName final String acn) {
|
||||
GerritConfigProvider(Realm r,
|
||||
@GerritServerConfig Config gsc,
|
||||
AuthConfig ac,
|
||||
GitWebConfig gwc,
|
||||
SshInfo si,
|
||||
ServletContext sc,
|
||||
DownloadConfig dc,
|
||||
GetArchive.AllowedFormats af,
|
||||
@AnonymousCowardName String acn) {
|
||||
realm = r;
|
||||
cfg = gsc;
|
||||
authConfig = ac;
|
||||
@@ -71,8 +70,6 @@ class GerritConfigProvider implements Provider<GerritConfig> {
|
||||
archiveFormats = af;
|
||||
gitWebConfig = gwc;
|
||||
sshInfo = si;
|
||||
wildProject = wp;
|
||||
contactStore = cs;
|
||||
servletContext = sc;
|
||||
anonymousCowardName = acn;
|
||||
}
|
||||
@@ -109,13 +106,10 @@ class GerritConfigProvider implements Provider<GerritConfig> {
|
||||
break;
|
||||
}
|
||||
config.setSwitchAccountUrl(cfg.getString("auth", null, "switchAccountUrl"));
|
||||
config.setUseContributorAgreements(authConfig.isUseContributorAgreements());
|
||||
config.setGitDaemonUrl(cfg.getString("gerrit", null, "canonicalgiturl"));
|
||||
config.setGitHttpUrl(cfg.getString("gerrit", null, "gitHttpUrl"));
|
||||
config.setUseContactInfo(contactStore != null && contactStore.isEnabled());
|
||||
config.setDownloadSchemes(downloadConfig.getDownloadSchemes());
|
||||
config.setAuthType(authConfig.getAuthType());
|
||||
config.setWildProject(wildProject);
|
||||
config.setDocumentationAvailable(servletContext
|
||||
.getResource("/Documentation/index.html") != null);
|
||||
config.setAnonymousCowardName(anonymousCowardName);
|
||||
|
||||
Reference in New Issue
Block a user