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 [1/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...
Author: mikedd
Date: Tue Jul 3 14:55:29 2007
New Revision: 552996
URL: http://svn.apache.org/viewvc?view=rev&rev=552996
Log:
OPENJPA-244 committing on behalf of Albert
Added:
openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/J2DoPrivHelper.java (with props)
openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/j2.security.test.policy
Modified:
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/ant/MappingToolTask.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/ant/ReverseMappingToolTask.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/conf/MappingRepositoryValue.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingRepository.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingTool.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ReverseMappingTool.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/DataSourceFactory.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/FileSchemaFactory.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SimpleDriverDataSource.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionaryFactory.java
openjpa/trunk/openjpa-kernel-5/src/main/java/org/apache/openjpa/enhance/PCEnhancerAgent.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/abstractstore/AbstractStoreBrokerFactory.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAVersion.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/ee/WASManagedRuntime.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/ApplicationIdTool.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/DynamicStorageGenerator.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/Reflection.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/BeanLifecycleCallbacks.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/MethodLifecycleCallbacks.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractBrokerFactory.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/Bootstrap.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/BrokerImpl.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/Filters.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ObjectIdStateManager.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/QueryImpl.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/QueryLanguages.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ResultPacker.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/jpql/JPQLExpressionBuilder.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractCFMetaDataFactory.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractMetaDataDefaults.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/FieldMetaData.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/InterfaceImplGenerator.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/SequenceMetaData.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/ApplicationIds.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/ClassResolverImpl.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/Exceptions.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/Id.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/Proxies.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/util/Serialization.java
openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/ant/AbstractTask.java
openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ConfigurationImpl.java
openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/Configurations.java
openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/FileValue.java
openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ObjectValue.java
openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ProductDerivations.java
openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/jdbc/LoggingConnectionDecorator.java
openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/jdbc/SQLFormatter.java
openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/log/LogFactoryImpl.java
openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/log/LogOutputStream.java
openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/CFMetaDataParser.java
openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ClassArgParser.java
openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ClassMetaDataIterator.java
openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ClasspathMetaDataIterator.java
openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/FileMetaDataIterator.java
openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ResourceMetaDataIterator.java
openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/SourceTrackers.java
openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/URLMetaDataIterator.java
openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/XMLMetaDataParser.java
openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/XMLMetaDataSerializer.java
openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ZipFileMetaDataIterator.java
openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/CodeFormat.java
openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/Files.java
openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/FormatPreservingProperties.java
openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/JavaVersions.java
openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/Localizer.java
openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/MultiClassLoader.java
openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/Options.java
openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/ParameterTemplate.java
openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/Services.java
openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/StreamResourceBundleProvider.java
openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/TemporaryClassLoader.java
openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/ZipResourceBundleProvider.java
openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/concurrent/Utils.java
openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/xml/XMLWriter.java
openjpa/trunk/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/JDBCPersistenceProductDerivation.java
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceMetaDataParser.java
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceMetaDataDefaults.java
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceMetaDataFactory.java
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProductDerivation.java
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceUnitInfoImpl.java
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java
openjpa/trunk/openjpa-xmlstore/src/main/java/org/apache/openjpa/xmlstore/XMLFileHandler.java
openjpa/trunk/pom.xml
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/ant/MappingToolTask.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/ant/MappingToolTask.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/ant/MappingToolTask.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/ant/MappingToolTask.java Tue Jul 3 14:55:29 2007
@@ -18,6 +18,8 @@
*/
package org.apache.openjpa.jdbc.ant;
+import java.security.AccessController;
+
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.types.EnumeratedAttribute;
import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
@@ -27,6 +29,7 @@
import org.apache.openjpa.lib.ant.AbstractTask;
import org.apache.openjpa.lib.conf.ConfigurationImpl;
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.util.MultiLoaderClassResolver;
@@ -183,7 +186,8 @@
MultiLoaderClassResolver resolver = new MultiLoaderClassResolver();
resolver.addClassLoader(loader);
- resolver.addClassLoader(MappingTool.class.getClassLoader());
+ resolver.addClassLoader((ClassLoader)AccessController.doPrivileged(
+ J2DoPrivHelper.getClassLoaderAction(MappingTool.class)));
JDBCConfiguration conf = (JDBCConfiguration) getConfiguration();
conf.setClassResolver(resolver);
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/ant/ReverseMappingToolTask.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/ant/ReverseMappingToolTask.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/ant/ReverseMappingToolTask.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/ant/ReverseMappingToolTask.java Tue Jul 3 14:55:29 2007
@@ -20,6 +20,9 @@
import java.io.File;
import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
import java.util.Properties;
import org.apache.commons.lang.StringUtils;
@@ -33,6 +36,7 @@
import org.apache.openjpa.lib.conf.Configurations;
import org.apache.openjpa.lib.util.CodeFormat;
import org.apache.openjpa.lib.util.Files;
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
import org.apache.tools.ant.types.EnumeratedAttribute;
/**
@@ -258,14 +262,25 @@
// load customizer properties
Properties customProps = new Properties();
File propsFile = Files.getFile(customizerProperties, loader);
- if (propsFile != null && propsFile.exists())
- customProps.load(new FileInputStream(propsFile));
+ if (propsFile != null && ((Boolean)AccessController.doPrivileged(
+ J2DoPrivHelper.existsAction( propsFile ))).booleanValue() ) {
+ FileInputStream fis = null;
+ try {
+ fis = (FileInputStream) AccessController.doPrivileged(
+ J2DoPrivHelper.newFileInputStreamAction(propsFile));
+ } catch( PrivilegedActionException pae ) {
+ throw (FileNotFoundException)pae.getException();
+ }
+ customProps.load(fis);
+ }
// create and configure customizer
JDBCConfiguration conf = (JDBCConfiguration) getConfiguration();
flags.customizer = (ReverseCustomizer) Configurations.
newInstance(customizerClass, conf, null,
- ReverseCustomizer.class.getClassLoader());
+ (ClassLoader)AccessController.doPrivileged(
+ J2DoPrivHelper.getClassLoaderAction(
+ ReverseCustomizer.class)));
if (flags.customizer != null)
flags.customizer.setConfiguration(customProps);
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/conf/MappingRepositoryValue.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/conf/MappingRepositoryValue.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/conf/MappingRepositoryValue.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/conf/MappingRepositoryValue.java Tue Jul 3 14:55:29 2007
@@ -19,10 +19,13 @@
package org.apache.openjpa.jdbc.conf;
import java.lang.reflect.InvocationTargetException;
+import java.security.AccessController;
import org.apache.openjpa.jdbc.meta.MappingRepository;
import org.apache.openjpa.lib.conf.Configuration;
import org.apache.openjpa.lib.conf.PluginValue;
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
+
import serp.util.Strings;
/**
@@ -44,7 +47,9 @@
// since the MappingRepository takes a JDBConfiguration constructor,
// we need to manually perform the instantiation
try {
- Class cls = Strings.toClass(clsName, type.getClassLoader());
+ Class cls = Strings.toClass(clsName,
+ (ClassLoader)AccessController.doPrivileged(
+ J2DoPrivHelper.getClassLoaderAction(type)));
return cls.getConstructor(new Class[]{ JDBCConfiguration.class }).
newInstance(new Object[]{ conf });
} catch (RuntimeException e) {
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingRepository.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingRepository.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingRepository.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingRepository.java Tue Jul 3 14:55:29 2007
@@ -19,6 +19,8 @@
package org.apache.openjpa.jdbc.meta;
import java.lang.reflect.Modifier;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
import java.sql.Types;
import java.util.Collection;
import java.util.HashMap;
@@ -70,6 +72,7 @@
import org.apache.openjpa.jdbc.sql.JoinSyntaxes;
import org.apache.openjpa.lib.conf.Configurable;
import org.apache.openjpa.lib.conf.Configurations;
+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;
@@ -446,12 +449,18 @@
try {
if (strat == null)
strat = JavaTypes.classForName(name, cls,
- ClassStrategy.class.getClassLoader());
- ClassStrategy strategy = (ClassStrategy) strat.newInstance();
+ (ClassLoader)AccessController.doPrivileged(
+ J2DoPrivHelper.getClassLoaderAction(
+ ClassStrategy.class)));
+ ClassStrategy strategy =
+ (ClassStrategy)AccessController.doPrivileged(
+ J2DoPrivHelper.newInstanceAction(strat));
Configurations.configureInstance(strategy, getConfiguration(),
props);
return strategy;
} catch (Exception e) {
+ if (e instanceof PrivilegedActionException)
+ e = ((PrivilegedActionException)e).getException();
throw new MetaDataException(_loc.get("bad-cls-strategy",
cls, name), e);
}
@@ -474,9 +483,12 @@
name = Configurations.getClassName(name);
try {
Class c = JavaTypes.classForName(name, field,
- FieldStrategy.class.getClassLoader());
+ (ClassLoader)AccessController.doPrivileged(
+ J2DoPrivHelper.getClassLoaderAction(FieldStrategy.class)));
if (FieldStrategy.class.isAssignableFrom(c)) {
- FieldStrategy strat = (FieldStrategy) c.newInstance();
+ FieldStrategy strat = (FieldStrategy)
+ AccessController.doPrivileged(
+ J2DoPrivHelper.newInstanceAction(c));
Configurations.configureInstance(strat, getConfiguration(),
props);
return strat;
@@ -484,13 +496,16 @@
// must be named handler
if (installHandlers) {
- ValueHandler vh = (ValueHandler) c.newInstance();
+ ValueHandler vh = (ValueHandler)AccessController.doPrivileged(
+ J2DoPrivHelper.newInstanceAction(c));
Configurations.configureInstance(vh, getConfiguration(),
props);
field.setHandler(vh);
}
return new HandlerFieldStrategy();
} catch (Exception e) {
+ if (e instanceof PrivilegedActionException)
+ e = ((PrivilegedActionException )e).getException();
throw new MetaDataException(_loc.get("bad-field-strategy",
field, name), e);
}
@@ -541,13 +556,18 @@
if (strat == null)
strat = JavaTypes.classForName(name,
discrim.getClassMapping(),
- DiscriminatorStrategy.class.getClassLoader());
+ (ClassLoader)AccessController.doPrivileged(
+ J2DoPrivHelper.getClassLoaderAction(
+ DiscriminatorStrategy.class)));
DiscriminatorStrategy strategy = (DiscriminatorStrategy)
- strat.newInstance();
+ AccessController.doPrivileged(
+ J2DoPrivHelper.newInstanceAction(strat));
Configurations.configureInstance(strategy, getConfiguration(),
props);
return strategy;
} catch (Exception e) {
+ if (e instanceof PrivilegedActionException)
+ e = ((PrivilegedActionException )e).getException();
throw new MetaDataException(_loc.get("bad-discrim-strategy",
discrim.getClassMapping(), name), e);
}
@@ -598,7 +618,9 @@
if (strat == null)
strat = JavaTypes.classForName(name,
version.getClassMapping(),
- VersionStrategy.class.getClassLoader());
+ (ClassLoader)AccessController.doPrivileged(
+ J2DoPrivHelper.getClassLoaderAction(
+ VersionStrategy.class)));
} catch (Exception e) {
throw new MetaDataException(_loc.get("bad-version-strategy",
version.getClassMapping(), name), e);
@@ -613,11 +635,15 @@
protected VersionStrategy instantiateVersionStrategy(Class strat,
Version version, String props) {
try {
- VersionStrategy strategy = (VersionStrategy) strat.newInstance();
+ VersionStrategy strategy = (VersionStrategy)
+ AccessController.doPrivileged(
+ J2DoPrivHelper.newInstanceAction(strat));
Configurations.configureInstance(strategy, getConfiguration(),
props);
return strategy;
} catch (Exception e) {
+ if (e instanceof PrivilegedActionException)
+ e = ((PrivilegedActionException )e).getException();
throw new MetaDataException(_loc.get("bad-version-strategy",
version.getClassMapping(), strat + ""), e);
}
@@ -914,11 +940,16 @@
String props = Configurations.getProperties(name);
name = Configurations.getClassName(name);
try {
- Object o = JavaTypes.classForName(name, val,
- FieldStrategy.class.getClassLoader()).newInstance();
+ Class c = JavaTypes.classForName(name, val,
+ (ClassLoader)AccessController.doPrivileged(
+ J2DoPrivHelper.getClassLoaderAction(FieldStrategy.class)));
+ Object o = AccessController.doPrivileged(
+ J2DoPrivHelper.newInstanceAction(c));
Configurations.configureInstance(o, getConfiguration(), props);
return o;
} catch (Exception e) {
+ if (e instanceof PrivilegedActionException)
+ e = ((PrivilegedActionException )e).getException();
throw new MetaDataException(_loc.get("bad-mapped-strategy",
val, name), e);
}
@@ -937,15 +968,19 @@
name = Configurations.getClassName(name);
try {
Class c = JavaTypes.classForName(name, val,
- ValueHandler.class.getClassLoader());
+ (ClassLoader)AccessController.doPrivileged(
+ J2DoPrivHelper.getClassLoaderAction(ValueHandler.class)));
if (ValueHandler.class.isAssignableFrom(c)) {
- ValueHandler vh = (ValueHandler) c.newInstance();
+ ValueHandler vh = (ValueHandler)AccessController.doPrivileged(
+ J2DoPrivHelper.newInstanceAction(c));
Configurations.configureInstance(vh, getConfiguration(),
props);
return vh;
}
return null; // named field strategy
} catch (Exception e) {
+ if (e instanceof PrivilegedActionException)
+ e = ((PrivilegedActionException )e).getException();
throw new MetaDataException(_loc.get("bad-value-handler",
val, name), e);
}
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingTool.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingTool.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingTool.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingTool.java Tue Jul 3 14:55:29 2007
@@ -22,6 +22,8 @@
import java.io.IOException;
import java.io.PrintWriter;
import java.io.Writer;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.Collection;
@@ -51,6 +53,7 @@
import org.apache.openjpa.lib.log.Log;
import org.apache.openjpa.lib.meta.ClassArgParser;
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.Services;
@@ -1075,9 +1078,12 @@
Class[] types = Services.getImplementorClasses(ImportExport.class);
ImportExport[] instances = new ImportExport[types.length];
for (int i = 0; i < types.length; i++)
- instances[i] = (ImportExport) types[i].newInstance();
+ instances[i] = (ImportExport)AccessController.doPrivileged(
+ J2DoPrivHelper.newInstanceAction(types[i]));
return instances;
} catch (Throwable t) {
+ if (t instanceof PrivilegedActionException)
+ t = ((PrivilegedActionException)t).getException();
throw new InternalException(_loc.get("importexport-instantiate"),t);
}
}
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ReverseMappingTool.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ReverseMappingTool.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ReverseMappingTool.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ReverseMappingTool.java Tue Jul 3 14:55:29 2007
@@ -21,10 +21,13 @@
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
+import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.StringWriter;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
import java.sql.SQLException;
import java.sql.Types;
import java.util.ArrayList;
@@ -77,6 +80,7 @@
import org.apache.openjpa.lib.log.Log;
import org.apache.openjpa.lib.util.CodeFormat;
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.meta.ClassMetaData;
@@ -1891,9 +1895,18 @@
File customFile = Files.getFile
(opts.removeProperty("customizerProperties", "cp", null), null);
Properties customProps = new Properties();
- if (customFile != null && customFile.exists())
- customProps.load(new FileInputStream(customFile));
-
+ if (customFile != null && ((Boolean)AccessController.doPrivileged(
+ J2DoPrivHelper.existsAction( customFile ))).booleanValue()) {
+ FileInputStream fis = null;
+ try {
+ fis = (FileInputStream) AccessController.doPrivileged(
+ J2DoPrivHelper.newFileInputStreamAction(customFile));
+ } catch( PrivilegedActionException pae ) {
+ throw (FileNotFoundException)pae.getException();
+ }
+ customProps.load(fis);
+ }
+
// separate the properties for the customizer and code format
Options customOpts = new Options();
Options formatOpts = new Options();
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/DataSourceFactory.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/DataSourceFactory.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/DataSourceFactory.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/DataSourceFactory.java Tue Jul 3 14:55:29 2007
@@ -18,6 +18,7 @@
*/
package org.apache.openjpa.jdbc.schema;
+import java.security.AccessController;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.SQLException;
@@ -39,6 +40,7 @@
import org.apache.openjpa.lib.jdbc.JDBCListener;
import org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator;
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.util.ImplHelper;
@@ -110,7 +112,9 @@
// see if their driver name is actually a data source
if (DataSource.class.isAssignableFrom(driverClass)) {
return (DataSource) Configurations.newInstance(driver,
- conf, props, DataSource.class.getClassLoader());
+ conf, props, (ClassLoader)AccessController.doPrivileged(
+ J2DoPrivHelper.getClassLoaderAction(
+ DataSource.class)));
}
}
catch (OpenJPAException ke) {
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/FileSchemaFactory.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/FileSchemaFactory.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/FileSchemaFactory.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/FileSchemaFactory.java Tue Jul 3 14:55:29 2007
@@ -21,11 +21,13 @@
import java.io.File;
import java.io.IOException;
import java.net.URL;
+import java.security.AccessController;
import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
import org.apache.openjpa.lib.conf.Configurable;
import org.apache.openjpa.lib.conf.Configuration;
import org.apache.openjpa.lib.util.Files;
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
import org.apache.openjpa.util.GeneralException;
/**
@@ -77,7 +79,8 @@
}
public SchemaGroup readSchema() {
- URL url = _loader.getResource(_fileName);
+ URL url = (URL)AccessController.doPrivileged(
+ J2DoPrivHelper.getResourceAction(_loader, _fileName));
if (url == null)
return new SchemaGroup();
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SimpleDriverDataSource.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SimpleDriverDataSource.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SimpleDriverDataSource.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SimpleDriverDataSource.java Tue Jul 3 14:55:29 2007
@@ -19,6 +19,8 @@
package org.apache.openjpa.jdbc.schema;
import java.io.PrintWriter;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
@@ -27,6 +29,7 @@
import java.util.Properties;
import org.apache.openjpa.jdbc.sql.DBDictionary;
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
import org.apache.openjpa.util.StoreException;
/**
@@ -166,12 +169,16 @@
}
try {
- _driver = (Driver) Class.forName(_connectionDriverName,
- true, _classLoader).newInstance();
+ Class c = Class.forName(_connectionDriverName,
+ true, _classLoader);
+ _driver = (Driver)AccessController.doPrivileged(
+ J2DoPrivHelper.newInstanceAction(c));
return _driver;
} catch (Exception e) {
if (e instanceof RuntimeException)
throw(RuntimeException) e;
+ if (e instanceof PrivilegedActionException)
+ e = ((PrivilegedActionException)e).getException();
throw new StoreException(e);
}
}
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionaryFactory.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionaryFactory.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionaryFactory.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionaryFactory.java Tue Jul 3 14:55:29 2007
@@ -18,6 +18,8 @@
*/
package org.apache.openjpa.jdbc.sql;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.SQLException;
@@ -27,6 +29,7 @@
import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
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.Localizer;
import org.apache.openjpa.util.StoreException;
import org.apache.openjpa.util.UserException;
@@ -117,9 +120,15 @@
String dclass, String props, Connection conn) {
DBDictionary dict = null;
try {
- dict = (DBDictionary) Class.forName(dclass, true,
- DBDictionary.class.getClassLoader()).newInstance();
+ Class c = Class.forName(dclass, true,
+ (ClassLoader)AccessController.doPrivileged(
+ J2DoPrivHelper.getClassLoaderAction(
+ DBDictionary.class)));
+ dict = (DBDictionary)AccessController.doPrivileged(
+ J2DoPrivHelper.newInstanceAction(c));
} catch (Exception e) {
+ if (e instanceof PrivilegedActionException)
+ e = ((PrivilegedActionException)e).getException();
throw new UserException(e).setFatal(true);
}
@@ -236,7 +245,7 @@
*/
public static String toString(DatabaseMetaData meta)
throws SQLException {
- String lineSep = System.getProperty("line.separator");
+ String lineSep = J2DoPrivHelper.getLineSeparator();
StringBuffer buf = new StringBuffer();
try {
buf.append("catalogSeparator: ")
Modified: openjpa/trunk/openjpa-kernel-5/src/main/java/org/apache/openjpa/enhance/PCEnhancerAgent.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel-5/src/main/java/org/apache/openjpa/enhance/PCEnhancerAgent.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-kernel-5/src/main/java/org/apache/openjpa/enhance/PCEnhancerAgent.java (original)
+++ openjpa/trunk/openjpa-kernel-5/src/main/java/org/apache/openjpa/enhance/PCEnhancerAgent.java Tue Jul 3 14:55:29 2007
@@ -19,10 +19,12 @@
package org.apache.openjpa.enhance;
import java.lang.instrument.Instrumentation;
+import java.security.AccessController;
import org.apache.openjpa.conf.OpenJPAConfiguration;
import org.apache.openjpa.conf.OpenJPAConfigurationImpl;
import org.apache.openjpa.lib.conf.Configurations;
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
import org.apache.openjpa.lib.util.Options;
import org.apache.openjpa.lib.util.TemporaryClassLoader;
import org.apache.openjpa.util.ClassResolver;
@@ -54,8 +56,9 @@
conf.setConnectionDriverName(null);
conf.setConnectionFactoryName(null);
// set single class resolver
- final ClassLoader tmpLoader = new TemporaryClassLoader(Thread.
- currentThread().getContextClassLoader());
+ final ClassLoader tmpLoader = new TemporaryClassLoader(
+ (ClassLoader)AccessController.doPrivileged(
+ J2DoPrivHelper.getContextClassLoaderAction()));
conf.setClassResolver(new ClassResolver() {
public ClassLoader getClassLoader(Class context, ClassLoader env) {
return tmpLoader;
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/abstractstore/AbstractStoreBrokerFactory.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/abstractstore/AbstractStoreBrokerFactory.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/abstractstore/AbstractStoreBrokerFactory.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/abstractstore/AbstractStoreBrokerFactory.java Tue Jul 3 14:55:29 2007
@@ -18,6 +18,7 @@
*/
package org.apache.openjpa.abstractstore;
+import java.security.AccessController;
import java.util.Map;
import java.util.Properties;
@@ -29,6 +30,7 @@
import org.apache.openjpa.lib.conf.ConfigurationProvider;
import org.apache.openjpa.lib.conf.Configurations;
import org.apache.openjpa.lib.conf.ProductDerivations;
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
import org.apache.openjpa.lib.util.Localizer;
import org.apache.openjpa.util.UserException;
@@ -131,7 +133,9 @@
private static AbstractStoreManager createStoreManager(String cls,
String props) {
AbstractStoreManager store = (AbstractStoreManager) Configurations.
- newInstance(cls, AbstractStoreManager.class.getClassLoader());
+ newInstance(cls, (ClassLoader)AccessController.doPrivileged(
+ J2DoPrivHelper.getClassLoaderAction(
+ AbstractStoreManager.class)));
Configurations.configureInstance(store, null, props,
PROP_ABSTRACT_STORE);
if (store == null)
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAVersion.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAVersion.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAVersion.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAVersion.java Tue Jul 3 14:55:29 2007
@@ -20,9 +20,12 @@
import java.io.File;
import java.io.InputStream;
+import java.security.AccessController;
import java.util.Properties;
import java.util.StringTokenizer;
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
+
/**
* This class contains version information for OpenJPA. It uses
* Ant's filter tokens to convert the template into a java
@@ -110,7 +113,9 @@
buf.append("java.class.path:\n");
StringTokenizer tok = new StringTokenizer
- (System.getProperty("java.class.path"), File.pathSeparator);
+ ((String)AccessController.doPrivileged(
+ J2DoPrivHelper.getPropertyAction("java.class.path")),
+ File.pathSeparator);
while (tok.hasMoreTokens()) {
buf.append("\t").append(tok.nextToken());
buf.append("\n");
@@ -132,6 +137,8 @@
}
private StringBuffer appendProperty(String prop, StringBuffer buf) {
- return buf.append(prop).append(": ").append(System.getProperty(prop));
+ return buf.append(prop).append(": ")
+ .append((String)AccessController.doPrivileged(
+ J2DoPrivHelper.getPropertyAction(prop)));
}
}
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/ee/WASManagedRuntime.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/ee/WASManagedRuntime.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/ee/WASManagedRuntime.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/ee/WASManagedRuntime.java Tue Jul 3 14:55:29 2007
@@ -21,6 +21,7 @@
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Method;
+import java.security.AccessController;
import javax.naming.Context;
import javax.naming.InitialContext;
@@ -39,6 +40,7 @@
import org.apache.openjpa.lib.conf.Configurable;
import org.apache.openjpa.lib.conf.Configuration;
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.util.InvalidStateException;
import org.apache.openjpa.util.NoTransactionException;
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/ApplicationIdTool.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/ApplicationIdTool.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/ApplicationIdTool.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/ApplicationIdTool.java Tue Jul 3 14:55:29 2007
@@ -24,6 +24,7 @@
import java.io.PrintWriter;
import java.io.Writer;
import java.lang.reflect.Modifier;
+import java.security.AccessController;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -44,6 +45,7 @@
import org.apache.openjpa.lib.meta.ClassArgParser;
import org.apache.openjpa.lib.util.CodeFormat;
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;
@@ -438,8 +440,8 @@
// indent the entire code block one level to make it
// a propertly indented innder class
_code = code.getTab() + Strings.replace(_code,
- System.getProperty("line.separator"),
- System.getProperty("line.separator") + code.getTab());
+ J2DoPrivHelper.getLineSeparator(),
+ J2DoPrivHelper.getLineSeparator() + code.getTab());
}
return true;
@@ -1417,9 +1419,11 @@
name = Strings.getPackageName(context) + "." + name;
// first try with regular class loader
- ClassLoader loader = context.getClassLoader();
+ ClassLoader loader = (ClassLoader)AccessController.doPrivileged(
+ J2DoPrivHelper.getClassLoaderAction(context));
if (loader == null)
- loader = Thread.currentThread().getContextClassLoader();
+ loader = (ClassLoader)AccessController.doPrivileged(
+ J2DoPrivHelper.getContextClassLoaderAction());
try {
return Class.forName(name, false, loader);
} catch (Throwable t) {
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/DynamicStorageGenerator.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/DynamicStorageGenerator.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/DynamicStorageGenerator.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/DynamicStorageGenerator.java Tue Jul 3 14:55:29 2007
@@ -19,8 +19,10 @@
package org.apache.openjpa.enhance;
import java.lang.reflect.Constructor;
+import java.security.AccessController;
import org.apache.commons.lang.StringUtils;
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
import org.apache.openjpa.meta.JavaTypes;
import org.apache.openjpa.util.InternalException;
import serp.bytecode.BCClass;
@@ -95,7 +97,8 @@
// the project/classloader for the classes.
private final Project _project = new Project();
private final BCClassLoader _loader = new BCClassLoader(_project,
- DynamicStorage.class.getClassLoader());
+ (ClassLoader)AccessController.doPrivileged(
+ J2DoPrivHelper.getClassLoaderAction(DynamicStorage.class)));
/**
* Generate a generic {@link DynamicStorage} instance with the given
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java Tue Jul 3 14:55:29 2007
@@ -30,6 +30,8 @@
import java.lang.reflect.Field;
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.Arrays;
import java.util.Collection;
@@ -50,6 +52,7 @@
import org.apache.openjpa.lib.meta.ClassArgParser;
import org.apache.openjpa.lib.util.BytecodeWriter;
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.Services;
@@ -130,11 +133,13 @@
static {
Class[] classes = Services.getImplementorClasses(
AuxiliaryEnhancer.class,
- AuxiliaryEnhancer.class.getClassLoader());
+ (ClassLoader)AccessController.doPrivileged(
+ J2DoPrivHelper.getClassLoaderAction(AuxiliaryEnhancer.class)));
List auxEnhancers = new ArrayList(classes.length);
for (int i = 0; i < classes.length; i++) {
try {
- auxEnhancers.add(classes[i].newInstance());
+ auxEnhancers.add(AccessController.doPrivileged(
+ J2DoPrivHelper.newInstanceAction(classes[i])));
} catch (Throwable t) {
// aux enhancer may rely on non-existant spec classes, etc
}
@@ -479,8 +484,9 @@
* Package-protected and static for testing.
*/
static BCField getReturnedField(BCMethod meth) {
- return findField(meth, new Code().xreturn().setType
- (meth.getReturnType()), false);
+ return findField(meth, ((Code)AccessController.doPrivileged(
+ J2DoPrivHelper.newCodeAction())).xreturn()
+ .setType(meth.getReturnType()), false);
}
/**
@@ -488,7 +494,8 @@
* Package-protected and static for testing.
*/
static BCField getAssignedField(BCMethod meth) {
- return findField(meth, new Code().putfield(), true);
+ return findField(meth, ((Code)AccessController.doPrivileged(
+ J2DoPrivHelper.newCodeAction())).putfield(), true);
}
/**
@@ -567,7 +574,7 @@
if (_violations == null)
return;
- String sep = System.getProperty("line.separator");
+ String sep = J2DoPrivHelper.getLineSeparator();
StringBuffer buf = new StringBuffer();
for (Iterator itr = _violations.iterator(); itr.hasNext();) {
buf.append(itr.next());
@@ -589,7 +596,8 @@
*/
private void replaceAndValidateFieldAccess() {
// create template putfield/getfield instructions to search for
- Code template = new Code();
+ Code template = (Code)AccessController.doPrivileged(
+ J2DoPrivHelper.newCodeAction());
Instruction put = template.putfield();
Instruction get = template.getfield();
Instruction stat = template.invokestatic();
@@ -1193,51 +1201,73 @@
*/
private void addStockMethods()
throws NoSuchMethodException {
- // pcGetGenericContext
- translateFromStateManagerMethod(SMTYPE.getDeclaredMethod
- ("get" + CONTEXTNAME, (Class[]) null));
-
- // pcFetchObjectId
- translateFromStateManagerMethod(SMTYPE.getDeclaredMethod
- ("fetchObjectId", (Class[]) null));
-
- // pcIsDeleted
- translateFromStateManagerMethod(SMTYPE.getDeclaredMethod
- ("isDeleted", (Class[]) null));
-
- // pcIsDirty
- translateFromStateManagerMethod(SMTYPE.getDeclaredMethod
- ("isDirty", (Class[]) null));
-
- // pcIsNew
- translateFromStateManagerMethod(SMTYPE.getDeclaredMethod
- ("isNew", (Class[]) null));
-
- // pcIsPersistent
- translateFromStateManagerMethod(SMTYPE.getDeclaredMethod
- ("isPersistent", (Class[]) null));
-
- // pcIsTransactional
- translateFromStateManagerMethod(SMTYPE.getDeclaredMethod
- ("isTransactional", (Class[]) null));
-
- // pcSerializing
- translateFromStateManagerMethod(SMTYPE.getDeclaredMethod
- ("serializing", (Class[]) null));
-
- // pcDirty
- translateFromStateManagerMethod(SMTYPE.getDeclaredMethod("dirty",
- new Class[]{ String.class }));
-
- // pcGetStateManager
- BCMethod meth = _pc.declareMethod(PRE + "GetStateManager",
- StateManager.class, null);
- Code code = meth.getCode(true);
- loadManagedInstance(code, false);
- code.getfield().setField(SM, StateManager.class);
- code.areturn();
- code.calculateMaxStack();
- code.calculateMaxLocals();
+ try {
+ // pcGetGenericContext
+ translateFromStateManagerMethod(
+ (Method)AccessController.doPrivileged(
+ J2DoPrivHelper.getDeclaredMethodAction(
+ SMTYPE, "get" + CONTEXTNAME, (Class[]) null)));
+
+ // pcFetchObjectId
+ translateFromStateManagerMethod(
+ (Method)AccessController.doPrivileged(
+ J2DoPrivHelper.getDeclaredMethodAction(
+ SMTYPE, "fetchObjectId", (Class[]) null)));
+
+ // pcIsDeleted
+ translateFromStateManagerMethod(
+ (Method)AccessController.doPrivileged(
+ J2DoPrivHelper.getDeclaredMethodAction(
+ SMTYPE, "isDeleted", (Class[]) null)));
+
+ // pcIsDirty
+ translateFromStateManagerMethod(
+ (Method)AccessController.doPrivileged(
+ J2DoPrivHelper.getDeclaredMethodAction(
+ SMTYPE, "isDirty", (Class[]) null)));
+
+ // pcIsNew
+ translateFromStateManagerMethod(
+ (Method)AccessController.doPrivileged(
+ J2DoPrivHelper.getDeclaredMethodAction(
+ SMTYPE, "isNew", (Class[]) null)));
+
+ // pcIsPersistent
+ translateFromStateManagerMethod(
+ (Method)AccessController.doPrivileged(
+ J2DoPrivHelper.getDeclaredMethodAction(
+ SMTYPE, "isPersistent", (Class[]) null)));
+
+ // pcIsTransactional
+ translateFromStateManagerMethod(
+ (Method)AccessController.doPrivileged(
+ J2DoPrivHelper.getDeclaredMethodAction(
+ SMTYPE, "isTransactional", (Class[]) null)));
+
+ // pcSerializing
+ translateFromStateManagerMethod(
+ (Method)AccessController.doPrivileged(
+ J2DoPrivHelper.getDeclaredMethodAction(
+ SMTYPE, "serializing", (Class[]) null)));
+
+ // pcDirty
+ translateFromStateManagerMethod(
+ (Method)AccessController.doPrivileged(
+ J2DoPrivHelper.getDeclaredMethodAction(
+ SMTYPE, "dirty", new Class[]{ String.class })));
+
+ // pcGetStateManager
+ BCMethod meth = _pc.declareMethod(PRE + "GetStateManager",
+ StateManager.class, null);
+ Code code = meth.getCode(true);
+ loadManagedInstance(code, false);
+ code.getfield().setField(SM, StateManager.class);
+ code.areturn();
+ code.calculateMaxStack();
+ code.calculateMaxLocals();
+ } catch( PrivilegedActionException pae ) {
+ throw (NoSuchMethodException)pae.getException();
+ }
}
/**
@@ -2160,7 +2190,15 @@
// use reflection to return the right method
String name = prefix + typeName + "Field";
Class[] params = (Class[]) plist.toArray(new Class[plist.size()]);
- return owner.getDeclaredMethod(name, params);
+
+ Method method = null;
+ try {
+ method = (Method) AccessController.doPrivileged(
+ J2DoPrivHelper.getDeclaredMethodAction(owner, name, params));
+ } catch( PrivilegedActionException pae ) {
+ throw (NoSuchMethodException)pae.getException();
+ }
+ return method;
}
/**
@@ -2459,7 +2497,8 @@
code.vreturn();
}
- Instruction tmplate = new Code().vreturn();
+ Instruction tmplate = ((Code)AccessController.doPrivileged(
+ J2DoPrivHelper.newCodeAction())).vreturn();
JumpInstruction toret;
Instruction ret;
code.beforeFirst();
@@ -2727,7 +2766,8 @@
if (clinit != null) {
code = clinit.getCode(true);
if (replaceLast) {
- Code template = new Code();
+ Code template = (Code)AccessController.doPrivileged(
+ J2DoPrivHelper.newCodeAction());
code.searchForward(template.vreturn());
code.previous();
code.set(template.nop());
@@ -2768,7 +2808,9 @@
if (clone == null) {
// add clone support for base classes
// which also implement cloneable
- if (!_pc.isInstanceOf(Cloneable.class)
+ if (!((Boolean)AccessController.doPrivileged(
+ J2DoPrivHelper.isInstanceOfAction( _pc, Cloneable.class )))
+ .booleanValue()
|| !superName.equals(Object.class.getName()))
return;
@@ -2796,8 +2838,9 @@
}
// create template super.clone () instruction to match against
- Instruction template = new Code().invokespecial().setMethod
- (superName, "clone", Object.class.getName(), null);
+ Instruction template = ((Code)AccessController.doPrivileged(
+ J2DoPrivHelper.newCodeAction())).invokespecial()
+ .setMethod(superName, "clone", Object.class.getName(), null);
// find calls to the template instruction; on match
// clone will be on stack
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/Reflection.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/Reflection.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/Reflection.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/Reflection.java Tue Jul 3 14:55:29 2007
@@ -23,8 +23,10 @@
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
+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.apache.openjpa.util.GeneralException;
import org.apache.openjpa.util.UserException;
@@ -116,7 +118,8 @@
*/
private static Method getDeclaredMethod(Class cls, String name,
Class param) {
- Method[] methods = cls.getDeclaredMethods();
+ Method[] methods = (Method[])AccessController.doPrivileged(
+ J2DoPrivHelper.getDeclaredMethodsAction( cls ));
for (int i = 0 ; i < methods.length; i++) {
if (name.equals(methods[i].getName())) {
Class[] methodParams = methods[i].getParameterTypes();
@@ -160,7 +163,8 @@
* @since 0.9.8
*/
private static Field getDeclaredField(Class cls, String name) {
- Field[] fields = cls.getDeclaredFields();
+ Field[] fields = (Field[])AccessController.doPrivileged(
+ J2DoPrivHelper.getDeclaredFieldsAction( cls ));
for (int i = 0 ; i < fields.length; i++) {
if (name.equals(fields[i].getName()))
return fields[i];
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/BeanLifecycleCallbacks.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/BeanLifecycleCallbacks.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/BeanLifecycleCallbacks.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/BeanLifecycleCallbacks.java Tue Jul 3 14:55:29 2007
@@ -22,7 +22,10 @@
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.lang.reflect.Method;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
import org.apache.openjpa.lib.util.Localizer;
import org.apache.openjpa.util.UserException;
@@ -60,8 +63,11 @@
private Object newListener(Class cls) {
try {
- return cls.newInstance();
+ return AccessController.doPrivileged(
+ J2DoPrivHelper.newInstanceAction(cls));
} catch (Throwable t) {
+ if (t instanceof PrivilegedActionException)
+ t = ((PrivilegedActionException )t).getException();
throw new UserException(_loc.get("bean-constructor",
cls.getName()), t);
}
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/MethodLifecycleCallbacks.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/MethodLifecycleCallbacks.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/MethodLifecycleCallbacks.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/MethodLifecycleCallbacks.java Tue Jul 3 14:55:29 2007
@@ -23,8 +23,10 @@
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.lang.reflect.Method;
+import java.security.AccessController;
import java.util.Arrays;
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
import org.apache.openjpa.lib.util.Localizer;
import org.apache.openjpa.util.UserException;
@@ -101,7 +103,8 @@
protected static Method getMethod(Class cls, String method, Class[] args) {
Class currentClass = cls;
do {
- Method[] methods = currentClass.getDeclaredMethods();
+ Method[] methods = (Method[])AccessController.doPrivileged(
+ J2DoPrivHelper.getDeclaredMethodsAction( currentClass ));
for (int i = 0; i < methods.length; i++) {
if (!method.equals(methods[i].getName()))
continue;
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractBrokerFactory.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractBrokerFactory.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractBrokerFactory.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractBrokerFactory.java Tue Jul 3 14:55:29 2007
@@ -41,6 +41,7 @@
import org.apache.openjpa.event.RemoteCommitEventManager;
import org.apache.openjpa.event.BrokerFactoryEvent;
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.ReferenceHashSet;
import org.apache.openjpa.lib.util.concurrent.ConcurrentHashMap;
@@ -553,7 +554,7 @@
log.info(getFactoryInitializationBanner());
if (log.isTraceEnabled()) {
Map props = _conf.toProperties(true);
- String lineSep = System.getProperty("line.separator");
+ String lineSep = J2DoPrivHelper.getLineSeparator();
StringBuffer buf = new StringBuffer();
Map.Entry entry;
for (Iterator itr = props.entrySet().iterator();
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/Bootstrap.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/Bootstrap.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/Bootstrap.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/Bootstrap.java Tue Jul 3 14:55:29 2007
@@ -20,11 +20,13 @@
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
+import java.security.AccessController;
import org.apache.openjpa.conf.BrokerFactoryValue;
import org.apache.openjpa.lib.conf.ConfigurationProvider;
import org.apache.openjpa.lib.conf.MapConfigurationProvider;
import org.apache.openjpa.lib.conf.ProductDerivations;
+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.OpenJPAException;
@@ -113,7 +115,9 @@
} catch (NoSuchMethodException nsme) {
// handle cases where there is a mismatch between loaders by falling
// back to the configuration's class loader for broker resolution
- cls = getFactoryClass(conf, conf.getClass().getClassLoader());
+ cls = getFactoryClass(conf,
+ (ClassLoader)AccessController.doPrivileged(
+ J2DoPrivHelper.getClassLoaderAction(conf.getClass())));
meth = cls.getMethod(methodName, FACTORY_ARGS);
}
@@ -135,7 +139,8 @@
private static Class getFactoryClass(ConfigurationProvider conf,
ClassLoader loader) {
if (loader == null)
- loader = Thread.currentThread().getContextClassLoader();
+ loader = (ClassLoader)AccessController.doPrivileged(
+ J2DoPrivHelper.getContextClassLoaderAction());
Object cls = BrokerFactoryValue.get(conf);
if (cls instanceof Class)
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/BrokerImpl.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/BrokerImpl.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/BrokerImpl.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/BrokerImpl.java Tue Jul 3 14:55:29 2007
@@ -20,6 +20,7 @@
import java.io.Serializable;
import java.lang.reflect.Modifier;
+import java.security.AccessController;
import java.util.AbstractCollection;
import java.util.ArrayList;
import java.util.BitSet;
@@ -62,6 +63,7 @@
import org.apache.openjpa.event.TransactionEventManager;
import org.apache.openjpa.kernel.exps.ExpressionParser;
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.ReferenceHashMap;
import org.apache.openjpa.lib.util.ReferenceHashSet;
@@ -256,7 +258,8 @@
public void initialize(AbstractBrokerFactory factory,
DelegatingStoreManager sm, boolean managed, int connMode) {
_initializeWasInvoked = true;
- _loader = Thread.currentThread().getContextClassLoader();
+ _loader = (ClassLoader)AccessController.doPrivileged(
+ J2DoPrivHelper.getContextClassLoaderAction());
_jca = new JCAHelper();
_conf = factory.getConfiguration();
_compat = _conf.getCompatibilityInstance();
@@ -4131,7 +4134,9 @@
// 1.5 doesn't initialize classes without a true Class.forName
if (!PCRegistry.isRegistered(cls)) {
try {
- Class.forName(cls.getName(), true, cls.getClassLoader());
+ Class.forName(cls.getName(), true,
+ (ClassLoader)AccessController.doPrivileged(
+ J2DoPrivHelper.getClassLoaderAction(cls)));
} catch (Throwable t) {
}
}
@@ -4270,8 +4275,12 @@
if (intfs[i].getName().equals(PersistenceCapable.class.getName())) {
throw new UserException(_loc.get("pc-loader-different",
Exceptions.toString(obj),
- PersistenceCapable.class.getClassLoader(),
- intfs[i].getClassLoader())).setFailedObject(obj);
+ (ClassLoader)AccessController.doPrivileged(
+ J2DoPrivHelper.getClassLoaderAction(
+ PersistenceCapable.class)),
+ (ClassLoader)AccessController.doPrivileged(
+ J2DoPrivHelper.getClassLoaderAction(intfs[i]))))
+ .setFailedObject(obj);
}
}
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/Filters.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/Filters.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/Filters.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/Filters.java Tue Jul 3 14:55:29 2007
@@ -18,10 +18,11 @@
*/
package org.apache.openjpa.kernel;
-import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.math.BigInteger;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
@@ -31,10 +32,10 @@
import org.apache.openjpa.enhance.Reflection;
import org.apache.openjpa.kernel.exps.AggregateListener;
import org.apache.openjpa.kernel.exps.FilterListener;
+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.JavaTypes;
-import org.apache.openjpa.util.ImplHelper;
import org.apache.openjpa.util.InternalException;
import org.apache.openjpa.util.UserException;
import serp.util.Numbers;
@@ -746,9 +747,12 @@
Exception cause = null;
if (hint instanceof String) {
try {
- return (AggregateListener) Class.forName((String) hint, true,
- loader).newInstance();
+ return (AggregateListener) AccessController.doPrivileged(
+ J2DoPrivHelper.newInstanceAction(
+ Class.forName((String) hint, true, loader)));
} catch (Exception e) {
+ if (e instanceof PrivilegedActionException)
+ e = ((PrivilegedActionException)e).getException();
cause = e;
}
}
@@ -781,10 +785,13 @@
AggregateListener[] aggs = new AggregateListener[clss.length];
try {
for (int i = 0; i < clss.length; i++)
- aggs[i] = (AggregateListener) Class.forName(clss[i], true,
- loader).newInstance();
+ aggs[i] = (AggregateListener)AccessController.doPrivileged(
+ J2DoPrivHelper.newInstanceAction(
+ Class.forName(clss[i], true, loader)));
return aggs;
} catch (Exception e) {
+ if (e instanceof PrivilegedActionException)
+ e = ((PrivilegedActionException)e).getException();
cause = e;
}
}
@@ -806,9 +813,12 @@
Exception cause = null;
if (hint instanceof String) {
try {
- return (FilterListener) Class.forName((String) hint, true,
- loader).newInstance();
+ return (FilterListener)AccessController.doPrivileged(
+ J2DoPrivHelper.newInstanceAction(
+ Class.forName((String) hint, true, loader)));
} catch (Exception e) {
+ if (e instanceof PrivilegedActionException)
+ e = ((PrivilegedActionException)e).getException();
cause = e;
}
}
@@ -840,10 +850,13 @@
FilterListener[] filts = new FilterListener[clss.length];
try {
for (int i = 0; i < clss.length; i++)
- filts[i] = (FilterListener) Class.forName(clss[i], true,
- loader).newInstance();
+ filts[i] = (FilterListener)AccessController.doPrivileged(
+ J2DoPrivHelper.newInstanceAction(
+ Class.forName(clss[i], true, loader)));
return filts;
} catch (Exception e) {
+ if (e instanceof PrivilegedActionException)
+ e = ((PrivilegedActionException)e).getException();
cause = e;
}
}
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ObjectIdStateManager.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ObjectIdStateManager.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ObjectIdStateManager.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ObjectIdStateManager.java Tue Jul 3 14:55:29 2007
@@ -22,12 +22,14 @@
import java.io.ObjectOutput;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
import java.util.BitSet;
-import org.apache.commons.lang.StringUtils;
import org.apache.openjpa.enhance.PersistenceCapable;
import org.apache.openjpa.enhance.StateManager;
import org.apache.openjpa.enhance.Reflection;
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
import org.apache.openjpa.meta.ClassMetaData;
import org.apache.openjpa.meta.FieldMetaData;
import org.apache.openjpa.meta.JavaTypes;
@@ -710,8 +712,12 @@
private void setValue(int field, Object val, boolean forceInst) {
if (_oid == null && forceInst) {
try {
- _oid = getMetaData().getDescribedType().newInstance();
+ _oid = AccessController.doPrivileged(
+ J2DoPrivHelper.newInstanceAction(
+ getMetaData().getDescribedType()));
} catch (Exception e) {
+ if (e instanceof PrivilegedActionException)
+ e = ((PrivilegedActionException)e).getException();
throw new GeneralException(e);
}
} else if (_oid == null)
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/QueryImpl.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/QueryImpl.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/QueryImpl.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/QueryImpl.java Tue Jul 3 14:55:29 2007
@@ -19,6 +19,7 @@
package org.apache.openjpa.kernel;
import java.io.Serializable;
+import java.security.AccessController;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -45,6 +46,7 @@
import org.apache.openjpa.lib.rop.RangeResultObjectProvider;
import org.apache.openjpa.lib.rop.ResultList;
import org.apache.openjpa.lib.rop.ResultObjectProvider;
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
import org.apache.openjpa.lib.util.Localizer;
import org.apache.openjpa.lib.util.ReferenceHashSet;
import org.apache.openjpa.lib.util.concurrent.ReentrantLock;
@@ -1555,7 +1557,8 @@
// first check the aliases map in the MetaDataRepository
ClassLoader loader = (_class == null) ? _loader
- : _class.getClassLoader();
+ : (ClassLoader)AccessController.doPrivileged(
+ J2DoPrivHelper.getClassLoaderAction(_class));
ClassMetaData meta = _broker.getConfiguration().
getMetaDataRepositoryInstance().getMetaData(name, loader, false);
if (meta != null)
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/QueryLanguages.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/QueryLanguages.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/QueryLanguages.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/QueryLanguages.java Tue Jul 3 14:55:29 2007
@@ -18,10 +18,13 @@
*/
package org.apache.openjpa.kernel;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
import java.util.HashMap;
import java.util.Map;
import org.apache.openjpa.kernel.exps.ExpressionParser;
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
import org.apache.openjpa.lib.util.Services;
import org.apache.openjpa.util.InternalException;
@@ -37,11 +40,16 @@
static {
// Load and cache all the query languages available in the system.
Class[] classes = Services.getImplementorClasses(
- ExpressionParser.class, ExpressionParser.class.getClassLoader());
+ ExpressionParser.class,
+ (ClassLoader)AccessController.doPrivileged(
+ J2DoPrivHelper.getClassLoaderAction(ExpressionParser.class)));
for (int i = 0; i < classes.length; i++) {
ExpressionParser ep;
try {
- ep = (ExpressionParser) classes[i].newInstance();
+ ep = (ExpressionParser)AccessController.doPrivileged(
+ J2DoPrivHelper.newInstanceAction(classes[i]));
+ } catch( PrivilegedActionException pae ) {
+ throw new InternalException(pae.getException());
} catch (InstantiationException e) {
throw new InternalException(e);
} catch (IllegalAccessException e) {
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ResultPacker.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ResultPacker.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ResultPacker.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ResultPacker.java Tue Jul 3 14:55:29 2007
@@ -24,6 +24,8 @@
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.math.BigInteger;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
@@ -34,6 +36,7 @@
import java.util.Set;
import org.apache.commons.lang.StringUtils;
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
import org.apache.openjpa.lib.util.Localizer;
import org.apache.openjpa.util.OpenJPAException;
import org.apache.openjpa.util.UserException;
@@ -231,7 +234,8 @@
if (_constructor != null)
return _constructor.newInstance(result);
- Object user = _resultClass.newInstance();
+ Object user = AccessController.doPrivileged(
+ J2DoPrivHelper.newInstanceAction(_resultClass));
for (int i = 0; i < _aliases.length; i++) {
if (_sets[i] instanceof Method) {
Method meth = (Method) _sets[i];
@@ -248,6 +252,9 @@
return user;
} catch (OpenJPAException ke) {
throw ke;
+ } catch( PrivilegedActionException pae ) {
+ throw new UserException(_loc.get("pack-instantiation-err",
+ _resultClass), pae.getException());
} catch (InstantiationException ie) {
throw new UserException(_loc.get("pack-instantiation-err",
_resultClass), ie);
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/jpql/JPQLExpressionBuilder.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/jpql/JPQLExpressionBuilder.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/jpql/JPQLExpressionBuilder.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/jpql/JPQLExpressionBuilder.java Tue Jul 3 14:55:29 2007
@@ -22,6 +22,7 @@
import java.io.Serializable;
import java.lang.reflect.Field;
import java.math.BigDecimal;
+import java.security.AccessController;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
@@ -43,6 +44,7 @@
import org.apache.openjpa.kernel.exps.QueryExpressions;
import org.apache.openjpa.kernel.exps.Subquery;
import org.apache.openjpa.kernel.exps.Value;
+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;
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractCFMetaDataFactory.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractCFMetaDataFactory.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractCFMetaDataFactory.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractCFMetaDataFactory.java Tue Jul 3 14:55:29 2007
@@ -20,8 +20,11 @@
import java.io.File;
import java.io.IOException;
+import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -47,6 +50,7 @@
import org.apache.openjpa.lib.meta.ZipFileMetaDataIterator;
import org.apache.openjpa.lib.meta.ZipStreamMetaDataIterator;
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.util.GeneralException;
import org.apache.openjpa.util.UserException;
@@ -93,7 +97,8 @@
File file;
for (int i = 0; i < strs.length; i++) {
file = new File(strs[i]);
- if (file.exists())
+ if (((Boolean)AccessController.doPrivileged(
+ J2DoPrivHelper.existsAction( file ))).booleanValue())
this.files.add(file);
}
}
@@ -372,7 +377,9 @@
queries[i].setSource(defaultSourceFile(queries[i],
clsNames), queries[i].getSourceScope(),
queries[i].getSourceType());
- if (queries[i].getSourceFile().exists()) {
+ if (((Boolean)AccessController.doPrivileged(
+ J2DoPrivHelper.existsAction( queries[i].getSourceFile())))
+ .booleanValue()) {
if (files == null)
files = new HashSet();
files.add(queries[i].getSourceFile());
@@ -383,7 +390,9 @@
if (getSourceFile(seqs[i]) == null)
setSourceFile(seqs[i], defaultSourceFile(seqs[i],
clsNames));
- if (getSourceFile(seqs[i]).exists()) {
+ if (((Boolean)AccessController.doPrivileged(
+ J2DoPrivHelper.existsAction(getSourceFile(seqs[i]))))
+ .booleanValue()) {
if (files == null)
files = new HashSet();
files.add(getSourceFile(seqs[i]));
@@ -409,7 +418,9 @@
if (queries[i].getSourceFile() == null)
queries[i].setSource(defaultSourceFile(queries[i], clsNames),
queries[i].getSourceScope(), queries[i].getSourceType());
- if (queries[i].getSourceFile().exists()) {
+ if (((Boolean)AccessController.doPrivileged(
+ J2DoPrivHelper.existsAction( queries[i].getSourceFile() )))
+ .booleanValue()) {
if (files == null)
files = new HashSet();
files.add(queries[i].getSourceFile());
@@ -665,9 +676,16 @@
} else if (url.getPath().endsWith(".jar")) {
if (log.isTraceEnabled())
log.trace(_loc.get("scanning-jar-at-url", url));
- scan(new ZipStreamMetaDataIterator(
- new ZipInputStream(url.openStream()),
- newMetaDataFilter()), cparser, names, true, url);
+ try {
+ InputStream is = (InputStream)
+ AccessController.doPrivileged(
+ J2DoPrivHelper.openStreamAction(url));
+ scan(new ZipStreamMetaDataIterator(
+ new ZipInputStream(is),
+ newMetaDataFilter()), cparser, names, true, url);
+ } catch( PrivilegedActionException pae ) {
+ throw (IOException)pae.getException();
+ }
} else {
if (log.isTraceEnabled())
log.trace(_loc.get("scanning-url", url));
@@ -685,14 +703,22 @@
for (Iterator itr = rsrcs.iterator(); itr.hasNext();) {
rsrc = (String) itr.next();
if (rsrc.endsWith(".jar")) {
- url = loader.getResource(rsrc);
+ url = (URL)AccessController.doPrivileged(
+ J2DoPrivHelper.getResourceAction(loader, rsrc));
if (url != null) {
if (log.isTraceEnabled())
log.trace(_loc.get("scanning-jar-stream-url", url));
- scan(new ZipStreamMetaDataIterator
- (new ZipInputStream(url.openStream()),
+ try {
+ InputStream is = (InputStream)
+ AccessController.doPrivileged(
+ J2DoPrivHelper.openStreamAction(url));
+ scan(new ZipStreamMetaDataIterator
+ (new ZipInputStream(is),
newMetaDataFilter()), cparser, names, true,
url);
+ } catch( PrivilegedActionException pae ) {
+ throw (IOException)pae.getException();
+ }
}
} else {
if (log.isTraceEnabled())
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractMetaDataDefaults.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractMetaDataDefaults.java?view=diff&rev=552996&r1=552995&r2=552996
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractMetaDataDefaults.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractMetaDataDefaults.java Tue Jul 3 14:55:29 2007
@@ -22,11 +22,13 @@
import java.lang.reflect.Member;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
-import org.apache.commons.lang.StringUtils;
import org.apache.openjpa.enhance.PCRegistry;
import org.apache.openjpa.enhance.Reflection;
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.util.InternalException;
import org.apache.openjpa.util.OpenJPAException;
@@ -185,7 +187,9 @@
FieldMetaData fmd;
for (int i = 0; i < fieldNames.length; i ++) {
if (meta.getAccessType() == ClassMetaData.ACCESS_FIELD)
- member = cls.getDeclaredField(fieldNames[i]);
+ member = (Field)AccessController.doPrivileged(
+ J2DoPrivHelper.getDeclaredFieldAction(
+ cls,fieldNames[i]));
else
member = Reflection.findGetter(meta.getDescribedType(),
fieldNames[i], true);
@@ -200,6 +204,8 @@
} catch (OpenJPAException ke) {
throw ke;
} catch (Exception e) {
+ if (e instanceof PrivilegedActionException)
+ e = ((PrivilegedActionException)e).getException();
throw new UserException(e);
}
}
@@ -211,9 +217,13 @@
Member[] members;
boolean iface = meta.getDescribedType().isInterface();
if (meta.getAccessType() == ClassMetaData.ACCESS_FIELD && !iface)
- members = meta.getDescribedType().getDeclaredFields();
+ members = (Field[])AccessController.doPrivileged(
+ J2DoPrivHelper.getDeclaredFieldsAction(
+ meta.getDescribedType()));
else
- members = meta.getDescribedType().getDeclaredMethods();
+ members = (Method[])AccessController.doPrivileged(
+ J2DoPrivHelper.getDeclaredMethodsAction(
+ meta.getDescribedType()));
int mods;
String name;
@@ -313,12 +323,16 @@
//### where the superclass uses a different access type
if (fmd.getDefiningMetaData().getAccessType() ==
ClassMetaData.ACCESS_FIELD)
- return fmd.getDeclaringType().getDeclaredField(fmd.getName());
+ return (Field) AccessController.doPrivileged(
+ J2DoPrivHelper.getDeclaredFieldAction(
+ fmd.getDeclaringType(), fmd.getName()));
return Reflection.findGetter(fmd.getDeclaringType(), fmd.getName(),
true);
} catch (OpenJPAException ke) {
throw ke;
} catch (Exception e) {
+ if (e instanceof PrivilegedActionException)
+ e = ((PrivilegedActionException)e).getException();
throw new InternalException(e);
}
}