Merge branch 'stable-2.14' into stable-2.15
* stable-2.14:
Format all Java files with google-java-format 1.6
GerritAuthFilter#doFilter: Remove unused chain parameter
GerritWicketFilter: Remove unused SitePaths from constructor
GitBlitServletModule: Remove unused injected constructor arguments
Remove unnecessarily nested else-clauses
GerritToGitBlitUserModel: Add missing case on switch
GitBlitSettings: Open InputStream in try-with-resource
Add missing @Override annotations
Remove unused imports
Remove redundant specification of types
GerritAuthFilter: Remove declaration of unthrown exception
Bazel: Harmonize names of external repositories
Update external dependencies
Change-Id: Ib9533d9097acc888ff493c9a3bd5904aa1eb2c81
diff --git a/BUILD b/BUILD
index 5594a52..2593ebd 100644
--- a/BUILD
+++ b/BUILD
@@ -3,6 +3,7 @@
gerrit_plugin(
name = "gitblit",
srcs = glob(["src/main/java/**/*.java"]),
+ resources = glob(["src/main/resources/**/*"]),
manifest_entries = [
"Gerrit-PluginName: gitblit",
"Gerrit-Module: com.googlesource.gerrit.plugins.gitblit.GitBlitModule",
@@ -10,7 +11,6 @@
"Gerrit-InitStep: com.googlesource.gerrit.plugins.gitblit.GitBlitInitStep",
"Gerrit-ReloadMode: restart",
],
- resources = glob(["src/main/resources/**/*"]),
deps = [
"@commons-codec//jar:neverlink",
"@commons-io//jar",
@@ -38,8 +38,8 @@
"@twiki-core//jar",
"@unboundid//jar",
"@waffle-jna//jar",
- "@wicket-extensions//jar",
"@wicket//jar",
+ "@wicket-extensions//jar",
"@wikitext-core//jar",
],
)
diff --git a/README.md b/README.md
index a88175a..3289410 100644
--- a/README.md
+++ b/README.md
@@ -21,7 +21,6 @@
$ git clone https://github.com/gitblit/gitblit.git
$ cd gitblit && git checkout master
- $ git fetch origin refs/pull/1168/head && git merge --no-edit FETCH_HEAD
$ ant -DresourceFolderPrefix=static installMaven
### Gitblit plugin
diff --git a/external_plugin_deps.bzl b/external_plugin_deps.bzl
index 7a98cc7..9097a8d 100644
--- a/external_plugin_deps.bzl
+++ b/external_plugin_deps.bzl
@@ -136,16 +136,16 @@
)
# Lucene version must be aligned with the version in core Gerrit
- LUCENE_VERS = "5.5.2"
+ LUCENE_VERS = "5.5.4"
maven_jar(
- name = "lucene-highlighter",
- artifact = "org.apache.lucene:lucene-highlighter:" + LUCENE_VERS,
- sha1 = "d127ac514e9df965ab0b57d92bbe0c68d3d145b8",
+ name = 'lucene-highlighter',
+ artifact = 'org.apache.lucene:lucene-highlighter:' + LUCENE_VERS,
+ sha1 = '433f53f03f1b14337c08d54e507a5410905376fa',
)
maven_jar(
- name = "lucene-memory",
- artifact = "org.apache.lucene:lucene-memory:" + LUCENE_VERS,
- sha1 = "7409db9863d8fbc265c27793c6cc7511304182c2",
+ name = 'lucene-memory',
+ artifact = 'org.apache.lucene:lucene-memory:' + LUCENE_VERS,
+ sha1 = '4dbdc2e1a24837722294762a9edb479f79092ab9',
)
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gitblit/GitBlitServletModule.java b/src/main/java/com/googlesource/gerrit/plugins/gitblit/GitBlitServletModule.java
index b1f00bf..91197b7 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/gitblit/GitBlitServletModule.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/gitblit/GitBlitServletModule.java
@@ -61,7 +61,7 @@
private static final Logger log = LoggerFactory.getLogger(GitBlitServletModule.class);
@Inject
- public GitBlitServletModule(@PluginName final String name) {
+ public GitBlitServletModule(@PluginName String name) {
log.info("Create GitBlitModule with name='" + name);
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritAuthFilter.java b/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritAuthFilter.java
index d0019b5..c1f8fed 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritAuthFilter.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritAuthFilter.java
@@ -68,7 +68,7 @@
}
public boolean doFilter(
- final DynamicItem<WebSession> webSession, ServletRequest request, ServletResponse response)
+ DynamicItem<WebSession> webSession, ServletRequest request, ServletResponse response)
throws IOException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
@@ -82,8 +82,7 @@
}
}
- public boolean filterSessionAuth(
- final DynamicItem<WebSession> webSession, HttpServletRequest request) {
+ public boolean filterSessionAuth(DynamicItem<WebSession> webSession, HttpServletRequest request) {
request.setAttribute("gerrit-username", webSession.get().getUser().getUserName());
request.setAttribute("gerrit-token", webSession.get().getSessionId());
return true;
@@ -98,7 +97,7 @@
return false;
}
- final byte[] decoded = new Base64().decode(hdr.substring(LIT_BASIC.length()).getBytes());
+ byte[] decoded = new Base64().decode(hdr.substring(LIT_BASIC.length()).getBytes());
String usernamePassword =
new String(decoded, MoreObjects.firstNonNull(request.getCharacterEncoding(), "UTF-8"));
int splitPos = usernamePassword.indexOf(':');
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritToGitBlitUserModel.java b/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritToGitBlitUserModel.java
index 3802743..f00cefc 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritToGitBlitUserModel.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritToGitBlitUserModel.java
@@ -21,9 +21,12 @@
import com.gitblit.models.UserModel;
import com.gitblit.utils.StringUtils;
import com.google.gerrit.reviewdb.client.Project.NameKey;
-import com.google.gerrit.server.project.NoSuchProjectException;
-import com.google.gerrit.server.project.ProjectControl;
-import com.google.gerrit.server.project.ProjectControl.Factory;
+import com.google.gerrit.server.CurrentUser;
+import com.google.gerrit.server.permissions.PermissionBackend;
+import com.google.gerrit.server.permissions.PermissionBackend.ForProject;
+import com.google.gerrit.server.permissions.ProjectPermission;
+import com.google.gerrit.server.permissions.RefPermission;
+import com.google.inject.Provider;
import java.util.HashSet;
import java.util.Set;
@@ -44,40 +47,38 @@
public final Set<String> repositories = new HashSet<>();
public final Set<TeamModel> teams = new HashSet<>();
- private final transient ProjectControl.Factory projectControlFactory;
+ private final transient Provider<CurrentUser> userProvider;
+ private final transient PermissionBackend permissionBackend;
// non-persisted fields
public boolean isAuthenticated;
public GerritToGitBlitUserModel(String username) {
- this(username, null);
+ this(username, null, null);
}
public GerritToGitBlitUserModel(
- String username, final ProjectControl.Factory projectControlFactory) {
+ String username, Provider<CurrentUser> userProvider, PermissionBackend permissionBackend) {
super(username);
this.username = username;
this.isAuthenticated = true;
- this.projectControlFactory = projectControlFactory;
+ this.userProvider = userProvider;
+ this.permissionBackend = permissionBackend;
}
- public GerritToGitBlitUserModel(final ProjectControl.Factory projectControlFactory) {
+ public GerritToGitBlitUserModel() {
super(ANONYMOUS_USER);
- this.projectControlFactory = projectControlFactory;
+ this.userProvider = null;
+ this.permissionBackend = null;
}
- @Deprecated
- public boolean canAccessRepository(String repositoryName) {
- boolean result = false;
-
- try {
- ProjectControl control = projectControlFactory.controlFor(new NameKey(repositoryName));
- result = control != null;
- } catch (NoSuchProjectException e) {
- result = false;
- }
-
- return result;
+ @Override
+ public boolean canView(RepositoryModel repository, String ref) {
+ return permissionBackend
+ .user(userProvider)
+ .project(new NameKey(StringUtils.stripDotGit(repository.name)))
+ .ref(ref)
+ .testOrFalse(RefPermission.READ);
}
@Override
@@ -85,54 +86,29 @@
RepositoryModel repository,
AccessRestrictionType ifRestriction,
AccessPermission requirePermission) {
- boolean result = false;
-
- try {
- ProjectControl control =
- projectControlFactory.controlFor(new NameKey(getRepositoryName(repository.name)));
-
- if (control == null) {
- return false;
- }
-
- switch (ifRestriction) {
- case VIEW:
- return !control.isHidden();
- case CLONE:
- return control.canRunUploadPack();
- case PUSH:
- return control.canRunReceivePack();
- case NONE:
- default:
- return true;
- }
- } catch (NoSuchProjectException e) {
- result = false;
+ ForProject projectPermissions =
+ permissionBackend
+ .user(userProvider)
+ .project(new NameKey(StringUtils.stripDotGit(repository.name)));
+ switch (ifRestriction) {
+ case VIEW:
+ return projectPermissions.testOrFalse(ProjectPermission.ACCESS);
+ case CLONE:
+ return projectPermissions.testOrFalse(ProjectPermission.RUN_UPLOAD_PACK);
+ case PUSH:
+ return projectPermissions.testOrFalse(ProjectPermission.RUN_RECEIVE_PACK);
+ case NONE:
+ default:
+ return true;
}
-
- return result;
- }
-
- public String getRepositoryName(String name) {
- if (name.endsWith(".git")) {
- name = name.substring(0, name.length() - 4);
- }
- return name;
}
@Override
public boolean hasRepositoryPermission(String name) {
- boolean result = false;
-
- try {
- name = getRepositoryName(name);
- ProjectControl control = projectControlFactory.controlFor(new NameKey(name));
- result = control != null && !control.isHidden();
- } catch (NoSuchProjectException e) {
- result = false;
- }
-
- return result;
+ return permissionBackend
+ .user(userProvider)
+ .project(new NameKey(StringUtils.stripDotGit(name)))
+ .testOrFalse(ProjectPermission.ACCESS);
}
public boolean hasTeamAccess(String repositoryName) {
@@ -202,7 +178,7 @@
return username.compareTo(o.username);
}
- public static UserModel getAnonymous(Factory projectControl) {
- return new GerritToGitBlitUserModel(ANONYMOUS_USER, projectControl);
+ public static UserModel getAnonymous() {
+ return new GerritToGitBlitUserModel(ANONYMOUS_USER, null, null);
}
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritToGitBlitUserService.java b/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritToGitBlitUserService.java
index b8dcbd5..3dd0bfa 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritToGitBlitUserService.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/gitblit/auth/GerritToGitBlitUserService.java
@@ -27,11 +27,13 @@
import com.google.common.base.Strings;
import com.google.gerrit.extensions.registration.DynamicItem;
import com.google.gerrit.httpd.WebSession;
+import com.google.gerrit.server.CurrentUser;
import com.google.gerrit.server.account.AccountManager;
import com.google.gerrit.server.account.AuthRequest;
import com.google.gerrit.server.account.AuthResult;
-import com.google.gerrit.server.project.ProjectControl;
+import com.google.gerrit.server.permissions.PermissionBackend;
import com.google.inject.Inject;
+import com.google.inject.Provider;
import com.google.inject.Singleton;
import java.util.Collection;
import java.util.Collections;
@@ -45,7 +47,8 @@
public class GerritToGitBlitUserService implements IAuthenticationManager, IUserManager {
private static final Logger log = LoggerFactory.getLogger(GerritToGitBlitUserService.class);
- private final ProjectControl.Factory projectControl;
+ private final Provider<CurrentUser> userProvider;
+ private final PermissionBackend permissionBackend;
private final AccountManager accountManager;
private final DynamicItem<WebSession> webSession;
@@ -53,10 +56,12 @@
@Inject
public GerritToGitBlitUserService(
- final ProjectControl.Factory projectControl,
+ Provider<CurrentUser> userProvider,
+ PermissionBackend permissionBackend,
AccountManager accountManager,
- final DynamicItem<WebSession> webSession) {
- this.projectControl = projectControl;
+ DynamicItem<WebSession> webSession) {
+ this.userProvider = userProvider;
+ this.permissionBackend = permissionBackend;
this.accountManager = accountManager;
this.webSession = webSession;
}
@@ -66,7 +71,7 @@
String passwordString = new String(password);
if (username.equals(GerritToGitBlitUserModel.ANONYMOUS_USER)) {
- return GerritToGitBlitUserModel.getAnonymous(projectControl);
+ return GerritToGitBlitUserModel.getAnonymous();
} else if (passwordString.startsWith(GerritToGitBlitUserService.SESSIONAUTH)) {
return authenticateSSO(
username, passwordString.substring(GerritToGitBlitUserService.SESSIONAUTH.length()));
@@ -93,7 +98,7 @@
return null;
}
- return new GerritToGitBlitUserModel(username, projectControl);
+ return new GerritToGitBlitUserModel(username, userProvider, permissionBackend);
}
public UserModel authenticateBasicAuth(String username, String password) {
@@ -113,7 +118,7 @@
return null;
}
- return new GerritToGitBlitUserModel(username, projectControl);
+ return new GerritToGitBlitUserModel(username, userProvider, permissionBackend);
}
@Override
@@ -133,7 +138,7 @@
httpRequest.getSession().setAttribute(Constants.ATTRIB_AUTHTYPE, AuthenticationType.CONTAINER);
if (Strings.isNullOrEmpty(gerritUsername) || Strings.isNullOrEmpty(gerritToken)) {
- return GerritToGitBlitUserModel.getAnonymous(projectControl);
+ return GerritToGitBlitUserModel.getAnonymous();
}
return authenticateSSO(gerritUsername, gerritToken);
}
@@ -210,7 +215,7 @@
@Override
public UserModel getUserModel(String username) {
- return new GerritToGitBlitUserModel(username, projectControl);
+ return new GerritToGitBlitUserModel(username, userProvider, permissionBackend);
}
@Override