Java tutorial
/******************************************************************************* * Educational Online Test Delivery System * Copyright (c) 2013 American Institutes for Research * * Distributed under the AIR Open Source License, Version 1.0 * See accompanying file AIR-License-1_0.txt or at * http://www.smarterapp.org/documents/American_Institutes_for_Research_Open_Source_Software_License.pdf ******************************************************************************/ package org.opentestsystem.shared.security.domain; import org.opentestsystem.shared.progman.domain.Permissions; import org.springframework.stereotype.Component; import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.Multimap; @Component public class ProgmanPermissionsResolver implements RoleSpecificPermisionsResolver { private final static Multimap<String, SbacPermission> permissions = ArrayListMultimap.create(); @Override public Multimap<String, SbacPermission> getRoleBindings(final String componentName) { return getPermissions(componentName); } //lazy init private Multimap<String, SbacPermission> getPermissions(final String componentName) { if (permissions.isEmpty()) { Multimap<String, SbacPermission> tempPers = ArrayListMultimap.create(); //Administrator Role for (String permString : Permissions.getPermissionStrings()) { SbacPermission perm = new SbacPermission(); perm.setName(permString); perm.setComponentName(componentName); tempPers.put("Administrator", perm); tempPers.put("Program Management Admin", perm); } //Program Management Read SbacPermission perm = new SbacPermission(); perm.setName(Permissions.PROGMAN_READ.getTitle()); perm.setComponentName(componentName); tempPers.put("Program Management Read", perm); //wait till the end to avoid parial load with sync calls permissions.putAll(tempPers); } return permissions; } }