diff options
Diffstat (limited to 'gerrit-server/src/main/java/com/google/gerrit/server/account/InternalGroupBackend.java')
-rw-r--r-- | gerrit-server/src/main/java/com/google/gerrit/server/account/InternalGroupBackend.java | 105 |
1 files changed, 0 insertions, 105 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/account/InternalGroupBackend.java b/gerrit-server/src/main/java/com/google/gerrit/server/account/InternalGroupBackend.java deleted file mode 100644 index 3f4fee9e04..0000000000 --- a/gerrit-server/src/main/java/com/google/gerrit/server/account/InternalGroupBackend.java +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright (C) 2012 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.server.account; - -import static java.util.stream.Collectors.toList; - -import com.google.common.collect.ImmutableList; -import com.google.gerrit.common.data.GroupDescription; -import com.google.gerrit.common.data.GroupReference; -import com.google.gerrit.reviewdb.client.AccountGroup; -import com.google.gerrit.reviewdb.server.ReviewDb; -import com.google.gerrit.server.IdentifiedUser; -import com.google.gerrit.server.group.Groups; -import com.google.gerrit.server.group.InternalGroupDescription; -import com.google.gerrit.server.project.ProjectState; -import com.google.gwtorm.server.OrmException; -import com.google.gwtorm.server.SchemaFactory; -import com.google.inject.Inject; -import com.google.inject.Singleton; -import java.util.Collection; -import org.eclipse.jgit.lib.ObjectId; - -/** Implementation of GroupBackend for the internal group system. */ -@Singleton -public class InternalGroupBackend implements GroupBackend { - private final GroupControl.Factory groupControlFactory; - private final GroupCache groupCache; - private final Groups groups; - private final SchemaFactory<ReviewDb> schema; - private final IncludingGroupMembership.Factory groupMembershipFactory; - - @Inject - InternalGroupBackend( - GroupControl.Factory groupControlFactory, - GroupCache groupCache, - Groups groups, - SchemaFactory<ReviewDb> schema, - IncludingGroupMembership.Factory groupMembershipFactory) { - this.groupControlFactory = groupControlFactory; - this.groupCache = groupCache; - this.groups = groups; - this.schema = schema; - this.groupMembershipFactory = groupMembershipFactory; - } - - @Override - public boolean handles(AccountGroup.UUID uuid) { - // See AccountGroup.isInternalGroup - return ObjectId.isId(uuid.get()); // [0-9a-f]{40}; - } - - @Override - public GroupDescription.Internal get(AccountGroup.UUID uuid) { - if (!handles(uuid)) { - return null; - } - - return groupCache.get(uuid).map(InternalGroupDescription::new).orElse(null); - } - - @Override - public Collection<GroupReference> suggest(String name, ProjectState project) { - try (ReviewDb db = schema.open()) { - return groups - .getAll(db) - .filter(group -> startsWithIgnoreCase(group, name)) - .filter(this::isVisible) - .map(GroupReference::forGroup) - .collect(toList()); - } catch (OrmException e) { - return ImmutableList.of(); - } - } - - private static boolean startsWithIgnoreCase(AccountGroup group, String name) { - return group.getName().regionMatches(true, 0, name, 0, name.length()); - } - - private boolean isVisible(AccountGroup group) { - return groupControlFactory.controlFor(group).isVisible(); - } - - @Override - public GroupMembership membershipsOf(IdentifiedUser user) { - return groupMembershipFactory.create(user); - } - - @Override - public boolean isVisibleToAll(AccountGroup.UUID uuid) { - GroupDescription.Internal g = get(uuid); - return g != null && g.isVisibleToAll(); - } -} |