You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by al...@apache.org on 2009/06/10 20:15:02 UTC
svn commit: r783440 - in /openjpa/trunk:
openjpa-lib/src/main/java/org/apache/openjpa/lib/util/
openjpa-persistence-jdbc/src/test/resources/
openjpa-persistence/src/test/java/org/apache/openjpa/persistence/
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.");
}
}