[jboss-cvs] JBossAS SVN: r84304 - in projects/aop/trunk: asintegration-jmx/src/test/java/org/jboss/test/aop/classpool/ucl/test and 2 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Feb 17 07:44:29 EST 2009
Author: kabir.khan at jboss.com
Date: 2009-02-17 07:44:29 -0500 (Tue, 17 Feb 2009)
New Revision: 84304
Added:
projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/support/AlwaysWritablePermissionCollectionTestPolicyPlugin.java
projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/AlwaysWritablePermissionCollectionTestPolicyPluginTestDelegate.java
Modified:
projects/aop/trunk/asintegration-core/src/test/java/org/jboss/test/aop/classpool/test/ClassPoolTest.java
projects/aop/trunk/asintegration-jmx/src/test/java/org/jboss/test/aop/classpool/ucl/test/UclClassPoolTest.java
projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/ClassPoolWithReplaceReferencesTestCase.java
projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/JBossClClassPoolTest.java
projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/JBossClClassPoolTestDelegate.java
Log:
[JBAOP-666] Turn on security for the tests
Modified: projects/aop/trunk/asintegration-core/src/test/java/org/jboss/test/aop/classpool/test/ClassPoolTest.java
===================================================================
--- projects/aop/trunk/asintegration-core/src/test/java/org/jboss/test/aop/classpool/test/ClassPoolTest.java 2009-02-17 10:51:18 UTC (rev 84303)
+++ projects/aop/trunk/asintegration-core/src/test/java/org/jboss/test/aop/classpool/test/ClassPoolTest.java 2009-02-17 12:44:29 UTC (rev 84304)
@@ -77,7 +77,11 @@
public static AbstractTestDelegate getDelegate(Class<?> clazz) throws Exception
{
- return new ClassPoolTestDelegate(clazz);
+ AbstractTestDelegate delegate = new ClassPoolTestDelegate(clazz);
+ String property = System.getProperty("jboss.aop.secure", "true");
+ boolean enableSecurity = Boolean.valueOf(property).booleanValue();
+ delegate.enableSecurity = enableSecurity;
+ return delegate;
}
protected static ClassPoolDomain createClassPoolDomain(String name, ClassPoolDomain parent, boolean parentFirst)
Modified: projects/aop/trunk/asintegration-jmx/src/test/java/org/jboss/test/aop/classpool/ucl/test/UclClassPoolTest.java
===================================================================
--- projects/aop/trunk/asintegration-jmx/src/test/java/org/jboss/test/aop/classpool/ucl/test/UclClassPoolTest.java 2009-02-17 10:51:18 UTC (rev 84303)
+++ projects/aop/trunk/asintegration-jmx/src/test/java/org/jboss/test/aop/classpool/ucl/test/UclClassPoolTest.java 2009-02-17 12:44:29 UTC (rev 84304)
@@ -107,7 +107,11 @@
public static AbstractTestDelegate getDelegate(Class<?> clazz) throws Exception
{
- return new UclClassPoolTestDelegate(clazz);
+ AbstractTestDelegate delegate = new UclClassPoolTestDelegate(clazz);
+ String property = System.getProperty("jboss.aop.secure", "true");
+ boolean enableSecurity = Boolean.valueOf(property).booleanValue();
+ delegate.enableSecurity = enableSecurity;
+ return delegate;
}
protected static URL getURLRelativeToProjectRoot(String relativePath)
Added: projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/support/AlwaysWritablePermissionCollectionTestPolicyPlugin.java
===================================================================
--- projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/support/AlwaysWritablePermissionCollectionTestPolicyPlugin.java (rev 0)
+++ projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/support/AlwaysWritablePermissionCollectionTestPolicyPlugin.java 2009-02-17 12:44:29 UTC (rev 84304)
@@ -0,0 +1,118 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.aop.classpool.jbosscl.support;
+
+import java.security.CodeSource;
+import java.security.Permission;
+import java.security.PermissionCollection;
+import java.security.SecurityPermission;
+import java.util.Enumeration;
+import java.util.PropertyPermission;
+
+import org.jboss.test.security.TestsPolicyPlugin;
+
+/**
+ * The original TestPolicyPlugin reuses the underlying PermissionCollection. This causes problems
+ * for tests creating several ProtectionDomains, since the ProtectionDomain's constructor
+ * marks the PolicyCollection as read-only so we get errors
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class AlwaysWritablePermissionCollectionTestPolicyPlugin extends TestsPolicyPlugin
+{
+ public AlwaysWritablePermissionCollectionTestPolicyPlugin(Class<?> clazz)
+ {
+ super(clazz);
+ }
+
+ public synchronized PermissionCollection getPermissions(CodeSource codesource)
+ {
+ return new AlwaysWritablePermissionCollection(super.getPermissions(codesource));
+ }
+
+ public static void initialisePlugin()
+ {
+ System.setProperty("org.jboss.test.security.PolicyPlugin", AlwaysWritablePermissionCollectionTestPolicyPlugin.class.getName());
+ }
+
+ public static void cleanupPlugin()
+ {
+ System.clearProperty("org.jboss.test.security.PolicyPlugin");
+ }
+
+ private static class AlwaysWritablePermissionCollection extends PermissionCollection
+ {
+ private static final long serialVersionUID = 1L;
+
+ volatile PermissionCollection lastDelegate;
+ volatile PermissionCollection delegate;
+
+ final static Permission GET_POLICY = new SecurityPermission("getPolicy");
+ final static Permission PARENT_PKGS = new PropertyPermission("jboss.test.parent.pkgs", "read");
+
+ private AlwaysWritablePermissionCollection(PermissionCollection delegate)
+ {
+ this.delegate = delegate;
+ }
+
+ public void add(Permission permission)
+ {
+ delegate.add(permission);
+ }
+
+ public Enumeration<Permission> elements()
+ {
+ return delegate.elements();
+ }
+
+ public boolean equals(Object obj)
+ {
+ return delegate.equals(obj);
+ }
+
+ public int hashCode()
+ {
+ return delegate.hashCode();
+ }
+
+ public boolean implies(Permission permission)
+ {
+ return delegate.implies(permission);
+ }
+
+ public boolean isReadOnly()
+ {
+ return delegate.isReadOnly();
+ }
+
+ public void setReadOnly()
+ {
+ //ignore
+ }
+
+ public String toString()
+ {
+ return delegate.toString();
+ }
+ }
+}
Added: projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/AlwaysWritablePermissionCollectionTestPolicyPluginTestDelegate.java
===================================================================
--- projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/AlwaysWritablePermissionCollectionTestPolicyPluginTestDelegate.java (rev 0)
+++ projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/AlwaysWritablePermissionCollectionTestPolicyPluginTestDelegate.java 2009-02-17 12:44:29 UTC (rev 84304)
@@ -0,0 +1,53 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.aop.classpool.jbosscl.test;
+
+import org.jboss.test.aop.classpool.jbosscl.support.AlwaysWritablePermissionCollectionTestPolicyPlugin;
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class AlwaysWritablePermissionCollectionTestPolicyPluginTestDelegate extends JBossClClassPoolTestDelegate
+{
+ public AlwaysWritablePermissionCollectionTestPolicyPluginTestDelegate(Class<?> clazz) throws Exception
+ {
+ super(clazz);
+ }
+
+ @Override
+ protected void setUpSecurity() throws Exception
+ {
+ AlwaysWritablePermissionCollectionTestPolicyPlugin.initialisePlugin();
+ super.setUpSecurity();
+ }
+
+ @Override
+ public void tearDownSecurity() throws Exception
+ {
+ super.tearDownSecurity();
+ AlwaysWritablePermissionCollectionTestPolicyPlugin.cleanupPlugin();
+ }
+
+
+}
Modified: projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/ClassPoolWithReplaceReferencesTestCase.java
===================================================================
--- projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/ClassPoolWithReplaceReferencesTestCase.java 2009-02-17 10:51:18 UTC (rev 84303)
+++ projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/ClassPoolWithReplaceReferencesTestCase.java 2009-02-17 12:44:29 UTC (rev 84304)
@@ -21,18 +21,13 @@
*/
package org.jboss.test.aop.classpool.jbosscl.test;
-import java.lang.instrument.IllegalClassFormatException;
import java.lang.reflect.Method;
import java.net.URL;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
import java.security.ProtectionDomain;
import java.util.Collection;
-import org.jboss.aop.AspectManager;
-import org.jboss.aop.classpool.AOPClassPool;
-import org.jboss.aop.classpool.AOPClassPoolRepository;
-import org.jboss.classloading.spi.DomainClassLoader;
-import org.jboss.util.loading.Translator;
-
import javassist.ClassPool;
import javassist.CodeConverter;
import javassist.CtClass;
@@ -43,6 +38,13 @@
import javassist.Modifier;
import junit.framework.Test;
+import org.jboss.aop.AspectManager;
+import org.jboss.aop.classpool.AOPClassPool;
+import org.jboss.aop.classpool.AOPClassPoolRepository;
+import org.jboss.classloading.spi.DomainClassLoader;
+import org.jboss.test.AbstractTestDelegate;
+import org.jboss.util.loading.Translator;
+
/**
* Test that field/constructor wrapper replacement works since there were some problems in AS5
*
@@ -83,6 +85,11 @@
return suite(ClassPoolWithReplaceReferencesTestCase.class);
}
+ public static AbstractTestDelegate getDelegate(Class<?> clazz) throws Exception
+ {
+ return new AlwaysWritablePermissionCollectionTestPolicyPluginTestDelegate(clazz);
+ }
+
public void testParentLoadedParentDelegation() throws Exception
{
ClassPool globalPool = null;
@@ -297,12 +304,18 @@
}
}
- private void replaceReferences(CtClass clazz) throws Exception
+ private void replaceReferences(final CtClass clazz) throws Exception
{
CodeConverter conv = new CodeConverter();
AOPClassPool pool = AOPClassPool
.createAOPClassPool(clazz.getClassPool(), AOPClassPoolRepository.getInstance());
- Collection<String> refs = clazz.getRefClasses();
+ Collection<String> refs = AccessController.doPrivileged(new PrivilegedAction<Collection<String>>() {
+
+ public Collection<String> run()
+ {
+ return clazz.getRefClasses();
+ }});
+
for (String ref : refs)
{
if (ref.startsWith(PACKAGE_REPLACEMENT_CHILD) || ref.startsWith(PACKAGE_REPLACEMENT_PARENT))
Modified: projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/JBossClClassPoolTest.java
===================================================================
--- projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/JBossClClassPoolTest.java 2009-02-17 10:51:18 UTC (rev 84303)
+++ projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/JBossClClassPoolTest.java 2009-02-17 12:44:29 UTC (rev 84304)
@@ -155,11 +155,13 @@
super(name);
}
+
public static AbstractTestDelegate getDelegate(Class<?> clazz) throws Exception
{
return new JBossClClassPoolTestDelegate(clazz);
}
+
protected static URL getURLRelativeToProjectRoot(String relativePath)
{
try
Modified: projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/JBossClClassPoolTestDelegate.java
===================================================================
--- projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/JBossClClassPoolTestDelegate.java 2009-02-17 10:51:18 UTC (rev 84303)
+++ projects/aop/trunk/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/JBossClClassPoolTestDelegate.java 2009-02-17 12:44:29 UTC (rev 84304)
@@ -34,5 +34,8 @@
public JBossClClassPoolTestDelegate(Class<?> clazz) throws Exception
{
super(clazz);
+ String property = System.getProperty("jboss.aop.secure", "true");
+ boolean enableSecurity = Boolean.valueOf(property).booleanValue();
+ this.enableSecurity = enableSecurity;
}
}
More information about the jboss-cvs-commits
mailing list