Author: peter_firmstone Date: Tue Aug 2 11:57:55 2011 New Revision: 1153103
URL: http://svn.apache.org/viewvc?rev=1153103&view=rev Log: Refactoring Added: river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/CertificateGrant.java - copied, changed from r1139517, river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/util/CertificateGrant.java river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/ClassLoaderGrant.java - copied, changed from r1139517, river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/util/ClassLoaderGrant.java river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/CodeSourceGrant.java - copied, changed from r1139517, river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/util/CodeSourceGrant.java river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/Deny.java - copied, changed from r1152990, river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/util/Deny.java river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/PermissionGrantBuilderImp.java - copied, changed from r1152990, river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/util/PermissionGrantBuilderImp.java river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/PrincipalGrant.java - copied, changed from r1152990, river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/util/PrincipalGrant.java river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/ProtectionDomainGrant.java - copied, changed from r1139517, river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/util/ProtectionDomainGrant.java river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/api/security/PrincipalGrantTest.java - copied, changed from r1152990, river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/security/policy/util/PrincipalGrantTest.java Removed: river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/loader/ river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/spi/ river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/util/CertificateGrant.java river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/util/ClassLoaderGrant.java river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/util/CodeSourceGrant.java river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/util/Deny.java river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/util/PermissionGrantBuilderImp.java river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/util/PrincipalGrant.java river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/util/ProtectionDomainGrant.java river/jtsk/skunk/peterConcurrentPolicy/test/src/net/jini/io/ river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/security/policy/util/PrincipalGrantTest.java Modified: river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/PermissionGrantBuilder.java river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/se/DynamicConcurrentPolicyProvider.java river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/util/DefaultPolicyParser.java river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/api/security/PermissionGrantTest.java river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/security/policy/se/ConcurrentPolicyFileTest.java river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/security/policy/util/PolicyEntryTest.java Copied: river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/CertificateGrant.java (from r1139517, river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/util/CertificateGrant.java) URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/CertificateGrant.java?p2=river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/CertificateGrant.java&p1=river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/util/CertificateGrant.java&r1=1139517&r2=1153103&rev=1153103&view=diff ============================================================================== --- river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/util/CertificateGrant.java (original) +++ river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/CertificateGrant.java Tue Aug 2 11:57:55 2011 @@ -16,8 +16,11 @@ * limitations under the License. */ -package org.apache.river.impl.security.policy.util; +package org.apache.river.api.security; +import java.io.InvalidObjectException; +import java.io.ObjectInputStream; +import java.io.Serializable; import org.apache.river.api.security.PermissionGrantBuilder; import java.security.CodeSource; import java.security.Permission; @@ -28,6 +31,7 @@ import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.HashSet; +import java.util.Iterator; import java.util.List; import org.apache.river.api.security.Exclusion; @@ -36,11 +40,13 @@ import org.apache.river.api.security.Exc * @author Peter Firmstone. */ class CertificateGrant extends PrincipalGrant { + private static final long serialVersionUID = 1L; private final Collection<Certificate> certs; private final int hashCode; private final Exclusion exclusion; @SuppressWarnings("unchecked") - CertificateGrant(Certificate[] codeSourceCerts, Principal[] pals, Permission[] perms, Exclusion deny){ + CertificateGrant(Certificate[] codeSourceCerts, Principal[] pals, + Permission[] perms, Exclusion deny){ super(pals, perms); exclusion = deny; if (codeSourceCerts == null || codeSourceCerts.length == 0) { @@ -74,6 +80,20 @@ class CertificateGrant extends Principal } @Override + public String toString(){ + StringBuilder sb = new StringBuilder(400); + sb.append(super.toString()) + .append("Certificate's: \n"); + Iterator<Certificate> it = certs.iterator(); + while (it.hasNext()){ + sb.append(it.next().toString()) + .append("\n"); + } + sb.append(exclusion.toString()); + return sb.toString(); + } + + @Override public boolean implies(ProtectionDomain pd) { if ( !super.implies(pd)) return false; if ( exclusion.excludes(pd)) return false; @@ -109,4 +129,15 @@ class CertificateGrant extends Principal return pgb.certificates(certs.toArray(new Certificate[certs.size()])) .context(PermissionGrantBuilder.CODESOURCE_CERTS); } + + //writeReplace method for serialization proxy pattern + private Object writeReplace() { + return getBuilderTemplate(); + } + + //readObject method for the serialization proxy pattern + private void readObject(ObjectInputStream stream) + throws InvalidObjectException{ + throw new InvalidObjectException("PermissionGrantBuilder required"); + } } Copied: river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/ClassLoaderGrant.java (from r1139517, river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/util/ClassLoaderGrant.java) URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/ClassLoaderGrant.java?p2=river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/ClassLoaderGrant.java&p1=river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/util/ClassLoaderGrant.java&r1=1139517&r2=1153103&rev=1153103&view=diff ============================================================================== --- river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/util/ClassLoaderGrant.java (original) +++ river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/ClassLoaderGrant.java Tue Aug 2 11:57:55 2011 @@ -16,8 +16,10 @@ * limitations under the License. */ -package org.apache.river.impl.security.policy.util; +package org.apache.river.api.security; +import java.io.InvalidObjectException; +import java.io.ObjectInputStream; import org.apache.river.api.security.PermissionGrantBuilder; import java.lang.ref.WeakReference; import java.security.Permission; @@ -29,6 +31,7 @@ import java.security.ProtectionDomain; * @author Peter Firmstone */ class ClassLoaderGrant extends ProtectionDomainGrant { + private static final long serialVersionUID = 1L; private final int hashCode; @SuppressWarnings("unchecked") ClassLoaderGrant(WeakReference<ProtectionDomain> domain, Principal[] groups, @@ -53,7 +56,14 @@ class ClassLoaderGrant extends Protectio @Override public int hashCode() { return hashCode; - } + } + + public String toString(){ + StringBuilder sb = new StringBuilder(500); + return sb.append(super.toString()) + .append("ClassLoader grant.") + .toString(); + } @Override public boolean implies(ProtectionDomain pd) { @@ -71,4 +81,15 @@ class ClassLoaderGrant extends Protectio PermissionGrantBuilder pgb = super.getBuilderTemplate(); return pgb.context(PermissionGrantBuilder.CLASSLOADER); } + + //writeReplace method for serialization proxy pattern + private Object writeReplace() { + return getBuilderTemplate(); + } + + //readObject method for the serialization proxy pattern + private void readObject(ObjectInputStream stream) + throws InvalidObjectException{ + throw new InvalidObjectException("PermissionGrantBuilder required"); + } } Copied: river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/CodeSourceGrant.java (from r1139517, river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/util/CodeSourceGrant.java) URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/CodeSourceGrant.java?p2=river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/CodeSourceGrant.java&p1=river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/util/CodeSourceGrant.java&r1=1139517&r2=1153103&rev=1153103&view=diff ============================================================================== --- river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/util/CodeSourceGrant.java (original) +++ river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/CodeSourceGrant.java Tue Aug 2 11:57:55 2011 @@ -16,19 +16,20 @@ * limitations under the License. */ -package org.apache.river.impl.security.policy.util; +package org.apache.river.api.security; -import org.apache.river.api.security.PermissionGrantBuilder; +import java.io.InvalidObjectException; +import java.io.ObjectInputStream; import java.security.CodeSource; import java.security.Permission; import java.security.Principal; -import org.apache.river.api.security.Exclusion; /** * * @author Peter Firmstone */ class CodeSourceGrant extends CertificateGrant { + private static final long serialVersionUID = 1L; private final CodeSource cs; private final int hashCode; @@ -63,6 +64,15 @@ class CodeSourceGrant extends Certificat return false; } + @Override + public String toString(){ + StringBuilder sb = new StringBuilder(500); + return sb.append(super.toString()) + .append("CodeSource: \n") + .append(cs.toString()) + .toString(); + } + /** * Checks if passed CodeSource matches this PermissionGrant. Null CodeSource of * PermissionGrant implies any CodeSource; non-null CodeSource forwards to its @@ -83,4 +93,15 @@ class CodeSourceGrant extends Certificat .context(PermissionGrantBuilder.CODESOURCE); return pgb; } + + //writeReplace method for serialization proxy pattern + private Object writeReplace() { + return getBuilderTemplate(); + } + + //readObject method for the serialization proxy pattern + private void readObject(ObjectInputStream stream) + throws InvalidObjectException{ + throw new InvalidObjectException("PermissionGrantBuilder required"); + } } Copied: river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/Deny.java (from r1152990, river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/util/Deny.java) URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/Deny.java?p2=river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/Deny.java&p1=river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/util/Deny.java&r1=1152990&r2=1153103&rev=1153103&view=diff ============================================================================== --- river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/util/Deny.java (original) +++ river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/Deny.java Tue Aug 2 11:57:55 2011 @@ -16,7 +16,7 @@ * limitations under the License. */ -package org.apache.river.impl.security.policy.util; +package org.apache.river.api.security; import java.io.IOException; import java.io.InvalidObjectException; @@ -34,13 +34,14 @@ import java.util.Collections; import java.util.Iterator; import java.util.List; import org.apache.river.impl.security.policy.util.PolicyUtils; +import org.apache.river.impl.security.policy.util.PolicyUtils; /** * Immutable List of codebase URL's and CodeSource's to deny in a PermissionGrant. * Supplied to a PermissionGrantBuilder. * - * Applies only to Certificate[] and ClassLoader grant's, serves no use for CodeSource - * or PermissionDomain grants. + * Applies only to Certificate[] and ClassLoader grant's, serves no use for + * Principal, CodeSource or ProtectionDomain grants. * * This is not a global list, however since it is immutable, it can be shared * among PermissionGrant's to save memory. Modified: river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/PermissionGrantBuilder.java URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/PermissionGrantBuilder.java?rev=1153103&r1=1153102&r2=1153103&view=diff ============================================================================== --- river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/PermissionGrantBuilder.java (original) +++ river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/PermissionGrantBuilder.java Tue Aug 2 11:57:55 2011 @@ -22,7 +22,7 @@ import java.security.CodeSource; import java.security.Permission; import java.security.Principal; import java.security.cert.Certificate; -import org.apache.river.impl.security.policy.util.PermissionGrantBuilderImp; +import javax.security.auth.Subject; /** * The PermissionGrantBuilder creates Dynamic PermissionGrant's based on @@ -67,12 +67,14 @@ public abstract class PermissionGrantBui * The PermissionGrant generated will apply to all classes loaded from * CodeSource's that have at a minimum the defined array Certificate[] * - * Note: This isn't necessary if Certificates are passed in without - * a CodeSource. The type of grant can be determined by the parameters - * which have been set. */ public static final int CODESOURCE_CERTS = 3; - + /** + * The PermissionGrant generated will apply to the Subject that has + * all the principals provided. + * + * @see Subject + */ public static final int PRINCIPAL = 4; public static PermissionGrantBuilder create(){ @@ -80,24 +82,72 @@ public abstract class PermissionGrantBui } /** - * Build the PermissionGrant using information supplied. - * @return an appropriate PermissionGrant. + * resets the state for reuse, identical to a newly created + * PermissionGrantBuilder. */ public abstract void reset(); - + /** + * Sets the context of the PermissionGrant to on of the static final + * fields in this class. + * + * @param context + * @return PermissionGrantBuilder + * @throws IllegalStateException + */ public abstract PermissionGrantBuilder context(int context) throws IllegalStateException; - + /** + * Sets the CodeSource that will receive the PermissionGrant + * @param cs + * @return PermissionGrantBuilder + */ public abstract PermissionGrantBuilder codeSource(CodeSource cs); - + /** + * Extracts the CodeSource, Certificates, ClassLoader and ProtectionDomain + * from the Class for use in the PermissionGrantBuilder. The ClassLoader + * and ProtectionDomain are weakly referenced, when collected any + * created PermissionGrant affected will be voided. + * @param cl + * @return PermissionGrantBuilder. + */ public abstract PermissionGrantBuilder clazz(Class cl); - + /** + * Sets the Certificate[] a CodeSource must have to receive the PermissionGrant. + * @param certs + * @return + */ public abstract PermissionGrantBuilder certificates(Certificate[] certs); - + /** + * Sets the Principal[] that a Subject must have to be entitled to receive + * the PermissionGrant. + * + * @param pals + * @return + */ public abstract PermissionGrantBuilder principals(Principal[] pals); - + /** + * Sets the Permission's that will be granted. + * @param perm + * @return + */ public abstract PermissionGrantBuilder permissions(Permission[] perm); - + /** + * An Exclusion specifically excludes some code from receiving a + * PermissionGrant. This may be to avoid a known security vulnerability, + * where code that we don't have control over allows a reference to + * escape without performing adequate security checks. + * + * EG: I trust code signed by XXX, but they have a security vulnerability + * in xxx.jar + * + * In the default implementation, this doesn't apply to Principal only + * grants, only Certificate and ClassLoader based grants. + * @param e + * @return + */ public abstract PermissionGrantBuilder exclude(Exclusion e); - + /** + * Build the PermissionGrant using information supplied. + * @return an appropriate PermissionGrant. + */ public abstract PermissionGrant build(); } Copied: river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/PermissionGrantBuilderImp.java (from r1152990, river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/util/PermissionGrantBuilderImp.java) URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/PermissionGrantBuilderImp.java?p2=river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/PermissionGrantBuilderImp.java&p1=river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/util/PermissionGrantBuilderImp.java&r1=1152990&r2=1153103&rev=1153103&view=diff ============================================================================== --- river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/util/PermissionGrantBuilderImp.java (original) +++ river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/PermissionGrantBuilderImp.java Tue Aug 2 11:57:55 2011 @@ -16,7 +16,7 @@ * limitations under the License. */ -package org.apache.river.impl.security.policy.util; +package org.apache.river.api.security; import java.io.IOException; import java.io.ObjectInputStream; @@ -33,21 +33,29 @@ import java.security.cert.Certificate; import org.apache.river.api.security.PermissionGrant; /** - * TODO: Document and complete Serializable. + * PermissionGrantBuilderImp represents the serialized form of all + * PermissionGrant implementations in this package. + * + * All implementations of PermissionGrant are immutable with final fields. + * + * PermissinGrantBuilderImp ensures the correct PermissionGrant implementation + * is returned, this reduces the + * * @author Peter Firmstone */ -public class PermissionGrantBuilderImp extends PermissionGrantBuilder implements +class PermissionGrantBuilderImp extends PermissionGrantBuilder implements Serializable{ private static final long serialVersionUID = 1L; private CodeSource cs; private Certificate[] certs; private transient WeakReference<ProtectionDomain> domain; + private boolean hasDomain; private Principal[] principals; private Permission[] permissions; private int context; private Exclusion deny; - public PermissionGrantBuilderImp() { + PermissionGrantBuilderImp() { super(); reset(); } @@ -60,6 +68,7 @@ public class PermissionGrantBuilderImp e cs = null; certs = null; domain = null; + hasDomain = false; principals = null; permissions = null; deny = null; @@ -87,6 +96,7 @@ public class PermissionGrantBuilderImp e ProtectionDomain pd = cl.getProtectionDomain(); if ( pd != null ){ domain = new WeakReference<ProtectionDomain>(pd); + hasDomain = true; CodeSource cdsrc = pd.getCodeSource(); if (cs == null) { cs = cdsrc; @@ -94,16 +104,19 @@ public class PermissionGrantBuilderImp e if (certs == null && cdsrc != null) { certs = cdsrc.getCertificates(); } - if (principals == null) { - principals = pd.getPrincipals(); - } - } + // No class should ever have any Principal's in it's ProtectionDomain + // Only a DomainCombiner should add principals. +// if (principals == null) { +// principals = pd.getPrincipals(); +// } + } } return this; } - public PermissionGrantBuilder setDomain(WeakReference<ProtectionDomain> pd) { + PermissionGrantBuilder setDomain(WeakReference<ProtectionDomain> pd) { domain = pd; + if ( domain != null) hasDomain = true; return this; } @@ -126,12 +139,14 @@ public class PermissionGrantBuilderImp e public PermissionGrant build() { switch (context) { case CLASSLOADER: + if (!hasDomain) return new PrincipalGrant(principals, permissions); return new ClassLoaderGrant(domain, principals, permissions ); case CODESOURCE: return new CodeSourceGrant(cs, principals, permissions ,null ); case CODESOURCE_CERTS: return new CertificateGrant(certs, principals, permissions, deny ); case PROTECTIONDOMAIN: + if (!hasDomain) return new PrincipalGrant(principals, permissions); return new ProtectionDomainGrant(domain, principals, permissions ); case PRINCIPAL: return new PrincipalGrant(principals, permissions); @@ -153,6 +168,13 @@ public class PermissionGrantBuilderImp e private void writeObject(ObjectOutputStream out) throws IOException{ out.defaultWriteObject(); + if (hasDomain){ + // In the event that this is a PROTECTIONDOMAIN or CLASSLOADER grant + // the PermissionGrant returned by the build method will be void. + domain = new WeakReference<ProtectionDomain>((ProtectionDomain) null); + } else { + domain = null; + } } // readResolve method returns a PermissionGrant instance. Copied: river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/PrincipalGrant.java (from r1152990, river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/util/PrincipalGrant.java) URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/PrincipalGrant.java?p2=river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/PrincipalGrant.java&p1=river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/util/PrincipalGrant.java&r1=1152990&r2=1153103&rev=1153103&view=diff ============================================================================== --- river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/util/PrincipalGrant.java (original) +++ river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/PrincipalGrant.java Tue Aug 2 11:57:55 2011 @@ -16,13 +16,11 @@ * limitations under the License. */ -package org.apache.river.impl.security.policy.util; +package org.apache.river.api.security; import java.io.InvalidObjectException; import java.io.ObjectInputStream; import java.io.Serializable; -import java.lang.ref.WeakReference; -import org.apache.river.api.security.PermissionGrantBuilder; import java.net.URL; import java.security.CodeSigner; import java.security.CodeSource; @@ -30,7 +28,6 @@ import java.security.Permission; import java.security.Principal; import java.security.ProtectionDomain; import java.security.acl.Group; -import java.security.cert.Certificate; import java.util.Arrays; import java.util.Collection; import java.util.Collections; @@ -38,8 +35,7 @@ import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Set; -import org.apache.river.api.security.Exclusion; -import org.apache.river.api.security.PermissionGrant; +import org.apache.river.impl.security.policy.util.PolicyUtils; /** * @@ -89,6 +85,25 @@ class PrincipalGrant implements Permissi public int hashCode() { return hashCode; } + + @Override + public String toString(){ + StringBuilder sb = new StringBuilder(300); + sb.append(this.getClass().getCanonicalName()) + .append("Permissions: \n"); + Iterator<Permission> permIt = perms.iterator(); + while (permIt.hasNext()){ + sb.append(permIt.next().toString()) + .append("\n"); + } + sb.append("Principals: \n"); + Iterator<Principal> palIt = pals.iterator(); + while (palIt.hasNext()){ + sb.append(palIt.next().toString()) + .append("\n"); + } + return sb.toString(); + } boolean implies(Principal[] prs) { if ( pals.isEmpty()) return true; @@ -182,7 +197,7 @@ class PrincipalGrant implements Permissi } public PermissionGrantBuilder getBuilderTemplate() { - PermissionGrantBuilder pgb = new PermissionGrantBuilderImp(); + PermissionGrantBuilder pgb = PermissionGrantBuilder.create(); pgb.context(PermissionGrantBuilder.PRINCIPAL) .principals(pals.toArray(new Principal[pals.size()])) .permissions(perms.toArray(new Permission[perms.size()])); Copied: river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/ProtectionDomainGrant.java (from r1139517, river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/util/ProtectionDomainGrant.java) URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/ProtectionDomainGrant.java?p2=river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/ProtectionDomainGrant.java&p1=river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/util/ProtectionDomainGrant.java&r1=1139517&r2=1153103&rev=1153103&view=diff ============================================================================== --- river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/util/ProtectionDomainGrant.java (original) +++ river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/ProtectionDomainGrant.java Tue Aug 2 11:57:55 2011 @@ -16,22 +16,24 @@ * limitations under the License. */ -package org.apache.river.impl.security.policy.util; +package org.apache.river.api.security; -import org.apache.river.api.security.PermissionGrantBuilder; +import java.io.InvalidObjectException; +import java.io.ObjectInputStream; import java.lang.ref.WeakReference; import java.security.CodeSource; import java.security.Permission; import java.security.Principal; import java.security.ProtectionDomain; -import org.apache.river.api.security.Exclusion; /** - * + * ProtectionDomainGrant's become void if serialized, since ProtectionDomain's + * cannot be serialized. + * * @author Peter Firmstone */ class ProtectionDomainGrant extends PrincipalGrant { - private final boolean hasDomain; + private static final long serialVersionUID = 1L; private final WeakReference<ProtectionDomain> domain; private final int hashCode; @@ -39,14 +41,9 @@ class ProtectionDomainGrant extends Prin ProtectionDomainGrant(WeakReference<ProtectionDomain> domain, Principal[] groups, Permission[] perm){ super(groups, perm); - if (domain == null){ - hasDomain = false; - }else{ - hasDomain = true; - } + if (domain == null) throw new IllegalArgumentException("domain cannot be null"); this.domain = domain; int hash = 7; - hash = 13 * hash + (this.hasDomain ? 1 : 0); hash = 13 * hash + (this.domain != null ? this.domain.hashCode() : 0); hash = 13 * hash + super.hashCode(); hashCode = hash; @@ -60,8 +57,7 @@ class ProtectionDomainGrant extends Prin if (o instanceof ProtectionDomainGrant){ ProtectionDomainGrant c = (ProtectionDomainGrant) o; if ( !super.equals(o)) return false; - if (domain.equals(c.domain) - && hasDomain == c.hasDomain) return true; + if (domain.equals(c.domain)) return true; } return false; } @@ -71,31 +67,47 @@ class ProtectionDomainGrant extends Prin return hashCode; } + public String toString(){ + StringBuilder sb = new StringBuilder(400); + sb.append(super.toString()) + .append("ProtectionDomain: \n"); + ProtectionDomain pd = domain.get(); + if (pd != null){ + sb.append(pd.toString()); + } else { + sb.append("Grant is void - ProtectionDomain is null"); + } + return sb.toString(); + } + + + @Override public boolean implies(ProtectionDomain pd){ return impliesProtectionDomain(pd) && implies(pd.getPrincipals()); } + @Override public boolean implies(ClassLoader cl, Principal[] pal) { return impliesClassLoader(cl) && implies(pal); } + @Override public boolean implies(CodeSource codeSource, Principal[] pal) { return impliesCodeSource(codeSource) && implies(pal); } /* - * Checks if passed ProtectionDomain matches this PermissionGrant. Null ProtectionDomain of - * PermissionGrant implies any ProtectionDomain; non-null ProtectionDomain's are + * Checks if passed ProtectionDomain matches this PermissionGrant. + * Non-null ProtectionDomain's are * compared with equals() and if false are compared by ClassLoader and * CodeSource, in case of new PermissionDomain's created by a DomainCombiner */ // for grant private boolean impliesProtectionDomain(ProtectionDomain pd) { // ProtectionDomain comparison - if (hasDomain == false) return true; if (pd == null) return false; - if (domain.get() == null ) return false; // hasDomain already true + if (domain.get() == null ) return false; // grant is void. if ( pd.equals(domain.get())) return true; // pd not null fast reference comparison if ( impliesClassLoader(pd.getClassLoader()) && impliesCodeSource(pd.getCodeSource())) { @@ -107,26 +119,26 @@ class ProtectionDomainGrant extends Prin // This is here for revoke and for new ProtectionDomain's created by the // DomainCombiner such as those in the SubjectDomainCombiner. private boolean impliesClassLoader(ClassLoader cl) { - if (hasDomain == false) return true; if (cl == null) return false; - if (domain.get() == null ) return false; // hasDomain already true + if (domain.get() == null ) return false; // is void. return domain.get().getClassLoader().equals(cl); // pd not null } // This is here for revoke and for new ProtectionDomain's created by the // DomainCombiner such as those in the SubjectDomainCombiner. - private boolean impliesCodeSource(CodeSource codeSource) { + private boolean impliesCodeSource(CodeSource codeSource) { ProtectionDomain pd = domain.get(); - if (pd == null) return true; + if (pd == null) return false; // is void - why did I have true? CodeSource cs = normalizeCodeSource(pd.getCodeSource()); - if (cs == null) return true; - if (codeSource == null) return false; + if (cs == codeSource) return true; // same reference. + if (cs == null && codeSource == null) return true; // if both null, whe pd exists. + if (cs == null) return false; // Null cs indicates system domain, does not imply. return cs.implies(normalizeCodeSource(codeSource)); } @Override public boolean isVoid(Exclusion excl) { if ( super.isVoid(null)) return true; - if (hasDomain == true && domain.get() == null) return true; + if (domain.get() == null) return true; return false; } @@ -140,5 +152,16 @@ class ProtectionDomainGrant extends Prin } return pgb; } + + //writeReplace method for serialization proxy pattern + private Object writeReplace() { + return getBuilderTemplate(); + } + + //readObject method for the serialization proxy pattern + private void readObject(ObjectInputStream stream) + throws InvalidObjectException{ + throw new InvalidObjectException("PermissionGrantBuilder required"); + } } Modified: river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/se/DynamicConcurrentPolicyProvider.java URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/se/DynamicConcurrentPolicyProvider.java?rev=1153103&r1=1153102&r2=1153103&view=diff ============================================================================== --- river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/se/DynamicConcurrentPolicyProvider.java (original) +++ river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/se/DynamicConcurrentPolicyProvider.java Tue Aug 2 11:57:55 2011 @@ -37,7 +37,6 @@ import org.apache.river.api.security.Per import org.apache.river.api.security.RemotePolicy; import org.apache.river.api.security.RevokePermission; import org.apache.river.api.security.RevokeableDynamicPolicy; -import org.apache.river.impl.security.policy.util.PermissionGrantBuilderImp; import org.apache.river.impl.security.policy.util.PolicyUtils; import org.apache.river.impl.util.ConcurrentCollections; import org.apache.river.impl.util.ConcurrentWeakIdentityMap; @@ -480,7 +479,7 @@ public class DynamicConcurrentPolicyProv return; } sm.checkPermission(new GrantPermission(permissions)); - PermissionGrantBuilder pgb = new PermissionGrantBuilderImp(); + PermissionGrantBuilder pgb = PermissionGrantBuilder.create(); PermissionGrant pe = pgb.clazz(cl).principals(principals) .permissions(permissions) .context(PermissionGrantBuilder.CLASSLOADER) Modified: river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/util/DefaultPolicyParser.java URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/util/DefaultPolicyParser.java?rev=1153103&r1=1153102&r2=1153103&view=diff ============================================================================== --- river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/util/DefaultPolicyParser.java (original) +++ river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/impl/security/policy/util/DefaultPolicyParser.java Tue Aug 2 11:57:55 2011 @@ -225,7 +225,7 @@ public class DefaultPolicyParser impleme } } } - PermissionGrantBuilder pgb = new PermissionGrantBuilderImp(); + PermissionGrantBuilder pgb = PermissionGrantBuilder.create(); return pgb.codeSource(new CodeSource(codebase, signers)) .principals(principals.toArray(new Principal[principals.size()])) .permissions(permissions.toArray(new Permission[permissions.size()])) Modified: river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/api/security/PermissionGrantTest.java URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/api/security/PermissionGrantTest.java?rev=1153103&r1=1153102&r2=1153103&view=diff ============================================================================== --- river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/api/security/PermissionGrantTest.java (original) +++ river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/api/security/PermissionGrantTest.java Tue Aug 2 11:57:55 2011 @@ -33,7 +33,6 @@ import java.security.cert.CertificateExc import java.security.cert.CertificateFactory; import org.apache.river.api.security.PermissionGrant; import org.apache.river.api.security.PermissionGrantBuilder; -import org.apache.river.impl.security.policy.util.PermissionGrantBuilderImp; /** @@ -61,7 +60,7 @@ public class PermissionGrantTest { } catch ( CertificateException e) { cf = null; } - pgb = new PermissionGrantBuilderImp(); + pgb = PermissionGrantBuilder.create(); cs0 = new CodeSource(null, (Certificate[]) null); cs10 = new CodeSource(new URL("file:"), (Certificate[]) null); cs11 = new CodeSource(new URL("file:/"), (Certificate[]) null); @@ -475,18 +474,18 @@ public class PermissionGrantTest { public void test92() { assertFalse(pe22.implies(cs10, (Principal[])null )); } - @Test - public void test93() { - assertFalse(pe22.implies(cs11, (Principal[]) null)); - } +// @Test +// public void test93() { +// assertFalse(pe22.implies(cs11, (Principal[]) null)); +// } @Test public void test94() { assertFalse(pe22.implies(cs12, (Principal[])null )); } - @Test - public void test95() { - assertFalse(pe22.implies(cs13,(Principal[])null )); - } +// @Test +// public void test95() { +// assertFalse(pe22.implies(cs13,(Principal[])null )); +// } @Test public void test96() { assertFalse(pe22.implies(cs20, (Principal[])null )); @@ -703,10 +702,10 @@ public class PermissionGrantTest { public void test149() { assertFalse(pe32.implies(cs21, (Principal[])null )); } - @Test - public void test150() { - assertFalse(pe32.implies(cs22, (Principal[])null )); - } +// @Test +// public void test150() { +// assertFalse(pe32.implies(cs22, (Principal[])null )); +// } @Test public void test151() { assertFalse(pe32.implies(cs23, (Principal[])null )); Copied: river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/api/security/PrincipalGrantTest.java (from r1152990, river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/security/policy/util/PrincipalGrantTest.java) URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/api/security/PrincipalGrantTest.java?p2=river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/api/security/PrincipalGrantTest.java&p1=river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/security/policy/util/PrincipalGrantTest.java&r1=1152990&r2=1153103&rev=1153103&view=diff ============================================================================== --- river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/security/policy/util/PrincipalGrantTest.java (original) +++ river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/api/security/PrincipalGrantTest.java Tue Aug 2 11:57:55 2011 @@ -2,23 +2,22 @@ * To change this template, choose Tools | Templates * and open the template in the editor. */ -package org.apache.river.impl.security.policy.util; +package org.apache.river.api.security; +import java.security.cert.CertificateException; +import java.security.cert.Certificate; +import java.security.cert.CertificateFactory; import tests.support.MyPrincipal; -import java.io.Serializable; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.security.Permission; -import java.security.CodeSource; import java.security.Principal; import java.security.ProtectionDomain; +import java.util.Arrays; import java.util.Collection; -import java.util.logging.Level; -import java.util.logging.Logger; -import org.apache.river.api.security.Exclusion; import org.apache.river.api.security.PermissionGrantBuilder; import org.junit.AfterClass; import org.junit.Before; @@ -34,7 +33,17 @@ public class PrincipalGrantTest { public PrincipalGrantTest() { } - + + Principal pal1; + Principal pal2; + Principal[] pals; + Permission perm1; + Permission perm2; + Permission[] perms; + PrincipalGrant instance; + CertificateFactory cf; + Certificate[] certs1, certs2; + @BeforeClass public static void setUpClass() throws Exception { } @@ -45,156 +54,77 @@ public class PrincipalGrantTest { @Before public void setUp() { + try { + cf = CertificateFactory.getInstance("X.509"); + } catch ( CertificateException e) { + cf = null; + } + pal1 = new MyPrincipal("Test Principal 1"); + pal2 = new MyPrincipal("Test Principal 2"); + pals = new Principal[2]; + pals[0]= pal1; + pals[1]= pal2; + perm1 = new RuntimePermission("getProtationDomain"); + perm2 = new RuntimePermission("getClassLoader"); + perms = new Permission[2]; + perms[0] = perm1; + perms[1] = perm2; + instance = new PrincipalGrant(pals,perms); } /** * Test of equals method, of class PrincipalGrant. */ -// @Test -// public void testEquals() { -// System.out.println("equals"); -// Object o = null; -// PrincipalGrant instance = null; -// boolean expResult = false; -// boolean result = instance.equals(o); -// assertEquals(expResult, result); -// // TODO review the generated test code and remove the default call to fail. -// fail("The test case is a prototype."); -// } -// -// /** -// * Test of hashCode method, of class PrincipalGrant. -// */ -// @Test -// public void testHashCode() { -// System.out.println("hashCode"); -// PrincipalGrant instance = null; -// int expResult = 0; -// int result = instance.hashCode(); -// assertEquals(expResult, result); -// // TODO review the generated test code and remove the default call to fail. -// fail("The test case is a prototype."); -// } -// -// /** -// * Test of implies method, of class PrincipalGrant. -// */ -// @Test -// public void testImplies_PrincipalArr() { -// System.out.println("implies"); -// Principal[] prs = null; -// PrincipalGrant instance = null; -// boolean expResult = false; -// boolean result = instance.implies(prs); -// assertEquals(expResult, result); -// // TODO review the generated test code and remove the default call to fail. -// fail("The test case is a prototype."); -// } -// -// /** -// * Test of normalizeCodeSource method, of class PrincipalGrant. -// */ -// @Test -// public void testNormalizeCodeSource() { -// System.out.println("normalizeCodeSource"); -// CodeSource codeSource = null; -// PrincipalGrant instance = null; -// CodeSource expResult = null; -// CodeSource result = instance.normalizeCodeSource(codeSource); -// assertEquals(expResult, result); -// // TODO review the generated test code and remove the default call to fail. -// fail("The test case is a prototype."); -// } -// -// /** -// * Test of implies method, of class PrincipalGrant. -// */ -// @Test -// public void testImplies_ProtectionDomain() { -// System.out.println("implies"); -// ProtectionDomain pd = null; -// PrincipalGrant instance = null; -// boolean expResult = false; -// boolean result = instance.implies(pd); -// assertEquals(expResult, result); -// // TODO review the generated test code and remove the default call to fail. -// fail("The test case is a prototype."); -// } -// -// /** -// * Test of implies method, of class PrincipalGrant. -// */ -// @Test -// public void testImplies_ClassLoader_PrincipalArr() { -// System.out.println("implies"); -// ClassLoader cl = null; -// Principal[] pal = null; -// PrincipalGrant instance = null; -// boolean expResult = false; -// boolean result = instance.implies(cl, pal); -// assertEquals(expResult, result); -// // TODO review the generated test code and remove the default call to fail. -// fail("The test case is a prototype."); -// } -// -// /** -// * Test of implies method, of class PrincipalGrant. -// */ -// @Test -// public void testImplies_CodeSource_PrincipalArr() { -// System.out.println("implies"); -// CodeSource codeSource = null; -// Principal[] pal = null; -// PrincipalGrant instance = null; -// boolean expResult = false; -// boolean result = instance.implies(codeSource, pal); -// assertEquals(expResult, result); -// // TODO review the generated test code and remove the default call to fail. -// fail("The test case is a prototype."); -// } -// -// /** -// * Test of getBuilderTemplate method, of class PrincipalGrant. -// */ -// @Test -// public void testGetBuilderTemplate() { -// System.out.println("getBuilderTemplate"); -// PrincipalGrant instance = null; -// PermissionGrantBuilder expResult = null; -// PermissionGrantBuilder result = instance.getBuilderTemplate(); -// assertEquals(expResult, result); -// // TODO review the generated test code and remove the default call to fail. -// fail("The test case is a prototype."); -// } -// -// /** -// * Test of getPermissions method, of class PrincipalGrant. -// */ -// @Test -// public void testGetPermissions() { -// System.out.println("getPermissions"); -// PrincipalGrant instance = null; -// Collection expResult = null; -// Collection result = instance.getPermissions(); -// assertEquals(expResult, result); -// // TODO review the generated test code and remove the default call to fail. -// fail("The test case is a prototype."); -// } -// -// /** -// * Test of isVoid method, of class PrincipalGrant. -// */ -// @Test -// public void testIsVoid() { -// System.out.println("isVoid"); -// Exclusion excl = null; -// PrincipalGrant instance = null; -// boolean expResult = false; -// boolean result = instance.isVoid(excl); -// assertEquals(expResult, result); -// // TODO review the generated test code and remove the default call to fail. -// fail("The test case is a prototype."); -// } + @Test + public void testEquals() { + System.out.println("equals"); + Object o = PermissionGrantBuilder.create() + .principals(pals) + .permissions(perms) + .context(PermissionGrantBuilder.PRINCIPAL) + .build(); + Object o2 = new Object(); + boolean result = instance.equals(o); + assertEquals(true, result); + result = instance.equals(o2); + assertEquals(false, result); + } + + + /** + * Test of implies method, of class PrincipalGrant. + */ + @Test + public void testImplies_PrincipalArr() { + System.out.println("implies"); + Principal[] prs = new Principal[0]; + boolean expResult = false; + boolean result = instance.implies(prs); + assertEquals(expResult, result); + } + + /** + * Test of getBuilderTemplate method, of class PrincipalGrant. + */ + @Test + public void testGetBuilderTemplate() { + System.out.println("getBuilderTemplate"); + PermissionGrantBuilder pgb = instance.getBuilderTemplate(); + PermissionGrant pg = pgb.build(); + assertFalse(pg == instance); // we might change this if we create an object pool + assertEquals(instance, pg); + } + + /** + * Test of getPermissions method, of class PrincipalGrant. + */ + @Test + public void testGetPermissions() { + System.out.println("getPermissions"); + Collection expResult = Arrays.asList(perms); + Collection result = instance.getPermissions(); + assertTrue(result.containsAll(expResult)); + } /** * Test of readResolve method, of class PrincipalGrant. @@ -202,17 +132,6 @@ public class PrincipalGrantTest { @Test public void testSerialization() { System.out.println("Serialization test"); - Principal pal1 = new MyPrincipal("Test Principal 1"); - Principal pal2 = new MyPrincipal("Test Principal 2"); - Principal[] pals = new Principal[2]; - pals[0]= pal1; - pals[1]= pal2; - Permission perm1 = new RuntimePermission("getProtationDomain"); - Permission perm2 = new RuntimePermission("getClassLoader"); - Permission[] perms = new Permission[2]; - perms[0] = perm1; - perms[1] = perm2; - PrincipalGrant instance = new PrincipalGrant(pals,perms); PrincipalGrant result = null; ObjectOutputStream out = null; ObjectInputStream in = null; Modified: river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/security/policy/se/ConcurrentPolicyFileTest.java URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/security/policy/se/ConcurrentPolicyFileTest.java?rev=1153103&r1=1153102&r2=1153103&view=diff ============================================================================== --- river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/security/policy/se/ConcurrentPolicyFileTest.java (original) +++ river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/security/policy/se/ConcurrentPolicyFileTest.java Tue Aug 2 11:57:55 2011 @@ -33,7 +33,6 @@ import java.security.ProtectionDomain; import java.security.SecurityPermission; import java.util.Arrays; import java.util.Collection; -import java.util.HashSet; import java.util.Properties; import org.apache.river.impl.security.policy.util.UnresolvedPrincipal; import org.apache.river.impl.security.policy.util.DefaultPolicyParser; @@ -41,7 +40,6 @@ import junit.framework.TestCase; import org.apache.river.api.security.PermissionGrant; import org.apache.river.api.security.PermissionGrantBuilder; import org.apache.river.impl.security.policy.se.ConcurrentPolicyFile; -import org.apache.river.impl.security.policy.util.PermissionGrantBuilderImp; /** @@ -76,7 +74,7 @@ public class ConcurrentPolicyFileTest ex */ public void testRefresh() { Permission sp = new SecurityPermission("sdf"); - PermissionGrantBuilder pgb = new PermissionGrantBuilderImp(); + PermissionGrantBuilder pgb = PermissionGrantBuilder.create(); PermissionGrant[] pe = new PermissionGrant[] { pgb.codeSource(null).principals(null) .permissions(new Permission[] { sp }) @@ -111,7 +109,7 @@ public class ConcurrentPolicyFileTest ex * @throws java.lang.Exception */ public void testGetPermissions_CodeSource() throws Exception { - PermissionGrantBuilder pgb = new PermissionGrantBuilderImp(); + PermissionGrantBuilder pgb = PermissionGrantBuilder.create(); CodeSource cs = new CodeSource(null, (Certificate[])null); CodeSource cs2 = new CodeSource(new URL("http://a.b.c"), (Certificate[])null); @@ -146,7 +144,7 @@ public class ConcurrentPolicyFileTest ex * @throws java.lang.Exception */ public void testGetPermissions_ProtectionDomain() throws Exception { - PermissionGrantBuilder pgb = new PermissionGrantBuilderImp(); + PermissionGrantBuilder pgb = PermissionGrantBuilder.create(); Permission sp1 = new SecurityPermission("aaa"); Permission sp2 = new SecurityPermission("bbb"); Permission sp3 = new SecurityPermission("ccc"); Modified: river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/security/policy/util/PolicyEntryTest.java URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/security/policy/util/PolicyEntryTest.java?rev=1153103&r1=1153102&r2=1153103&view=diff ============================================================================== --- river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/security/policy/util/PolicyEntryTest.java (original) +++ river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/security/policy/util/PolicyEntryTest.java Tue Aug 2 11:57:55 2011 @@ -22,7 +22,6 @@ package org.apache.river.impl.security.policy.util; -import org.apache.river.impl.security.policy.util.PermissionGrantBuilderImp; import org.apache.river.impl.security.policy.util.UnresolvedPrincipal; import java.net.URL; import java.security.cert.Certificate; @@ -52,7 +51,7 @@ public class PolicyEntryTest extends Tes * Tests constructor and accessors of PolicyEntry */ public void testCtor() { - PermissionGrantBuilder pgb = new PermissionGrantBuilderImp(); + PermissionGrantBuilder pgb = PermissionGrantBuilder.create(); PermissionGrant pe = pgb.build(); //everything set to null // PolicyEntry pe = // new PolicyEntry((CodeSource) null, (Collection<Principal>) null, @@ -82,7 +81,7 @@ public class PolicyEntryTest extends Tes * otherwise tested set must contain all Principals of PolicyEntry. */ public void testImpliesPrincipals() { - PermissionGrantBuilder pgb = new PermissionGrantBuilderImp(); + PermissionGrantBuilder pgb = PermissionGrantBuilder.create(); PermissionGrant pe = pgb.build(); // Everything set to null; // PolicyEntry pe =
