/** * Copyright (C) 2014 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.provider.permission.impl; import org.apache.shiro.authz.Permission; import com.opengamma.provider.permission.PermissionCheckProvider; import com.opengamma.util.ArgumentChecker; import com.opengamma.util.auth.AuthUtils; import com.opengamma.util.auth.PrefixedPermissionResolver; import com.opengamma.util.auth.ShiroPermissionResolver; /** * An Apache Shiro permission resolver that uses a {@code PermissionCheckProvider}. * <p> * Instances of this class are registered using {@link ShiroPermissionResolver#register(PrefixedPermissionResolver)} * accessed via {@link AuthUtils#getPermissionResolver()}. */ public final class ProviderBasedPermissionResolver implements PrefixedPermissionResolver { /** * The permission prefix. */ private final String _prefix; /** * The underlying provider. */ private final PermissionCheckProvider _provider; /** * Creates an instance. * * @param prefix the permission prefix, not null * @param provider the underlying permission check provider, not null */ public ProviderBasedPermissionResolver(String prefix, PermissionCheckProvider provider) { _prefix = ArgumentChecker.notNull(prefix, "prefix"); _provider = ArgumentChecker.notNull(provider, "provider"); } //------------------------------------------------------------------------- @Override public String getPrefix() { return _prefix; } @Override public Permission resolvePermission(String permissionString) { return new ProviderBasedPermission(_provider, permissionString); } }