PolicyConfigurationFactorypublic abstract class PolicyConfigurationFactory extends Object Abstract factory and finder class for obtaining
the instance of the class that implements the PolicyConfigurationFactory
of a provider. The factory will be used to instantiate PolicyConfiguration
objects that will be used by the deployment tools of the container
to create and manage policy contexts within the Policy Provider.
Implementation classes must have a public no argument constructor that
may be used to create an operational instance of the factory implementation
class. |
Fields Summary |
---|
private static String | FACTORY_NAME | private static PolicyConfigurationFactory | pcFactory |
Methods Summary |
---|
public abstract javax.security.jacc.PolicyConfiguration | getPolicyConfiguration(java.lang.String contextID, boolean remove)This method is used to obtain an instance of the provider specific
class that implements the PolicyConfiguration interface that
corresponds to the identified policy context within the provider.
The methods of the PolicyConfiguration interface are used to
define the policy statements of the identified policy context.
If at the time of the call, the identified policy context does not
exist in the provider, then the policy context will be created
in the provider and the Object that implements the context's
PolicyConfiguration Interface will be returned. If the state of the
identified context is "deleted" or "inService" it will be transitioned to
the "open" state as a result of the call. The states in the lifecycle
of a policy context are defined by the PolicyConfiguration interface.
For a given value of policy context identifier, this method
must always return the same instance of PolicyConfiguration
and there must be at most one actual instance of a
PolicyConfiguration with a given policy context identifier
(during a process context).
To preserve the invariant that there be at most one
PolicyConfiguration object for a given policy context,
it may be necessary for this method to be thread safe.
| public static javax.security.jacc.PolicyConfigurationFactory | getPolicyConfigurationFactory()This static method uses a system property to find and instantiate
(via a public constructor) a provider specific factory implementation
class. The name of the provider specific factory implementation class is
obtained from the value of the system property,
javax.security.jacc.PolicyConfigurationFactory.provider.
SecurityManager sm = System.getSecurityManager();
if (sm != null) sm.checkPermission(new
java.security.SecurityPermission("setPolicy"));
if(pcFactory != null)
return pcFactory;
String msg;
final String classname[] = { null };
try {
Class clazz = null;
if (sm != null){
try{
clazz = (Class)AccessController.doPrivileged
(new PrivilegedExceptionAction(){
public Object run() throws java.lang.Exception{
classname[0] = System.getProperty(FACTORY_NAME);
if(classname[0] == null){
String msg = new String
("JACC:Error PolicyConfigurationFactory : property not set : "+ FACTORY_NAME);
throw new ClassNotFoundException(msg);
}
return Class.forName(classname[0],true,
Thread.currentThread().getContextClassLoader());
}
});
} catch (PrivilegedActionException ex){
Exception e = ex.getException() ;
if ( e instanceof java.lang.ClassNotFoundException){
throw (java.lang.ClassNotFoundException)e;
} else if ( e instanceof java.lang.InstantiationException){
throw (java.lang.InstantiationException)e;
} else if ( e instanceof java.lang.IllegalAccessException){
throw (java.lang.IllegalAccessException)e;
}
}
} else {
classname[0] = System.getProperty(FACTORY_NAME);
if (classname[0] == null){
msg = new String
("JACC:Error PolicyConfigurationFactory : property not set : "+ FACTORY_NAME);
throw new ClassNotFoundException(msg);
}
clazz = Class.forName(classname[0],true,
Thread.currentThread().getContextClassLoader());
}
Object factory = clazz.newInstance();
pcFactory = (PolicyConfigurationFactory) factory;
} catch(java.lang.ClassNotFoundException cnfe){
msg = new String
("JACC:Error PolicyConfigurationFactory : cannot find class : "
+ classname[0]);
throw new ClassNotFoundException(msg,cnfe);
} catch(java.lang.IllegalAccessException iae){
msg = new String
("JACC:Error PolicyConfigurationFactory : cannot access class : "
+ classname[0]);
throw new PolicyContextException(msg,iae);
} catch(java.lang.InstantiationException ie){
msg = new String
("JACC:Error PolicyConfigurationFactory : cannot instantiate : "
+ classname[0]);
throw new PolicyContextException(msg,ie);
} catch(java.lang.ClassCastException cce){
msg = new String
("JACC:Error PolicyConfigurationFactory : class not PolicyConfigurationFactory : "+ classname[0]);
throw new ClassCastException(msg);
}
return pcFactory;
| public abstract boolean | inService(java.lang.String contextID)This method determines if the identified policy context
exists with state "inService" in the Policy provider
associated with the factory.
|
|