Author: adc
Date: Mon Feb 21 22:53:19 2005
New Revision: 154807
URL: http://svn.apache.org/viewcvs?view=rev&rev=154807
Log:
Fixed delegate handling.
Modified:
geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/GeronimoPolicy.java
Modified:
geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/GeronimoPolicy.java
URL:
http://svn.apache.org/viewcvs/geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/GeronimoPolicy.java?view=diff&r1=154806&r2=154807
==============================================================================
---
geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/GeronimoPolicy.java
(original)
+++
geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jacc/GeronimoPolicy.java
Mon Feb 21 22:53:19 2005
@@ -22,7 +22,6 @@
import java.security.PermissionCollection;
import java.security.Policy;
import java.security.ProtectionDomain;
-import javax.security.jacc.PolicyConfigurationFactory;
import javax.security.jacc.PolicyContext;
import javax.security.jacc.PolicyContextException;
@@ -36,11 +35,27 @@
private boolean loaded;
public GeronimoPolicy() {
- this(null);
- }
+ String provider =
System.getProperty("org.apache.geronimo.jacc.policy.provider");
- public GeronimoPolicy(Policy root) {
- this.root = root;
+ if (provider == null) {
+ root = Policy.getPolicy();
+ } else {
+ try {
+ Object obj = Class.forName(provider).newInstance();
+ if (obj instanceof Policy) {
+ root = (Policy) obj;
+ } else {
+ throw new RuntimeException(provider + "is not a type of
java.security.Policy");
+ }
+ } catch (InstantiationException e) {
+ throw new RuntimeException("Unable to create an instance of "
+ provider, e);
+ } catch (IllegalAccessException e) {
+ throw new RuntimeException("Unable to create an instance of "
+ provider, e);
+ } catch (ClassNotFoundException e) {
+ throw new RuntimeException("Unable to create an instance of "
+ provider, e);
+ }
+ }
+ root.refresh();
}
public PermissionCollection getPermissions(CodeSource codesource) {
@@ -53,7 +68,7 @@
public boolean implies(ProtectionDomain domain, Permission permission) {
if (!loaded) {
- factory = obtainFactory();
+ factory = GeronimoPolicyConfigurationFactory.getSingleton();
loaded = true;
}
@@ -75,15 +90,5 @@
if (root != null) return root.implies(domain, permission);
return false;
- }
-
- private GeronimoPolicyConfigurationFactory obtainFactory() {
- GeronimoPolicyConfigurationFactory result = null;
- try {
- result = (GeronimoPolicyConfigurationFactory)
PolicyConfigurationFactory.getPolicyConfigurationFactory();
- } catch (ClassNotFoundException e) {
- } catch (PolicyContextException e) {
- }
- return result;
}
}