You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by mi...@apache.org on 2009/06/16 19:36:14 UTC

svn commit: r785314 - in /openjpa/branches/1.3.x: 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: mikedd
Date: Tue Jun 16 17:36:14 2009
New Revision: 785314

URL: http://svn.apache.org/viewvc?rev=785314&view=rev
Log:
OPENJPA-932 - Enable test case to be Java 2 security compliance.

(cherry picked from commit 7b06c5cfbf04d203ba55920ff120c3e6469e69e9)

Modified:
    openjpa/branches/1.3.x/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/J2DoPrivHelper.java
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/resources/j2.security.test.policy
    openjpa/branches/1.3.x/openjpa-persistence/src/test/java/org/apache/openjpa/persistence/TestPersistenceProductDerivation.java

Modified: openjpa/branches/1.3.x/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/J2DoPrivHelper.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/J2DoPrivHelper.java?rev=785314&r1=785313&r2=785314&view=diff
==============================================================================
--- openjpa/branches/1.3.x/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/J2DoPrivHelper.java (original)
+++ openjpa/branches/1.3.x/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/J2DoPrivHelper.java Tue Jun 16 17:36:14 2009
@@ -60,6 +60,7 @@
  * <li>ClassLoader.getResource
  * <li>ClassLoader.getResources
  * <li>ClassLoader.getSystemClassLoader
+ * <li>File.deleteOnExit
  * <li>File.delete
  * <li>File.exists
  * <li>File.getAbsoluteFile
@@ -81,6 +82,7 @@
  * <li>Socket.accept
  * <li>System.getProperty
  * <li>Thread.getContextClassLoader
+ * <li>Thread.setContextClassLoader
  * <li>Thread new
  * <li>TemporaryClassLoader new
  * <li>URL.openStream
@@ -450,6 +452,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:
@@ -791,6 +809,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/branches/1.3.x/openjpa-persistence-jdbc/src/test/resources/j2.security.test.policy
URL: http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/resources/j2.security.test.policy?rev=785314&r1=785313&r2=785314&view=diff
==============================================================================
--- openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/resources/j2.security.test.policy (original)
+++ openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/resources/j2.security.test.policy Tue Jun 16 17:36:14 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/branches/1.3.x/openjpa-persistence/src/test/java/org/apache/openjpa/persistence/TestPersistenceProductDerivation.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-persistence/src/test/java/org/apache/openjpa/persistence/TestPersistenceProductDerivation.java?rev=785314&r1=785313&r2=785314&view=diff
==============================================================================
--- openjpa/branches/1.3.x/openjpa-persistence/src/test/java/org/apache/openjpa/persistence/TestPersistenceProductDerivation.java (original)
+++ openjpa/branches/1.3.x/openjpa-persistence/src/test/java/org/apache/openjpa/persistence/TestPersistenceProductDerivation.java Tue Jun 16 17:36:14 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.");
         }
     }