public class LoaderSplitPolicyProvider extends Policy implements DynamicPolicy
LoaderSplitPolicyProvider
instance wraps two
underlying policy providers:
null
class loader, and
refresh()
, which applies to both policies).
Policy.Parameters
UNSUPPORTED_EMPTY_COLLECTION
Constructor and Description |
---|
LoaderSplitPolicyProvider(ClassLoader loader,
Policy loaderPolicy,
Policy defaultPolicy)
Creates a new
LoaderSplitPolicyProvider instance which
delegates to loaderPolicy any permission query/grant
operations involving protection domains or classes with the given class
loader, any child class loader of the given class loader, or the
null class loader; all other operations are delegated to
defaultPolicy (with the exception of refresh ,
which applies to both policies). |
Modifier and Type | Method and Description |
---|---|
Permission[] |
getGrants(Class cl,
Principal[] principals)
If both underlying policy providers support dynamic grants, delegates to
the
getGrants method of the underlying policy associated
with the loader of the given class (the loader-specific policy if the
class loader is null , the same as or a child of the loader
specified in the constructor for this instance, or the default loader
otherwise). |
PermissionCollection |
getPermissions(CodeSource source)
Delegates to the corresponding
getPermissions method of the
underlying default policy. |
PermissionCollection |
getPermissions(ProtectionDomain domain)
If the given protection domain is the protection domain of this class,
then a newly-created
PermissionCollection containing AllPermission is returned. |
void |
grant(Class cl,
Principal[] principals,
Permission[] permissions)
If both underlying policy providers support dynamic grants, delegates to
the
grant method of the underlying policy associated with
the loader of the given class (the loader-specific policy if the class
loader is null , the same as or a child of the loader
specified in the constructor for this instance, or the default loader
otherwise). |
boolean |
grantSupported()
Returns
true if both of the underlying policy providers
implement DynamicPolicy and return true from calls
to grantSupported ; returns false otherwise. |
boolean |
implies(ProtectionDomain domain,
Permission permission)
If the given protection domain is the protection domain of this class,
then
true is returned. |
void |
refresh()
Invokes
refresh on both the loader-specific and default
underlying policy providers. |
getInstance, getInstance, getInstance, getParameters, getPolicy, getProvider, getType, setPolicy
public LoaderSplitPolicyProvider(ClassLoader loader, Policy loaderPolicy, Policy defaultPolicy)
LoaderSplitPolicyProvider
instance which
delegates to loaderPolicy
any permission query/grant
operations involving protection domains or classes with the given class
loader, any child class loader of the given class loader, or the
null
class loader; all other operations are delegated to
defaultPolicy
(with the exception of refresh
,
which applies to both policies).loader
- class loader for which associated permission query/grant
operations should be forwarded to loaderPolicy
loaderPolicy
- class loader-specific security policy providerdefaultPolicy
- default security policy providerNullPointerException
- if loader
,
loaderPolicy
or defaultPolicy
is
null
public PermissionCollection getPermissions(CodeSource source)
getPermissions
method of the
underlying default policy.getPermissions
in class Policy
source
- code source for which to look up permissionspublic PermissionCollection getPermissions(ProtectionDomain domain)
PermissionCollection
containing AllPermission
is returned. If not, delegates to the corresponding
getPermissions
method of the underlying policy associated
with the loader of the given class (the loader-specific policy if the
class loader is null
, the same as or a child of the loader
specified in the constructor for this instance, or the default loader
otherwise).getPermissions
in class Policy
domain
- protection domain for which to look up permissionspublic boolean implies(ProtectionDomain domain, Permission permission)
true
is returned. If not, delegates to the
implies
method of the underlying policy associated with the
loader of the given class (the loader-specific policy if the class
loader is null
, the same as or a child of the loader
specified in the constructor for this instance, or the default loader
otherwise).public void refresh()
refresh
on both the loader-specific and default
underlying policy providers.public boolean grantSupported()
true
if both of the underlying policy providers
implement DynamicPolicy
and return true
from calls
to grantSupported
; returns false
otherwise.grantSupported
in interface DynamicPolicy
true
if policy supports dynamic permission grants
under current context, false
otherwisepublic void grant(Class cl, Principal[] principals, Permission[] permissions)
grant
method of the underlying policy associated with
the loader of the given class (the loader-specific policy if the class
loader is null
, the same as or a child of the loader
specified in the constructor for this instance, or the default loader
otherwise). If at least one of the underlying policy providers does not
support dynamic grants, throws an
UnsupportedOperationException
.grant
in interface DynamicPolicy
cl
- class to grant permissions to the class loader of, or
null
if granting across all class loadersprincipals
- if non-null
, minimum set of principals
to which grants applypermissions
- if non-null
, permissions to grantUnsupportedOperationException
- if policy does not support
dynamic grants, or if cl
is non-null
and belongs to a protection domain with a null
class loader other than the system domainSecurityException
- if a security manager is installed and the
calling context does not have sufficient permissions to grant
the given permissionsNullPointerException
- if any element of the principals or
permissions arrays is null
public Permission[] getGrants(Class cl, Principal[] principals)
getGrants
method of the underlying policy associated
with the loader of the given class (the loader-specific policy if the
class loader is null
, the same as or a child of the loader
specified in the constructor for this instance, or the default loader
otherwise). If at least one of the underlying policy providers does not
support dynamic grants, throws an
UnsupportedOperationException
.getGrants
in interface DynamicPolicy
cl
- class to query the permissions dynamically granted to the
class loader of, or null
if querying permissions
granted across all class loadersprincipals
- if non-null
, principals to query
dynamic grants forUnsupportedOperationException
- if policy does not support
dynamic grants, or if cl
is non-null
and belongs to a protection domain with a null
class loader other than the system domainNullPointerException
- if any element of the principals array is
null
Copyright 2007-2013, multiple authors.
Licensed under the Apache License, Version 2.0, see the NOTICE file for attributions.