Merge branch 'stable-3.1' * stable-3.1: Bump Bazel version to 3.0.0 Upgrade bazlets to latest stable-2.16 to build with 2.16.17 API Upgrade bazlets to latest stable-2.16 Change-Id: I03f66d82c0264b2354ab42a53d805569dc162d53
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gitiles/FilteredRepository.java b/src/main/java/com/googlesource/gerrit/plugins/gitiles/FilteredRepository.java index 58f2b0f..59c537a 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/gitiles/FilteredRepository.java +++ b/src/main/java/com/googlesource/gerrit/plugins/gitiles/FilteredRepository.java
@@ -14,8 +14,9 @@ package com.googlesource.gerrit.plugins.gitiles; +import static java.util.stream.Collectors.toMap; + import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; import com.google.common.collect.Maps; import com.google.gerrit.entities.Project; import com.google.gerrit.extensions.restapi.AuthException; @@ -31,8 +32,10 @@ import com.google.inject.Inject; import com.google.inject.Provider; import java.io.IOException; +import java.util.Collection; import java.util.List; import java.util.Map; +import java.util.Optional; import org.eclipse.jgit.attributes.AttributesNodeProvider; import org.eclipse.jgit.lib.ObjectDatabase; import org.eclipse.jgit.lib.Ref; @@ -65,12 +68,15 @@ FilteredRepository create(Project.NameKey name) throws NoSuchProjectException, IOException, PermissionBackendException { - ProjectState projectState = projectCache.checkedGet(name); - if (projectState == null || !projectState.getProject().getState().permitsRead()) { + Optional<ProjectState> projectState = projectCache.get(name); + if (!projectState.get().statePermitsRead()) { throw new NoSuchProjectException(name); } return new FilteredRepository( - projectState, userProvider.get(), repoManager.openRepository(name), permissionBackend); + projectState.get(), + userProvider.get(), + repoManager.openRepository(name), + permissionBackend); } } @@ -204,7 +210,10 @@ return null; } try { - return perm.filter(ImmutableMap.of(name, ref), git, RefFilterOptions.defaults()).get(name); + return perm.filter(ImmutableList.of(ref), git, RefFilterOptions.defaults()).stream() + .filter(r -> r.getName().equals(name)) + .findAny() + .orElse(null); } catch (PermissionBackendException e) { throw new IOException(e); } @@ -212,7 +221,7 @@ @Override public Map<String, Ref> getRefs(String prefix) throws IOException { - Map<String, Ref> refs; + Collection<Ref> refs; try { refs = perm.filter( @@ -220,12 +229,8 @@ } catch (PermissionBackendException e) { throw new IOException(e); } - Map<String, Ref> result = Maps.newHashMapWithExpectedSize(refs.size()); - for (Ref ref : refs.values()) { - // VisibleRefFilter adds the prefix to the keys, re-strip it. - result.put(ref.getName().substring(prefix.length()), ref); - } - return refs; + // VisibleRefFilter adds the prefix to the keys, re-strip it. + return refs.stream().collect(toMap(r -> r.getName().substring(prefix.length()), r -> r)); } @Override
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gitiles/GerritGitilesAccess.java b/src/main/java/com/googlesource/gerrit/plugins/gitiles/GerritGitilesAccess.java index a9196ef..d89b748 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/gitiles/GerritGitilesAccess.java +++ b/src/main/java/com/googlesource/gerrit/plugins/gitiles/GerritGitilesAccess.java
@@ -37,6 +37,7 @@ import java.io.IOException; import java.util.Collections; import java.util.Map; +import java.util.Optional; import java.util.Set; import javax.servlet.http.HttpServletRequest; import org.eclipse.jgit.errors.ConfigInvalidException; @@ -169,10 +170,8 @@ @Override public RepositoryDescription getRepositoryDescription() throws IOException { Project.NameKey nameKey = Resolver.getNameKey(req); - ProjectState state = projectCache.get(nameKey); - if (state == null) { - throw new RepositoryNotFoundException(nameKey.get()); - } + ProjectState state = + projectCache.get(nameKey).orElseThrow(() -> new RepositoryNotFoundException(nameKey.get())); return toDescription(nameKey.get(), projectJson.format(state.getProject())); } @@ -182,15 +181,14 @@ // of the project. For non-project access, use All-Projects as project. // If none of the above exists, use global gitiles.config. Project.NameKey nameKey = Resolver.getNameKey(req); - ProjectState state = projectCache.get(nameKey); - if (state != null) { - Config cfg = state.getConfig("gitiles.config").getWithInheritance(); + Optional<ProjectState> state = projectCache.get(nameKey); + if (state.isPresent()) { + Config cfg = state.get().getConfig("gitiles.config").getWithInheritance(); if (cfg != null && cfg.getSections().size() > 0) { return cfg; } } else { - state = projectCache.getAllProjects(); - Config cfg = state.getConfig("gitiles.config").get(); + Config cfg = projectCache.getAllProjects().getConfig("gitiles.config").get(); if (cfg != null && cfg.getSections().size() > 0) { return cfg; }