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><config&rt;</code> tag, which uses
* the configuration as a bean-like task. E.g., you can do:
- *
- * <code>
+ *
+ * <code>
* <mytask&rt;<br />
- * <config connectionUserName="foo"/&rt;<br />
+ * <config connectionUserName="foo"/&rt;<br />
* </mytask&rt;
- * </code>
+ * </code>
*
* The default configuration for the system will be used if the
* <code><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);
}