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 2007/07/03 23:55:33 UTC

svn commit: r552996 [2/3] - in /openjpa/trunk: ./ openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/ant/ openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/conf/ openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ openjpa-jdbc/src/main/java/org/a...

Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java Tue Jul  3 14:55:29 2007
@@ -22,6 +22,7 @@
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
+import java.security.AccessController;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -42,6 +43,7 @@
 import org.apache.openjpa.enhance.Reflection;
 import org.apache.openjpa.lib.log.Log;
 import org.apache.openjpa.lib.meta.SourceTracker;
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
 import org.apache.openjpa.lib.util.Localizer;
 import org.apache.openjpa.lib.xml.Commentable;
 import org.apache.openjpa.util.ByteId;
@@ -843,7 +845,8 @@
         if (getDeclaredField(field) != null)
             return true;
         if (_staticFields == null) {
-            Field[] fields = _type.getDeclaredFields();
+            Field[] fields = (Field[])AccessController.doPrivileged( 
+                J2DoPrivHelper.getDeclaredFieldsAction( _type )); 
             Set names = new HashSet((int) (fields.length * 1.33 + 1));
             for (int i = 0; i < fields.length; i++)
                 if (Modifier.isStatic(fields[i].getModifiers()))

Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/FieldMetaData.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/FieldMetaData.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/FieldMetaData.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/FieldMetaData.java Tue Jul  3 14:55:29 2007
@@ -28,6 +28,8 @@
 import java.lang.reflect.Member;
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Collection;
@@ -50,6 +52,7 @@
 import org.apache.openjpa.kernel.StoreContext;
 import org.apache.openjpa.lib.conf.Configurations;
 import org.apache.openjpa.lib.log.Log;
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
 import org.apache.openjpa.lib.util.JavaVersions;
 import org.apache.openjpa.lib.util.Localizer;
 import org.apache.openjpa.lib.util.Options;
@@ -1213,7 +1216,8 @@
 
         try {
             if (val == null && getNullValue() == NULL_DEFAULT)
-                return getDeclaredType().newInstance();
+                return AccessController.doPrivileged(
+                    J2DoPrivHelper.newInstanceAction(getDeclaredType())); 
 
             // invoke either the constructor for the field type,
             // or the static type.toField(val[, ctx]) method
@@ -1246,6 +1250,8 @@
 
             if (e instanceof OpenJPAException)
                 throw (OpenJPAException) e;
+            if (e instanceof PrivilegedActionException)
+                e = ((PrivilegedActionException)e).getException();
             throw new MetaDataException(_loc.get("factory-err", this,
                 Exceptions.toString(val), e.toString())).setCause(e);
         }
@@ -1956,22 +1962,23 @@
             String memberName = (String) in.readObject();
             try {
                 if (isField)
-                    _member = cls.getDeclaredField(memberName);
+                    _member = (Field) AccessController.doPrivileged(
+                        J2DoPrivHelper.getDeclaredFieldAction(
+                            cls,memberName)); 
                 else {
                     Class[] parameterTypes = (Class[]) in.readObject();
-                    _member = cls.getDeclaredMethod(memberName, parameterTypes);
+                    _member = (Method) AccessController.doPrivileged(
+                        J2DoPrivHelper.getDeclaredMethodAction(
+                            cls, memberName, parameterTypes));
                 }
             } catch (SecurityException e) {
                 IOException ioe = new IOException(e.getMessage());
                 ioe.initCause(e);
                 throw ioe;
-            } catch (NoSuchFieldException e) {
-                IOException ioe = new IOException(e.getMessage());
-                ioe.initCause(e);
-                throw ioe;
-            } catch (NoSuchMethodException e) {
-                IOException ioe = new IOException(e.getMessage());
-                ioe.initCause(e);
+            } catch( PrivilegedActionException pae ) {
+                IOException ioe = new IOException(
+                    pae.getException().getMessage());
+                ioe.initCause(pae);
                 throw ioe;
             }
         }

Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/InterfaceImplGenerator.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/InterfaceImplGenerator.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/InterfaceImplGenerator.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/InterfaceImplGenerator.java Tue Jul  3 14:55:29 2007
@@ -20,6 +20,8 @@
 
 import java.lang.reflect.Method;
 import java.io.ByteArrayInputStream;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
 import java.util.Set;
 import java.util.HashSet;
 import java.util.Map;
@@ -28,6 +30,7 @@
 import org.apache.commons.lang.StringUtils;
 import org.apache.openjpa.enhance.PCEnhancer;
 import org.apache.openjpa.util.InternalException;
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
 import org.apache.openjpa.lib.util.Localizer;
 import serp.bytecode.BCClass;
 import serp.bytecode.BCClassLoader;
@@ -74,7 +77,8 @@
         if (impl != null)
             return impl;
 
-        ClassLoader parentLoader = iface.getClassLoader();
+        ClassLoader parentLoader = (ClassLoader)AccessController.doPrivileged( 
+            J2DoPrivHelper.getClassLoaderAction(iface)); 
         BCClassLoader loader = new BCClassLoader(_project, parentLoader);
         BCClassLoader enhLoader = new BCClassLoader(_enhProject, parentLoader);
         BCClass bc = _project.loadClass(getClassName(meta));
@@ -82,8 +86,10 @@
         ClassMetaData sup = meta.getPCSuperclassMetaData();
         if (sup != null) {
             bc.setSuperclass(sup.getInterfaceImpl());
-            enhLoader = new BCClassLoader(_enhProject, 
-            		sup.getInterfaceImpl().getClassLoader());
+            enhLoader = new BCClassLoader(_enhProject,
+                (ClassLoader)AccessController.doPrivileged( 
+                    J2DoPrivHelper.getClassLoaderAction(
+                        sup.getInterfaceImpl())));
         }
 
         FieldMetaData[] fields = meta.getDeclaredFields();
@@ -164,7 +170,8 @@
      */
     private void invalidateNonBeanMethods(BCClass bc, Class iface, 
         Set methods) {
-        Method[] meths = iface.getDeclaredMethods();
+        Method[] meths = (Method[])AccessController.doPrivileged( 
+            J2DoPrivHelper.getDeclaredMethodsAction( iface )); 
         BCMethod meth;
         Code code;
         Class type = _repos.getMetaDataFactory().getDefaults().
@@ -198,9 +205,10 @@
      */
     private static Method getMethodSafe(Class iface, String name, Class arg) {
         try {
-            return iface.getDeclaredMethod(name, arg == null ? null :
-                new Class[]{arg});
-        } catch (NoSuchMethodException e) {
+            return (Method) AccessController.doPrivileged(
+                J2DoPrivHelper.getDeclaredMethodAction(
+                    iface, name, arg == null ? null : new Class[]{arg}));
+        } catch( PrivilegedActionException pae ) {
             throw new InternalException (_loc.get ("interface-mismatch", name));
         }
     }
@@ -209,10 +217,11 @@
         if (fmd.getType() != boolean.class && fmd.getType() != Boolean.class)
             return true;
         try {
-            Method meth = iface.getDeclaredMethod("is" + StringUtils.capitalize
-                (fmd.getName()), (Class[]) null);
+            Method meth = (Method) AccessController.doPrivileged(
+                J2DoPrivHelper.getDeclaredMethodAction( iface, "is" +
+                    StringUtils.capitalize(fmd.getName()), (Class[]) null));
             return meth == null;
-        } catch (NoSuchMethodException e) {}
+        } catch (PrivilegedActionException pae) {}
         return true;
     }
 }

Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java Tue Jul  3 14:55:29 2007
@@ -19,6 +19,7 @@
 package org.apache.openjpa.meta;
 
 import java.io.Serializable;
+import java.security.AccessController;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -42,6 +43,7 @@
 import org.apache.openjpa.lib.conf.Configuration;
 import org.apache.openjpa.lib.log.Log;
 import org.apache.openjpa.lib.util.Closeable;
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
 import org.apache.openjpa.lib.util.Localizer;
 import org.apache.openjpa.util.InternalException;
 import org.apache.openjpa.util.MetaDataException;
@@ -398,7 +400,9 @@
             // class never registers itself with the system
             if ((_validate & VALIDATE_RUNTIME) != 0) {
                 try {
-                    Class.forName(cls.getName(), true, cls.getClassLoader());
+                    Class.forName(cls.getName(), true,
+                        (ClassLoader)AccessController.doPrivileged( 
+                            J2DoPrivHelper.getClassLoaderAction(cls)));
                 } catch (Throwable t) {
                 }
             }
@@ -976,7 +980,8 @@
         if (_log.isTraceEnabled())
             _log.trace(_loc.get("resolve-identity", oidClass));
 
-        ClassLoader cl = oidClass.getClassLoader();
+        ClassLoader cl = (ClassLoader)AccessController.doPrivileged( 
+            J2DoPrivHelper.getClassLoaderAction(oidClass)); 
         String className;
         while (oidClass != null && oidClass != Object.class) {
             className = oidClass.getName();

Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/SequenceMetaData.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/SequenceMetaData.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/SequenceMetaData.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/SequenceMetaData.java Tue Jul  3 14:55:29 2007
@@ -20,6 +20,8 @@
 
 import java.io.File;
 import java.io.Serializable;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
 
 import org.apache.commons.lang.StringUtils;
 import org.apache.openjpa.conf.SeqValue;
@@ -28,6 +30,7 @@
 import org.apache.openjpa.lib.conf.PluginValue;
 import org.apache.openjpa.lib.meta.SourceTracker;
 import org.apache.openjpa.lib.util.Closeable;
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
 import org.apache.openjpa.lib.util.Localizer;
 import org.apache.openjpa.lib.xml.Commentable;
 import org.apache.openjpa.util.MetaDataException;
@@ -252,7 +255,8 @@
             String clsName = plugin.getClassName();
 
             Class cls = Class.forName(clsName, true,
-                Seq.class.getClassLoader());
+                (ClassLoader)AccessController.doPrivileged( 
+                    J2DoPrivHelper.getClassLoaderAction(Seq.class)));
             StringBuffer props = new StringBuffer();
             if (plugin.getProperties() != null)
                 props.append(plugin.getProperties());
@@ -262,7 +266,8 @@
             // interface or a factory class
             Seq seq;
             if (Seq.class.isAssignableFrom(cls)) {
-                seq = (Seq) cls.newInstance();
+                seq = (Seq) AccessController.doPrivileged(
+                    J2DoPrivHelper.newInstanceAction(cls));
                 Configurations.configureInstance(seq,
                     _repos.getConfiguration(), props.toString());
                 seq.setType(_type);
@@ -275,6 +280,8 @@
         } catch (OpenJPAException ke) {
             throw ke;
         } catch (Exception e) {
+            if (e instanceof PrivilegedActionException)
+                e = ((PrivilegedActionException)e).getException();
             throw new MetaDataException(_loc.get("cant-init-seq", _name)).
                 setCause(e);
         }

Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/ApplicationIds.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/ApplicationIds.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/ApplicationIds.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/ApplicationIds.java Tue Jul  3 14:55:29 2007
@@ -20,9 +20,10 @@
 
 import java.lang.reflect.Field;
 import java.lang.reflect.Modifier;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
 import java.util.Date;
 
-import org.apache.commons.lang.StringUtils;
 import org.apache.openjpa.enhance.FieldManager;
 import org.apache.openjpa.enhance.PCRegistry;
 import org.apache.openjpa.enhance.PersistenceCapable;
@@ -30,6 +31,7 @@
 import org.apache.openjpa.kernel.ObjectIdStateManager;
 import org.apache.openjpa.kernel.OpenJPAStateManager;
 import org.apache.openjpa.kernel.StoreManager;
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
 import org.apache.openjpa.lib.util.Localizer;
 import org.apache.openjpa.meta.ClassMetaData;
 import org.apache.openjpa.meta.FieldMetaData;
@@ -188,8 +190,11 @@
             throw new UserException(_loc.get("objectid-abstract", meta));
         Object copy = null;
         try {
-            copy = oidType.newInstance();
+            copy = AccessController.doPrivileged(
+                J2DoPrivHelper.newInstanceAction(oidType));
         } catch (Throwable t) {
+            if (t instanceof PrivilegedActionException)
+                t = ((PrivilegedActionException)t).getException();
             throw new GeneralException(t);
         }
 
@@ -319,8 +324,11 @@
         Class oidType = oid.getClass();
         Object copy = null;
         try {
-            copy = oidType.newInstance();
+            copy = AccessController.doPrivileged(
+                J2DoPrivHelper.newInstanceAction(oidType));
         } catch (Throwable t) {
+            if (t instanceof PrivilegedActionException)
+                t = ((PrivilegedActionException)t).getException();
             throw new GeneralException(t);
         }
 

Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/ClassResolverImpl.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/ClassResolverImpl.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/ClassResolverImpl.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/ClassResolverImpl.java Tue Jul  3 14:55:29 2007
@@ -18,6 +18,9 @@
  */
 package org.apache.openjpa.util;
 
+import java.security.AccessController;
+
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
 import org.apache.openjpa.lib.util.MultiClassLoader;
 
 /**
@@ -37,14 +40,16 @@
         // class (the bootstrap loader is the parent of the system loader)
         ClassLoader contextLoader = null;
         if (contextClass != null) {
-            contextLoader = contextClass.getClassLoader();
+            contextLoader = (ClassLoader)AccessController.doPrivileged( 
+                J2DoPrivHelper.getClassLoaderAction(contextClass)); 
             if (contextLoader == null)
-                contextLoader = ClassLoader.getSystemClassLoader();
+                contextLoader = (ClassLoader)AccessController.doPrivileged( 
+                    J2DoPrivHelper.getSystemClassLoaderAction()); 
         }
 
         // if there is only one unique loader, just return it
-        ClassLoader threadLoader = Thread.currentThread().
-            getContextClassLoader();
+        ClassLoader threadLoader = (ClassLoader)AccessController.doPrivileged( 
+            J2DoPrivHelper.getContextClassLoaderAction());
         if ((contextLoader == null || contextLoader == threadLoader)
             && (envLoader == null || envLoader == threadLoader))
             return threadLoader;

Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/Exceptions.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/Exceptions.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/Exceptions.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/Exceptions.java Tue Jul  3 14:55:29 2007
@@ -28,6 +28,7 @@
 
 import org.apache.openjpa.conf.OpenJPAVersion;
 import org.apache.openjpa.enhance.PersistenceCapable;
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
 import org.apache.openjpa.lib.util.JavaVersions;
 
 /**
@@ -41,7 +42,7 @@
 
     public static final Throwable[] EMPTY_THROWABLES = new Throwable[0];
 
-    static final String SEP = System.getProperty("line.separator");
+    static final String SEP = J2DoPrivHelper.getLineSeparator();
 
     private static final OutputStream DEV_NULL = new OutputStream() {
         public void write(int b) {

Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/Id.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/Id.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/Id.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/Id.java Tue Jul  3 14:55:29 2007
@@ -18,7 +18,10 @@
  */
 package org.apache.openjpa.util;
 
+import java.security.AccessController;
+
 import org.apache.openjpa.conf.OpenJPAConfiguration;
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
 import org.apache.openjpa.lib.util.Localizer;
 import serp.util.Numbers;
 
@@ -75,7 +78,8 @@
      */
     public Id(String str, ClassLoader loader) {
         if (loader == null)
-            loader = Thread.currentThread().getContextClassLoader();
+            loader = (ClassLoader)AccessController.doPrivileged( 
+                J2DoPrivHelper.getContextClassLoaderAction());
 
         if (str == null)
             _id = 0L;

Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/Proxies.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/Proxies.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/Proxies.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/Proxies.java Tue Jul  3 14:55:29 2007
@@ -18,14 +18,10 @@
  */
 package org.apache.openjpa.util;
 
-import java.io.ObjectStreamException;
-import java.util.AbstractSet;
-import java.util.Iterator;
-import java.util.ListIterator;
-import java.util.Map;
-import java.util.Set;
+import java.security.AccessController;
 
 import org.apache.openjpa.kernel.OpenJPAStateManager;
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
 import org.apache.openjpa.lib.util.Localizer;
 
 /**
@@ -52,9 +48,11 @@
     public static void assertAllowedType(Object value, Class allowed) {
         if (value != null && allowed != null && !allowed.isInstance(value)) {
             throw new UserException(_loc.get("bad-elem-type", new Object[]{
-                allowed.getClassLoader(),
+                (ClassLoader)AccessController.doPrivileged( 
+                    J2DoPrivHelper.getClassLoaderAction(allowed)),
                 allowed,
-                value.getClass().getClassLoader(),
+                (ClassLoader)AccessController.doPrivileged( 
+                    J2DoPrivHelper.getClassLoaderAction(value.getClass())),
                 value.getClass()
             }));
         }

Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java Tue Jul  3 14:55:29 2007
@@ -25,6 +25,8 @@
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
 import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -48,6 +50,7 @@
 import org.apache.commons.lang.StringUtils;
 import org.apache.openjpa.kernel.OpenJPAStateManager;
 import org.apache.openjpa.lib.util.Files;
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
 import org.apache.openjpa.lib.util.JavaVersions;
 import org.apache.openjpa.lib.util.Localizer;
 import org.apache.openjpa.lib.util.Options;
@@ -84,8 +87,10 @@
         _stdCollections.put(List.class, ArrayList.class);
         if (JavaVersions.VERSION >= 5) {
             try {
-                Class queue = Class.forName("java.util.Queue", false, 
-                    Collection.class.getClassLoader());
+                Class queue = Class.forName("java.util.Queue", false,
+                    (ClassLoader)AccessController.doPrivileged( 
+                        J2DoPrivHelper.getClassLoaderAction(
+                            Collection.class)));
                 _stdCollections.put(queue, LinkedList.class);
             } catch (Throwable t) {
                 // not really java 5 after all?
@@ -492,10 +497,18 @@
             if (cons != null)
                 return (Proxy) cls.getConstructor(cons.getParameterTypes()).
                     newInstance(args);
-            return (Proxy) cls.newInstance();
+            return (Proxy) AccessController.doPrivileged(
+                J2DoPrivHelper.newInstanceAction(cls));
         } catch (InstantiationException ie) {
             throw new UnsupportedException(_loc.get("cant-newinstance", 
                 cls.getSuperclass().getName()));
+        } catch( PrivilegedActionException pae ) {
+            Exception e = pae.getException();
+            if( e instanceof InstantiationException)
+                throw new UnsupportedException(_loc.get("cant-newinstance", 
+                    cls.getSuperclass().getName()));
+            else
+                throw new GeneralException(cls.getName()).setCause(e);
         } catch (Throwable t) {
             throw new GeneralException(cls.getName()).setCause(t);
         }
@@ -506,8 +519,10 @@
      * classes.
      */
     private static ClassLoader getMostDerivedLoader(Class c1, Class c2) {
-        ClassLoader l1 = c1.getClassLoader();
-        ClassLoader l2 = c2.getClassLoader();
+        ClassLoader l1 = (ClassLoader)AccessController.doPrivileged( 
+            J2DoPrivHelper.getClassLoaderAction(c1)); 
+        ClassLoader l2 = (ClassLoader)AccessController.doPrivileged( 
+            J2DoPrivHelper.getClassLoaderAction(c2)); 
         if (l1 == l2)
             return l1;
         if (l1 == null)
@@ -515,7 +530,10 @@
         if (l2 == null)
             return l1;
         
-        for (ClassLoader p = l1.getParent(); p != null; p = p.getParent())
+        for (ClassLoader p = (ClassLoader)AccessController.doPrivileged( 
+                J2DoPrivHelper.getParentAction( l1 )); p != null;
+                p = (ClassLoader)AccessController.doPrivileged( 
+                    J2DoPrivHelper.getParentAction( p )))
             if (p == l2)
                 return l1;
         return l2;
@@ -1570,7 +1588,8 @@
     public static void main(String[] args) 
         throws ClassNotFoundException, IOException {
         File dir = Files.getClassFile(ProxyManagerImpl.class);
-        dir = (dir == null) ? new File(System.getProperty("user.dir"))
+        dir = (dir == null) ? new File((String)AccessController.doPrivileged( 
+            J2DoPrivHelper.getPropertyAction("user.dir")))
             : dir.getParentFile();
 
         Options opts = new Options();

Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/Serialization.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/Serialization.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/Serialization.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/Serialization.java Tue Jul  3 14:55:29 2007
@@ -27,10 +27,12 @@
 import java.io.ObjectStreamClass;
 import java.io.OutputStream;
 import java.io.Serializable;
+import java.security.AccessController;
 
 import org.apache.openjpa.conf.OpenJPAConfiguration;
 import org.apache.openjpa.kernel.StoreContext;
 import org.apache.openjpa.lib.log.Log;
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
 import org.apache.openjpa.lib.util.Localizer;
 import org.apache.openjpa.lib.util.MultiClassLoader;
 
@@ -129,8 +131,8 @@
         }
 
         protected void addContextClassLoaders(MultiClassLoader loader) {
-            loader.addClassLoader(Thread.currentThread().
-                getContextClassLoader());
+            loader.addClassLoader((ClassLoader)AccessController.doPrivileged( 
+                J2DoPrivHelper.getContextClassLoaderAction()));
         }
     }
 

Modified: openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/ant/AbstractTask.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/ant/AbstractTask.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/ant/AbstractTask.java (original)
+++ openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/ant/AbstractTask.java Tue Jul  3 14:55:29 2007
@@ -14,11 +14,12 @@
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  * KIND, either express or implied.  See the License for the
  * specific language governing permissions and limitations
- * under the License.    
+ * under the License.
  */
 package org.apache.openjpa.lib.ant;
 
 import java.io.File;
+import java.security.AccessController;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
@@ -33,17 +34,18 @@
 import org.apache.openjpa.lib.conf.ConfigurationImpl;
 import org.apache.openjpa.lib.conf.ConfigurationProvider;
 import org.apache.openjpa.lib.conf.ProductDerivations;
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
 import org.apache.openjpa.lib.util.Localizer;
 
 /**
  * Ant tasks all have a nested <code>&lt;config&rt;</code> tag, which uses
  * the configuration as a bean-like task. E.g., you can do:
- * 
- * <code> 
+ *
+ * <code>
  * &lt;mytask&rt;<br />
- * &nbsp;&nbsp;&lt;config connectionUserName="foo"/&rt;<br /> 
+ * &nbsp;&nbsp;&lt;config connectionUserName="foo"/&rt;<br />
  * &lt;/mytask&rt;
- * </code> 
+ * </code>
  *
  * The default configuration for the system will be used if the
  * <code>&lt;config&rt;</code> subtask is excluded.
@@ -159,7 +161,8 @@
             _conf = newConfiguration();
         if (_conf.getPropertiesResource() == null) {
             ConfigurationProvider cp = ProductDerivations.loadDefaults
-                (_conf.getClass().getClassLoader());
+                ((ClassLoader)AccessController.doPrivileged(
+                    J2DoPrivHelper.getClassLoaderAction(_conf.getClass())));
             if (cp != null)
                 cp.setInto(_conf);
         }
@@ -188,7 +191,8 @@
                 File f = new File(dsFiles[j]);
                 if (!f.isFile())
                     f = new File(ds.getBasedir(), dsFiles[j]);
-                files.add(f.getAbsolutePath());
+                files.add((String)AccessController.doPrivileged(
+                    J2DoPrivHelper.getAbsolutePathAction( f )));
             }
         }
         return (String[]) files.toArray(new String[files.size()]);

Modified: openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ConfigurationImpl.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ConfigurationImpl.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ConfigurationImpl.java (original)
+++ openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ConfigurationImpl.java Tue Jul  3 14:55:29 2007
@@ -39,6 +39,7 @@
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
+import java.security.AccessController;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -57,6 +58,7 @@
 import org.apache.openjpa.lib.log.LogFactoryImpl;
 import org.apache.openjpa.lib.log.NoneLogFactory;
 import org.apache.openjpa.lib.util.Closeable;
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
 import org.apache.openjpa.lib.util.Localizer;
 import org.apache.openjpa.lib.util.MultiClassLoader;
 import org.apache.openjpa.lib.util.ParseException;
@@ -99,7 +101,7 @@
 public class ConfigurationImpl
     implements Configuration, Externalizable, ValueListener {
 
-    private static final String SEP = System.getProperty("line.separator");
+    private static final String SEP = J2DoPrivHelper.getLineSeparator();
 
     private static final Localizer _loc = Localizer.forPackage
         (ConfigurationImpl.class);
@@ -163,7 +165,8 @@
      */
     public boolean loadGlobals() {
         MultiClassLoader loader = new MultiClassLoader();
-        loader.addClassLoader(Thread.currentThread().getContextClassLoader());
+        loader.addClassLoader((ClassLoader)AccessController.doPrivileged( 
+            J2DoPrivHelper.getContextClassLoaderAction()));
         loader.addClassLoader(getClass().getClassLoader());
         ConfigurationProvider provider = ProductDerivations.loadGlobals(loader);
         if (provider != null)
@@ -171,7 +174,9 @@
 
         // let system properties override other globals
         try {
-            fromProperties(new HashMap(System.getProperties()));
+            fromProperties(new HashMap(
+                (Properties)AccessController.doPrivileged( 
+                    J2DoPrivHelper.getPropertiesAction())));
         } catch (SecurityException se) {
             // security manager might disallow
         }

Modified: openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/Configurations.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/Configurations.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/Configurations.java (original)
+++ openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/Configurations.java Tue Jul  3 14:55:29 2007
@@ -19,6 +19,8 @@
 package org.apache.openjpa.lib.conf;
 
 import java.io.File;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Iterator;
@@ -34,6 +36,7 @@
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.exception.NestableRuntimeException;
 import org.apache.openjpa.lib.log.Log;
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
 import org.apache.openjpa.lib.util.Localizer;
 import org.apache.openjpa.lib.util.Options;
 import org.apache.openjpa.lib.util.ParseException;
@@ -206,8 +209,12 @@
         }
 
         try {
-            return cls.newInstance();
+            return AccessController.doPrivileged(
+                J2DoPrivHelper.newInstanceAction(cls));
         } catch (Exception e) {
+            if( e instanceof PrivilegedActionException) {
+                e = ((PrivilegedActionException)e).getException();   
+            }
             RuntimeException re = new NestableRuntimeException(_loc.get
                 ("obj-create", cls).getMessage(), e);
             if (fatal)
@@ -229,25 +236,33 @@
         // we always prefer the thread loader, because it's the only thing we
         // can access that isn't bound to the OpenJPA classloader, unless
         // the conf object is of a custom class
-        ClassLoader ctxLoader = Thread.currentThread().getContextClassLoader();
+        ClassLoader ctxLoader = (ClassLoader)AccessController.doPrivileged( 
+            J2DoPrivHelper.getContextClassLoaderAction());
         if (loader == null) {
             if (ctxLoader != null)
                 return ctxLoader;
             if (conf != null)
-                return conf.getClass().getClassLoader();
+                return (ClassLoader)AccessController.doPrivileged( 
+                    J2DoPrivHelper.getClassLoaderAction(conf.getClass())); 
             return Configurations.class.getClassLoader();
         }
 
         for (ClassLoader parent = ctxLoader; parent != null; 
-            parent = parent.getParent()) {
+            parent = (ClassLoader)AccessController.doPrivileged( 
+                J2DoPrivHelper.getParentAction( parent ))) {
             if (parent == loader)
                 return ctxLoader;
         }
         if (conf != null) {
-            for (ClassLoader parent = conf.getClass().getClassLoader(); 
-                parent != null; parent = parent.getParent()) {
+            for (ClassLoader parent = (ClassLoader)
+                AccessController.doPrivileged( 
+                    J2DoPrivHelper.getClassLoaderAction(conf.getClass())); 
+                parent != null; 
+                parent = (ClassLoader)AccessController.doPrivileged( 
+                    J2DoPrivHelper.getParentAction( parent ))) {
                 if (parent == loader)
-                    return conf.getClass().getClassLoader();
+                    return (ClassLoader)AccessController.doPrivileged( 
+                        J2DoPrivHelper.getClassLoaderAction(conf.getClass())); 
             }
         }
         return loader;

Modified: openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/FileValue.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/FileValue.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/FileValue.java (original)
+++ openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/FileValue.java Tue Jul  3 14:55:29 2007
@@ -19,8 +19,10 @@
 package org.apache.openjpa.lib.conf;
 
 import java.io.File;
+import java.security.AccessController;
 
 import org.apache.commons.lang.ObjectUtils;
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
 
 /**
  * A {@link File} {@link Value}.
@@ -57,7 +59,8 @@
     }
 
     protected String getInternalString() {
-        return (value == null) ? null : value.getAbsolutePath();
+        return (value == null) ? null : (String)AccessController.doPrivileged( 
+            J2DoPrivHelper.getAbsolutePathAction( value ));
     }
 
     protected void setInternalString(String val) {

Modified: openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ObjectValue.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ObjectValue.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ObjectValue.java (original)
+++ openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ObjectValue.java Tue Jul  3 14:55:29 2007
@@ -18,7 +18,10 @@
  */
 package org.apache.openjpa.lib.conf;
 
+import java.security.AccessController;
+
 import org.apache.commons.lang.ObjectUtils;
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
 import org.apache.openjpa.lib.util.Localizer;
 import org.apache.openjpa.lib.util.ReferenceMap;
 import org.apache.openjpa.lib.util.concurrent.ConcurrentReferenceHashMap;
@@ -94,9 +97,11 @@
             boolean fatal) {
         ClassLoader cl = (ClassLoader) _classloaderCache.get(type);
         if (cl == null) {
-            cl = type.getClassLoader();
+            cl = (ClassLoader)AccessController.doPrivileged( 
+                J2DoPrivHelper.getClassLoaderAction(type));
             if (cl == null) {  // System classloader is returned as null
-                cl = ClassLoader.getSystemClassLoader();
+                cl = (ClassLoader)AccessController.doPrivileged( 
+                    J2DoPrivHelper.getSystemClassLoaderAction()); 
             }
             _classloaderCache.put(type, cl);
         }

Modified: openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ProductDerivations.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ProductDerivations.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ProductDerivations.java (original)
+++ openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ProductDerivations.java Tue Jul  3 14:55:29 2007
@@ -19,6 +19,8 @@
 package org.apache.openjpa.lib.conf;
 
 import java.io.File;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
@@ -27,6 +29,7 @@
 import java.util.MissingResourceException;
 
 import org.apache.commons.lang.StringUtils;
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
 import org.apache.openjpa.lib.util.Localizer;
 import org.apache.openjpa.lib.util.Services;
 
@@ -46,17 +49,22 @@
     private static final Throwable[] _derivationErrors;
     private static String[] _prefixes;
     static {
-        ClassLoader l = ProductDerivation.class.getClassLoader();
+        ClassLoader l = (ClassLoader)AccessController.doPrivileged( 
+            J2DoPrivHelper.getClassLoaderAction(ProductDerivation.class)); 
         _derivationNames = Services.getImplementors(ProductDerivation.class, l);
         _derivationErrors = new Throwable[_derivationNames.length];
         List derivations = new ArrayList(_derivationNames.length);
         for (int i = 0; i < _derivationNames.length; i++) {
             try {
-                ProductDerivation d = (ProductDerivation) Class.
-                    forName(_derivationNames[i], true, l).newInstance();
+                ProductDerivation d = (ProductDerivation)
+                    AccessController.doPrivileged(
+                        J2DoPrivHelper.newInstanceAction(
+                            Class.forName(_derivationNames[i], true, l)));
                 d.validate();
                 derivations.add(d);
             } catch (Throwable t) {
+                if (t instanceof PrivilegedActionException)
+                    t = ((PrivilegedActionException)t).getException();
                 _derivationErrors[i] = t;
             }
         }
@@ -227,7 +235,8 @@
         if (StringUtils.isEmpty(resource))
             return null;
         if (loader == null)
-            loader = Thread.currentThread().getContextClassLoader();
+            loader = (ClassLoader)AccessController.doPrivileged( 
+                J2DoPrivHelper.getContextClassLoaderAction());
         ConfigurationProvider provider = null;
         StringBuffer errs = null;
         // most specific to least
@@ -257,7 +266,8 @@
         if (file == null)
             return null;
         if (loader == null)
-            loader = Thread.currentThread().getContextClassLoader();
+            loader = (ClassLoader)AccessController.doPrivileged( 
+                J2DoPrivHelper.getContextClassLoaderAction());
         ConfigurationProvider provider = null;
         StringBuffer errs = null;
         // most specific to least
@@ -271,9 +281,11 @@
                 errs.append(_derivations[i].getClass().getName() + ":" + t);
             }
         }
-        reportErrors(errs, file.getAbsolutePath());
-        throw new MissingResourceException(file.getAbsolutePath(), 
-            ProductDerivations.class.getName(), file.getAbsolutePath());
+        String aPath = (String)AccessController.doPrivileged( 
+            J2DoPrivHelper.getAbsolutePathAction( file ));
+        reportErrors(errs, aPath);
+        throw new MissingResourceException(aPath, 
+            ProductDerivations.class.getName(), aPath);
     }
    
     /**
@@ -296,7 +308,8 @@
     private static ConfigurationProvider load(ClassLoader loader, 
        boolean globals) {
         if (loader == null)
-            loader = Thread.currentThread().getContextClassLoader();
+            loader = (ClassLoader)AccessController.doPrivileged( 
+                J2DoPrivHelper.getContextClassLoaderAction());
         
         ConfigurationProvider provider = null;
         StringBuffer errs = null;

Modified: openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/jdbc/LoggingConnectionDecorator.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/jdbc/LoggingConnectionDecorator.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/jdbc/LoggingConnectionDecorator.java (original)
+++ openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/jdbc/LoggingConnectionDecorator.java Tue Jul  3 14:55:29 2007
@@ -45,6 +45,7 @@
 import java.util.List;
 
 import org.apache.openjpa.lib.log.Log;
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
 
 /**
  * A {@link ConnectionDecorator} that creates logging connections and
@@ -55,7 +56,7 @@
  */
 public class LoggingConnectionDecorator implements ConnectionDecorator {
 
-    private static final String SEP = System.getProperty("line.separator");
+    private static final String SEP = J2DoPrivHelper.getLineSeparator();
 
     private static final int WARN_IGNORE = 0;
     private static final int WARN_LOG_TRACE = 1;

Modified: openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/jdbc/SQLFormatter.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/jdbc/SQLFormatter.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/jdbc/SQLFormatter.java (original)
+++ openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/jdbc/SQLFormatter.java Tue Jul  3 14:55:29 2007
@@ -23,6 +23,8 @@
 import java.util.List;
 import java.util.StringTokenizer;
 
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
+
 /*
  * Lots of this could be abstracted out into a word-wrapping class.
  */
@@ -46,7 +48,7 @@
 
     private boolean multiLine = false;
     private boolean doubleSpace = true;
-    private String newline = System.getProperty("line.separator");
+    private String newline = J2DoPrivHelper.getLineSeparator();
     private int lineLength = 72;
     private String wrapIndent = "        ";
     private String clauseIndent = "    ";
@@ -152,7 +154,7 @@
 
                 buf.append(prettyPrintLine(line));
                 for (int i = 0; i < 1 + (getDoubleSpace() ? 1 : 0); i++)
-                    buf.append(System.getProperty("line.separator"));
+                    buf.append(J2DoPrivHelper.getLineSeparator());
             }
 
             return buf.toString();

Modified: openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/log/LogFactoryImpl.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/log/LogFactoryImpl.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/log/LogFactoryImpl.java (original)
+++ openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/log/LogFactoryImpl.java Tue Jul  3 14:55:29 2007
@@ -24,6 +24,8 @@
 import java.io.PrintStream;
 import java.io.PrintWriter;
 import java.io.StringWriter;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
@@ -32,6 +34,7 @@
 import org.apache.openjpa.lib.conf.Configuration;
 import org.apache.openjpa.lib.conf.GenericConfigurable;
 import org.apache.openjpa.lib.util.Files;
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
 import org.apache.openjpa.lib.util.Localizer;
 import org.apache.openjpa.lib.util.Options;
 import org.apache.openjpa.lib.util.concurrent.ConcurrentHashMap;
@@ -57,7 +60,7 @@
     public static final String STDOUT = "stdout";
     public static final String STDERR = "stderr";
 
-    private static final String NEWLINE = System.getProperty("line.separator");
+    private static final String NEWLINE = J2DoPrivHelper.getLineSeparator();
 
     /**
      * The time at which this factory was initialized.
@@ -179,8 +182,15 @@
         else {
             File f = Files.getFile(file, null);
             try {
-                _out = new PrintStream(new FileOutputStream
-                    (f.getCanonicalPath(), true));
+                _out = new PrintStream((FileOutputStream)
+                    AccessController.doPrivileged(
+                        J2DoPrivHelper.newFileOutputStreamAction(
+                            (String)AccessController.doPrivileged( 
+                                J2DoPrivHelper.getCanonicalPathAction( f )),
+                            true)));
+            } catch( PrivilegedActionException pae ) {
+                throw new IllegalArgumentException(_loc.get("log-bad-file",
+                        file) + " " + pae.getException());
             } catch (IOException ioe) {
                 throw new IllegalArgumentException(_loc.get("log-bad-file",
                     file) + " " + ioe.toString());

Modified: openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/log/LogOutputStream.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/log/LogOutputStream.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/log/LogOutputStream.java (original)
+++ openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/log/LogOutputStream.java Tue Jul  3 14:55:29 2007
@@ -23,6 +23,8 @@
 import java.io.OutputStream;
 import java.util.StringTokenizer;
 
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
+
 /**
  * Many standard components log to {@link OutputStream}s.
  * This wrapper class extends the {@link ByteArrayOutputStream}
@@ -33,7 +35,7 @@
  */
 public class LogOutputStream extends ByteArrayOutputStream {
 
-    private static final String _sep = System.getProperty("line.separator");
+    private static final String _sep = J2DoPrivHelper.getLineSeparator();
 
     private final int _level;
     private final Log _log;

Modified: openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/CFMetaDataParser.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/CFMetaDataParser.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/CFMetaDataParser.java (original)
+++ openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/CFMetaDataParser.java Tue Jul  3 14:55:29 2007
@@ -18,7 +18,10 @@
  */
 package org.apache.openjpa.lib.meta;
 
+import java.security.AccessController;
+
 import org.apache.commons.lang.StringUtils;
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
 import org.apache.openjpa.lib.util.Localizer;
 import org.xml.sax.Attributes;
 import org.xml.sax.SAXException;
@@ -295,7 +298,8 @@
             return null;
 
         if (loader == null)
-            loader = Thread.currentThread().getContextClassLoader();
+            loader = (ClassLoader)AccessController.doPrivileged( 
+                J2DoPrivHelper.getContextClassLoaderAction());
         boolean fullName = name.indexOf('.') != -1;
         boolean noPackage = StringUtils.isEmpty(pkg);
         try {

Modified: openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ClassArgParser.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ClassArgParser.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ClassArgParser.java (original)
+++ openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ClassArgParser.java Tue Jul  3 14:55:29 2007
@@ -21,11 +21,14 @@
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileInputStream;
+import java.io.FileNotFoundException;
 import java.io.FileReader;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.Reader;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -36,6 +39,7 @@
 
 import org.apache.commons.lang.exception.NestableRuntimeException;
 import org.apache.openjpa.lib.util.Files;
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
 import org.apache.openjpa.lib.util.Localizer;
 import serp.bytecode.lowlevel.ConstantPoolTable;
 import serp.util.Strings;
@@ -210,7 +214,8 @@
                 return new String[]{ getFromClassFile(file) };
             if (arg.endsWith(".java"))
                 return new String[]{ getFromJavaFile(file) };
-            if (file.exists()) {
+            if (((Boolean)AccessController.doPrivileged( 
+                J2DoPrivHelper.existsAction( file ))).booleanValue()) {
                 Collection col = getFromMetaDataFile(file);
                 return (String[]) col.toArray(new String[col.size()]);
             }
@@ -295,8 +300,11 @@
     private String getFromClassFile(File file) throws IOException {
         FileInputStream fin = null;
         try {
-            fin = new FileInputStream(file);
+            fin = (FileInputStream) AccessController.doPrivileged(
+                J2DoPrivHelper.newFileInputStreamAction(file));
             return getFromClass(fin);
+        } catch( PrivilegedActionException pae ) {
+            throw (FileNotFoundException)pae.getException();
         } finally {
             if (fin != null)
                 try {

Modified: openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ClassMetaDataIterator.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ClassMetaDataIterator.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ClassMetaDataIterator.java (original)
+++ openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ClassMetaDataIterator.java Tue Jul  3 14:55:29 2007
@@ -23,12 +23,15 @@
 import java.io.InputStream;
 import java.net.URL;
 import java.net.URLDecoder;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Enumeration;
 import java.util.List;
 import java.util.NoSuchElementException;
 
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
 import org.apache.openjpa.lib.util.MultiClassLoader;
 import serp.util.Strings;
 
@@ -76,8 +79,14 @@
             multi.addClassLoader(multi.SYSTEM_LOADER);
             multi.addClassLoader(multi.THREAD_LOADER);
             multi.addClassLoader(getClass().getClassLoader());
-            if (cls != null && cls.getClassLoader() != null)
-                multi.addClassLoader(cls.getClassLoader());
+            if (cls != null)
+            {
+                ClassLoader clsLoader = (ClassLoader)
+                    AccessController.doPrivileged( 
+                        J2DoPrivHelper.getClassLoaderAction(cls));
+                if (clsLoader != null)
+                    multi.addClassLoader(clsLoader);
+            }
             loader = multi;
         }
         _loader = loader;
@@ -145,7 +154,13 @@
 
             _url = -1;
             _urls.clear();
-            e = _loader.getResources((String) _locs.get(_loc));
+            try {
+                e = (Enumeration)AccessController.doPrivileged( 
+                    J2DoPrivHelper.getResourcesAction(
+                        _loader, (String) _locs.get(_loc)));
+            } catch( PrivilegedActionException pae ) {
+                throw (IOException)pae.getException();
+            }    
             while (e.hasMoreElements())
                 _urls.add(e.nextElement());
         }
@@ -161,7 +176,12 @@
     public InputStream getInputStream() throws IOException {
         if (_url == -1 || _url >= _urls.size())
             throw new IllegalStateException();
-        return ((URL) _urls.get(_url)).openStream();
+        try {
+            return (InputStream)AccessController.doPrivileged(
+                J2DoPrivHelper.openStreamAction((URL) _urls.get(_url)));
+        } catch( PrivilegedActionException pae ) {
+            throw (IOException)pae.getException();
+        }
     }
 
     public File getFile() throws IOException {
@@ -169,7 +189,8 @@
             throw new IllegalStateException();
         File file = new File(URLDecoder.decode(((URL) _urls.get(_url)).
             getFile()));
-        return (file.exists()) ? file : null;
+        return (((Boolean)AccessController.doPrivileged( 
+            J2DoPrivHelper.existsAction( file ))).booleanValue()) ? file:null;
     }
 
     public void close() {

Modified: openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ClasspathMetaDataIterator.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ClasspathMetaDataIterator.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ClasspathMetaDataIterator.java (original)
+++ openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ClasspathMetaDataIterator.java Tue Jul  3 14:55:29 2007
@@ -20,9 +20,12 @@
 
 import java.io.File;
 import java.io.IOException;
+import java.security.AccessController;
 import java.util.Properties;
 import java.util.zip.ZipFile;
 
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
+
 import serp.util.Strings;
 
 /**
@@ -47,7 +50,8 @@
      */
     public ClasspathMetaDataIterator(String[] dirs, MetaDataFilter filter)
         throws IOException {
-        Properties props = System.getProperties();
+        Properties props = (Properties)AccessController.doPrivileged( 
+            J2DoPrivHelper.getPropertiesAction()); 
         String path = props.getProperty("java.class.path");
         String[] tokens = Strings.split(path,
             props.getProperty("path.separator"), 0);
@@ -57,7 +61,8 @@
                 continue;
 
             File file = new File(tokens[i]);
-            if (!file.exists())
+            if (!((Boolean)AccessController.doPrivileged( 
+                J2DoPrivHelper.existsAction( file ))).booleanValue())
                 continue;
             if (file.isDirectory())
                 addIterator(new FileMetaDataIterator(file, filter));

Modified: openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/FileMetaDataIterator.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/FileMetaDataIterator.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/FileMetaDataIterator.java (original)
+++ openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/FileMetaDataIterator.java Tue Jul  3 14:55:29 2007
@@ -21,14 +21,18 @@
 import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileInputStream;
+import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.NoSuchElementException;
 
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
 import org.apache.openjpa.lib.util.Localizer;
 
 /**
@@ -112,7 +116,14 @@
     public InputStream getInputStream() throws IOException {
         if (_file == null)
             throw new IllegalStateException();
-        return new FileInputStream(_file);
+        FileInputStream fis = null;
+        try {
+            fis = (FileInputStream) AccessController.doPrivileged(
+                J2DoPrivHelper.newFileInputStreamAction(_file));
+            return fis;
+        } catch( PrivilegedActionException pae ) {
+            throw (FileNotFoundException)pae.getException();
+        }
     }
 
     public File getFile() {
@@ -137,8 +148,15 @@
         }
 
         public byte[] getContent() throws IOException {
-            long len = _file.length();
-            FileInputStream fin = new FileInputStream(_file);
+            long len = ((Long)AccessController.doPrivileged( 
+                J2DoPrivHelper.lengthAction( _file ))).longValue();
+            FileInputStream fin = null;
+            try {
+                fin = (FileInputStream) AccessController.doPrivileged(
+                    J2DoPrivHelper.newFileInputStreamAction(_file));
+            } catch( PrivilegedActionException pae ) {
+                 throw (FileNotFoundException)pae.getException();
+            }
             try {
                 byte[] content;
                 if (len <= 0 || len > Integer.MAX_VALUE) {

Modified: openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ResourceMetaDataIterator.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ResourceMetaDataIterator.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ResourceMetaDataIterator.java (original)
+++ openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ResourceMetaDataIterator.java Tue Jul  3 14:55:29 2007
@@ -23,11 +23,14 @@
 import java.io.InputStream;
 import java.net.URL;
 import java.net.URLDecoder;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
 import java.util.ArrayList;
 import java.util.Enumeration;
 import java.util.List;
 import java.util.NoSuchElementException;
 
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
 import org.apache.openjpa.lib.util.MultiClassLoader;
 
 /**
@@ -61,11 +64,16 @@
             loader = multi;
         }
 
-        Enumeration e = loader.getResources(rsrc);
-        while (e.hasMoreElements()) {
-            if (_urls == null)
-                _urls = new ArrayList(3);
-            _urls.add(e.nextElement());
+        try {
+            Enumeration e = (Enumeration)AccessController.doPrivileged( 
+                J2DoPrivHelper.getResourcesAction(loader, rsrc));
+            while (e.hasMoreElements()) {
+                if (_urls == null)
+                    _urls = new ArrayList(3);
+                _urls.add(e.nextElement());
+            }
+        } catch( PrivilegedActionException pae ) {
+            throw (IOException)pae.getException();
         }
     }
 
@@ -82,7 +90,12 @@
     public InputStream getInputStream() throws IOException {
         if (_url == -1 || _url >= _urls.size())
             throw new IllegalStateException();
-        return ((URL) _urls.get(_url)).openStream();
+        try {
+            return (InputStream)AccessController.doPrivileged(
+                J2DoPrivHelper.openStreamAction((URL) _urls.get(_url)));
+        } catch( PrivilegedActionException pae ) {
+            throw (IOException)pae.getException();
+        }
     }
 
     public File getFile() throws IOException {
@@ -90,7 +103,8 @@
             throw new IllegalStateException();
         File file = new File(URLDecoder.decode(((URL) _urls.get(_url)).
             getFile()));
-        return (file.exists()) ? file : null;
+        return (((Boolean)AccessController.doPrivileged( 
+            J2DoPrivHelper.existsAction( file ))).booleanValue()) ? file :null;
     }
 
     public void close() {

Modified: openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/SourceTrackers.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/SourceTrackers.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/SourceTrackers.java (original)
+++ openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/SourceTrackers.java Tue Jul  3 14:55:29 2007
@@ -18,6 +18,9 @@
  */
 package org.apache.openjpa.lib.meta;
 
+import java.security.AccessController;
+
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
 import org.apache.openjpa.lib.util.Localizer;
 
 /**
@@ -30,7 +33,7 @@
     private static final Localizer _loc =
         Localizer.forPackage(SourceTrackers.class);
 
-    private static final String SEP = System.getProperty("line.separator");
+    private static final String SEP = J2DoPrivHelper.getLineSeparator();
 
     /**
      * Create a message appropriate for display to the user describing
@@ -46,7 +49,9 @@
         for (int i = 0; i < trackers.length; i++) {
             sourceFilePath = (trackers[i].getSourceFile() == null ?
                 _loc.get("source-tracker-file-unknown").getMessage() :
-                trackers[i].getSourceFile().getAbsolutePath());
+                (String)AccessController.doPrivileged( 
+                    J2DoPrivHelper.getAbsolutePathAction(
+                        trackers[i].getSourceFile())));
             buf.append("  ").append(_loc.get(
                 "source-trackers-location-line-item",
                 trackers[i].getResourceName(), sourceFilePath));

Modified: openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/URLMetaDataIterator.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/URLMetaDataIterator.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/URLMetaDataIterator.java (original)
+++ openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/URLMetaDataIterator.java Tue Jul  3 14:55:29 2007
@@ -23,6 +23,10 @@
 import java.io.InputStream;
 import java.net.URL;
 import java.net.URLDecoder;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
+
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
 
 /**
  * Iterator over the metadata resource represented by a URL.
@@ -59,7 +63,12 @@
             throw new IllegalStateException();
         if (_url == null)
             return null;
-        return _url.openStream();
+        try {
+            return (InputStream)AccessController.doPrivileged(
+                J2DoPrivHelper.openStreamAction(_url));
+        } catch( PrivilegedActionException pae ) {
+            throw (IOException)pae.getException();
+        }
     }
 
     public File getFile() {
@@ -68,7 +77,8 @@
         if (_url == null)
             return null;
         File file = new File(URLDecoder.decode(_url.getPath()));
-        return (file.exists()) ? file : null;
+        return (((Boolean)AccessController.doPrivileged( 
+            J2DoPrivHelper.existsAction( file ))).booleanValue()) ? file:null;
     }
 
     public void close() {

Modified: openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/XMLMetaDataParser.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/XMLMetaDataParser.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/XMLMetaDataParser.java (original)
+++ openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/XMLMetaDataParser.java Tue Jul  3 14:55:29 2007
@@ -23,6 +23,7 @@
 import java.io.InputStreamReader;
 import java.io.Reader;
 import java.net.URL;
+import java.security.AccessController;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -42,6 +43,7 @@
 import org.xml.sax.ext.LexicalHandler;
 import org.xml.sax.helpers.DefaultHandler;
 import org.apache.openjpa.lib.log.Log;
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
 import org.apache.openjpa.lib.util.JavaVersions;
 import org.apache.openjpa.lib.util.Localizer.Message;
 import org.apache.openjpa.lib.util.Localizer;
@@ -629,7 +631,8 @@
         if (_loader != null)
             return _loader;
         if (_curLoader == null)
-            _curLoader = Thread.currentThread().getContextClassLoader();
+            _curLoader = (ClassLoader)AccessController.doPrivileged( 
+                J2DoPrivHelper.getContextClassLoaderAction());
         return _curLoader;
     }
 

Modified: openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/XMLMetaDataSerializer.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/XMLMetaDataSerializer.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/XMLMetaDataSerializer.java (original)
+++ openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/XMLMetaDataSerializer.java Tue Jul  3 14:55:29 2007
@@ -23,6 +23,8 @@
 import java.io.IOException;
 import java.io.StringWriter;
 import java.io.Writer;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -42,6 +44,7 @@
 import org.xml.sax.helpers.AttributesImpl;
 import org.apache.openjpa.lib.log.Log;
 import org.apache.openjpa.lib.util.Files;
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
 import org.apache.openjpa.lib.util.Localizer;
 import org.apache.openjpa.lib.xml.Commentable;
 import org.apache.openjpa.lib.xml.XMLWriter;
@@ -135,8 +138,10 @@
         File backup = Files.backup(file, false);
         if (backup == null) {
             File parent = file.getParentFile();
-            if (parent != null && !parent.exists())
-                parent.mkdirs();
+            if (parent != null && !((Boolean)AccessController.doPrivileged( 
+                J2DoPrivHelper.existsAction( parent ))).booleanValue())
+                AccessController.doPrivileged( 
+                    J2DoPrivHelper.mkdirsAction( parent ));
         }
         return backup;
     }
@@ -191,10 +196,16 @@
             _log.info(_loc.get("ser-file", file));
 
         _backup = prepareWrite(file);
-        FileWriter out = new FileWriter(file.getCanonicalPath(),
-            (flags & APPEND) > 0);
-        serialize(out, flags);
-        out.close();
+        try {
+            FileWriter out = new FileWriter(
+                (String)AccessController.doPrivileged( 
+                    J2DoPrivHelper.getCanonicalPathAction( file )),
+                (flags & APPEND) > 0);
+            serialize(out, flags);
+            out.close();
+        } catch( PrivilegedActionException pae ) {
+            throw (IOException)pae.getException();
+        }
     }
 
     public void serialize(Writer out, int flags) throws IOException {

Modified: openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ZipFileMetaDataIterator.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ZipFileMetaDataIterator.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ZipFileMetaDataIterator.java (original)
+++ openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ZipFileMetaDataIterator.java Tue Jul  3 14:55:29 2007
@@ -24,11 +24,15 @@
 import java.io.InputStream;
 import java.net.URL;
 import java.net.URLConnection;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
 import java.util.Enumeration;
 import java.util.NoSuchElementException;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipFile;
 
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
+
 /**
  * Iterator over all metadata resources in a given zip file.
  *
@@ -54,7 +58,12 @@
         } else {
             URLConnection con = url.openConnection();
             con.setDefaultUseCaches(false);
-            _file = (ZipFile) con.getContent();
+            try {
+                _file = (ZipFile) AccessController.doPrivileged(
+                    J2DoPrivHelper.getContentAction(con));
+            } catch( PrivilegedActionException pae ) {
+                 throw (IOException)pae.getException();
+            }
         }
         _filter = filter;
         _entries = (_file == null) ? null : _file.entries();

Modified: openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/CodeFormat.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/CodeFormat.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/CodeFormat.java (original)
+++ openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/CodeFormat.java Tue Jul  3 14:55:29 2007
@@ -26,7 +26,7 @@
  */
 public final class CodeFormat implements Cloneable {
 
-    private static final String _sep = System.getProperty("line.separator");
+    private static final String _sep = J2DoPrivHelper.getLineSeparator();
 
     private String _tab = "\t";
     private boolean _spaceBeforeParen = false;

Modified: openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/Files.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/Files.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/Files.java (original)
+++ openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/Files.java Tue Jul  3 14:55:29 2007
@@ -22,6 +22,7 @@
 import java.io.BufferedOutputStream;
 import java.io.File;
 import java.io.FileInputStream;
+import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.FileWriter;
 import java.io.IOException;
@@ -30,6 +31,8 @@
 import java.io.Writer;
 import java.net.URL;
 import java.net.URLDecoder;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
 
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.exception.NestableRuntimeException;
@@ -48,13 +51,17 @@
      * the file does not exist or a backup could not be created, returns null.
      */
     public static File backup(File file, boolean copy) {
-        if (file == null || !file.exists())
+        if (file == null || !((Boolean)AccessController.doPrivileged( 
+            J2DoPrivHelper.existsAction( file ))).booleanValue())
             return null;
 
         // create new file object copy so we don't modify the original
-        File clone = new File(file.getAbsolutePath());
-        File bk = new File(file.getAbsolutePath() + "~");
-        if (!clone.renameTo(bk))
+        String aPath = (String)AccessController.doPrivileged( 
+            J2DoPrivHelper.getAbsolutePathAction( file ));
+        File clone = new File(aPath);
+        File bk = new File(aPath + "~");
+        if (!((Boolean)AccessController.doPrivileged( 
+            J2DoPrivHelper.renameToAction( clone, bk ))).booleanValue())
             return null;
         if (copy) {
             try {
@@ -76,14 +83,17 @@
             return null;
         if (!backup.getName().endsWith("~"))
             backup = new File(backup.getPath() + "~");
-        if (!backup.exists())
+        if (!((Boolean)AccessController.doPrivileged( 
+            J2DoPrivHelper.existsAction( backup ))).booleanValue())
             return null;
 
         // create new file object copy so we don't modify the original
-        String path = backup.getAbsolutePath();
+        String path = (String)AccessController.doPrivileged( 
+            J2DoPrivHelper.getAbsolutePathAction( backup )); 
         File clone = new File(path);
         File orig = new File(path.substring(0, path.length() - 1));
-        if (!clone.renameTo(orig))
+        if (!((Boolean)AccessController.doPrivileged( 
+            J2DoPrivHelper.renameToAction( clone, orig ))).booleanValue())
             return null;
         if (copy) {
             try {
@@ -122,7 +132,8 @@
         if (innerIdx != -1)
             name = name.substring(0, innerIdx);
 
-        URL rsrc = cls.getResource(name + ext);
+        URL rsrc = (URL)AccessController.doPrivileged( 
+            J2DoPrivHelper.getResourceAction(cls, name + ext)); 
         if (rsrc != null && rsrc.getProtocol().equals("file"))
             return new File(URLDecoder.decode(rsrc.getFile()));
         return null;
@@ -137,26 +148,34 @@
      */
     public static File getPackageFile(File base, String pkg, boolean mkdirs) {
         if (base == null)
-            base = new File(System.getProperty("user.dir"));
+            base = new File((String)AccessController.doPrivileged( 
+                J2DoPrivHelper.getPropertyAction("user.dir")));
         if (StringUtils.isEmpty(pkg)) {
-            if (mkdirs && !base.exists())
-                base.mkdirs();
+            if (mkdirs && !((Boolean)AccessController.doPrivileged( 
+                J2DoPrivHelper.existsAction( base ))).booleanValue())
+                AccessController.doPrivileged(
+                    J2DoPrivHelper.mkdirsAction( base ));
             return base;
         }
 
         pkg = pkg.replace('.', File.separatorChar);
         File file = null;
         try {
-            if (base.getCanonicalPath().endsWith(pkg))
+            if (((String)AccessController.doPrivileged( 
+                J2DoPrivHelper.getCanonicalPathAction( base ))).endsWith(pkg))
                 file = base;
             else
                 file = new File(base, pkg);
+        } catch( PrivilegedActionException pae ) {
+            throw new NestableRuntimeException(
+                (IOException)pae.getException());
         } catch (IOException ioe) {
             throw new NestableRuntimeException(ioe);
         }
 
-        if (mkdirs && !file.exists())
-            file.mkdirs();
+        if (mkdirs && !((Boolean)AccessController.doPrivileged( 
+            J2DoPrivHelper.existsAction( file ))).booleanValue())
+            AccessController.doPrivileged(J2DoPrivHelper.mkdirsAction( file ));
         return file;
     }
 
@@ -176,17 +195,21 @@
             return null;
 
         File file = new File(name);
-        if (file.exists())
+        if (((Boolean)AccessController.doPrivileged( 
+            J2DoPrivHelper.existsAction( file ))).booleanValue())
             return file;
 
         if (loader == null)
-            loader = Thread.currentThread().getContextClassLoader();
-        URL url = loader.getResource(name);
+            loader = (ClassLoader)AccessController.doPrivileged( 
+                J2DoPrivHelper.getContextClassLoaderAction());
+        URL url = (URL)AccessController.doPrivileged( 
+            J2DoPrivHelper.getResourceAction(loader, name)); 
         if (url != null) {
             String urlFile = url.getFile();
             if (urlFile != null) {
                 File rsrc = new File(URLDecoder.decode(urlFile));
-                if (rsrc.exists())
+                if (((Boolean)AccessController.doPrivileged( 
+                    J2DoPrivHelper.existsAction( rsrc ))).booleanValue())
                     return rsrc;
             }
         }
@@ -231,7 +254,11 @@
         if ("stderr".equals(file))
             return System.err;
         try {
-            return new FileOutputStream(getFile(file, loader));
+            return (FileOutputStream) AccessController.doPrivileged(
+                J2DoPrivHelper.newFileOutputStreamAction(
+                    getFile(file, loader)));
+        } catch( PrivilegedActionException pae ) {
+            throw new NestableRuntimeException(pae.getException());
         } catch (IOException ioe) {
             throw new NestableRuntimeException(ioe);
         }
@@ -241,19 +268,25 @@
      * Copy a file. Return false if <code>from</code> does not exist.
      */
     public static boolean copy(File from, File to) throws IOException {
-        if (from == null || to == null || !from.exists())
+        if (from == null || to == null ||
+            !((Boolean)AccessController.doPrivileged( 
+                J2DoPrivHelper.existsAction( from ))).booleanValue())
             return false;
 
         FileInputStream in = null;
         FileOutputStream out = null;
         try {
-            in = new FileInputStream(from);
+            in = (FileInputStream) AccessController.doPrivileged(
+                J2DoPrivHelper.newFileInputStreamAction(from));
             BufferedInputStream inbuf = new BufferedInputStream(in);
-            out = new FileOutputStream(to);
+            out = (FileOutputStream) AccessController.doPrivileged(
+                J2DoPrivHelper.newFileOutputStreamAction(to)); 
             BufferedOutputStream outbuf = new BufferedOutputStream(out);
             for (int b; (b = inbuf.read()) != -1; outbuf.write(b)) ;
             outbuf.flush();
             return true;
+        } catch( PrivilegedActionException pae ) {
+            throw (FileNotFoundException)pae.getException();
         } finally {
             if (in != null)
                 try {

Modified: openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/FormatPreservingProperties.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/FormatPreservingProperties.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/FormatPreservingProperties.java (original)
+++ openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/FormatPreservingProperties.java Tue Jul  3 14:55:29 2007
@@ -578,7 +578,7 @@
         }
 
         public void append(String newline) {
-            line.append(System.getProperty("line.separator"));
+            line.append(J2DoPrivHelper.getLineSeparator());
             line.append(newline);
         }