|
|
|
allee8285-2
|
Author: allee8285
Date: Wed Jun 10 18:15:01 2009 New Revision: 783440 URL: http://svn.apache.org/viewvc?rev=783440&view=rev Log: OPENJPA-932 - Enable test case to be Java 2 security compliance. Modified: openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/J2DoPrivHelper.java openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/j2.security.test.policy openjpa/trunk/openjpa-persistence/src/test/java/org/apache/openjpa/persistence/TestPersistenceProductDerivation.java Modified: openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/J2DoPrivHelper.java URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/J2DoPrivHelper.java?rev=783440&r1=783439&r2=783440&view=diff ============================================================================== --- openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/J2DoPrivHelper.java (original) +++ openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/J2DoPrivHelper.java Wed Jun 10 18:15:01 2009 @@ -69,6 +69,7 @@ * <li>ClassLoader.getResource * <li>ClassLoader.getResources * <li>ClassLoader.getSystemClassLoader + * <li>File.deleteOnExit * <li>File.delete * <li>File.exists * <li>File.getAbsoluteFile @@ -90,6 +91,7 @@ * <li>Socket.accept * <li>System.getProperty * <li>Thread.getContextClassLoader + * <li>Thread.setContextClassLoader * <li>Thread new * <li>TemporaryClassLoader new * <li>URL.openStream @@ -475,6 +477,22 @@ } /** + * Return a PrivilegeAction object for f.deleteOnExit(). + * + * Requires security policy: + * 'permission java.io.FilePermission "delete";' + */ + public static final PrivilegedAction<Boolean> deleteOnExitAction( + final File f) { + return new PrivilegedAction<Boolean>() { + public Boolean run() { + f.deleteOnExit(); + return Boolean.TRUE; + } + }; + } + + /** * Return a PrivilegeAction object for f.getAbsoluteFile(). * * Requires security policy: @@ -827,6 +845,25 @@ } /** + * Return a PrivilegeAction object for Thread.currentThread + * .setContextClassLoader(). + * + * Requires security policy: + * 'permission java.lang.RuntimePermission "setContextClassLoader";' + * + * @return ClassLoader + */ + public static final PrivilegedAction<Boolean> + setContextClassLoaderAction(final ClassLoader loader) { + return new PrivilegedAction<Boolean>() { + public Boolean run() { + Thread.currentThread().setContextClassLoader(loader); + return Boolean.TRUE; + } + }; + } + + /** * Return a PrivilegedAction object for new Thread(). * * Requires security policy: Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/j2.security.test.policy URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/j2.security.test.policy?rev=783440&r1=783439&r2=783440&view=diff ============================================================================== --- openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/j2.security.test.policy (original) +++ openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/j2.security.test.policy Wed Jun 10 18:15:01 2009 @@ -29,11 +29,12 @@ grant CodeBase "file:///${test.basedir}/-" { - permission java.io.FilePermission "<<ALL FILES>>", "read,write"; + permission java.io.FilePermission "<<ALL FILES>>", "read,write,delete"; permission java.io.SerializablePermission "enableSubstitution"; permission java.lang.RuntimePermission "accessDeclaredMembers"; permission java.lang.RuntimePermission "createClassLoader"; permission java.lang.RuntimePermission "getClassLoader"; + permission java.lang.RuntimePermission "setContextClassLoader"; permission java.lang.RuntimePermission "setIO"; permission java.lang.reflect.ReflectPermission "suppressAccessChecks"; permission java.util.PropertyPermission "*", "read,write"; Modified: openjpa/trunk/openjpa-persistence/src/test/java/org/apache/openjpa/persistence/TestPersistenceProductDerivation.java URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/test/java/org/apache/openjpa/persistence/TestPersistenceProductDerivation.java?rev=783440&r1=783439&r2=783440&view=diff ============================================================================== --- openjpa/trunk/openjpa-persistence/src/test/java/org/apache/openjpa/persistence/TestPersistenceProductDerivation.java (original) +++ openjpa/trunk/openjpa-persistence/src/test/java/org/apache/openjpa/persistence/TestPersistenceProductDerivation.java Wed Jun 10 18:15:01 2009 @@ -25,11 +25,14 @@ import java.io.FileOutputStream; import java.net.URL; import java.net.URLClassLoader; +import java.security.AccessController; import java.util.Arrays; import java.util.List; import java.util.jar.JarEntry; import java.util.jar.JarOutputStream; +import org.apache.openjpa.lib.util.J2DoPrivHelper; + import junit.framework.TestCase; public class TestPersistenceProductDerivation extends TestCase { @@ -57,7 +60,8 @@ "TestPersistenceProductDerivation_generated_" + System.currentTimeMillis() + ".jar"); - targetFile.deleteOnExit(); + AccessController.doPrivileged(J2DoPrivHelper + .deleteOnExitAction(targetFile)); buildJar(sourceFile,targetFile); // Hold a reference to the current classloader so we can cleanup @@ -65,8 +69,8 @@ originalLoader = Thread.currentThread().getContextClassLoader(); tempLoader = new TempUrlLoader(new URL[]{targetFile.toURI().toURL()} ,originalLoader); - Thread.currentThread().setContextClassLoader(tempLoader); - + AccessController.doPrivileged(J2DoPrivHelper + .setContextClassLoaderAction(tempLoader)); } protected void tearDown() throws Exception { @@ -77,8 +81,10 @@ // For whatever reason, this file won't ever delete. I searched around // and found numerous documented problems with deleting files. Perhaps // sometime in the future this problem will be fixed. For now it doesn't - // really matter since we generate a new file every time. - if(targetFile.delete()==false){ + // really matter since we generate a new file every time. + boolean deleted = AccessController.doPrivileged(J2DoPrivHelper + .deleteAction(targetFile)); + if(deleted==false){ System.out.println("The file " + targetFile + " wasn't deleted."); } } |
||||||||||||||||
| Free Embeddable Forum Powered by Nabble | Help |