Java tutorial
/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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 org.apache.sentry.core.common; import java.util.HashSet; import java.util.Set; import com.google.common.collect.ImmutableSet; /** * Some authorization schemes allow users to select a particular * set of roles they want active at any give time. For example, * SQL systems often all ALL, NONE, or a subset of roles. */ public class ActiveRoleSet { public static final ActiveRoleSet ALL = new ActiveRoleSet(true); private final boolean allRoles; private final ImmutableSet<String> roles; public ActiveRoleSet(boolean allRoles) { this(allRoles, new HashSet<String>()); } public ActiveRoleSet(Set<String> roles) { this(false, ImmutableSet.copyOf(roles)); } private ActiveRoleSet(boolean allRoles, Set<String> roles) { this.allRoles = allRoles; ImmutableSet.Builder<String> setBuilder = ImmutableSet.builder(); for (String role : roles) { setBuilder.add(role.toLowerCase()); } this.roles = setBuilder.build(); } /** * Returns true if this active role set contains role. This can be the result * of either this role set implying all roles or containing role. * @param role * @return true if this active role set contains role */ public boolean containsRole(String role) { return allRoles || roles.contains(role.toLowerCase()); } public boolean isAll() { return allRoles; } public Set<String> getRoles() { return roles; } @Override public String toString() { StringBuilder builder = new StringBuilder("ActiveRoleSet = [ roles = "); if (allRoles) { builder.append("ALL"); } else { builder.append(roles); } return builder.append(" ").toString(); } }