Bug#500441: Eclipselink core has System.getProperty() calls potentially
outside doPriv()
Signed-off-by: Will Dazey <dazeydev.3@gmail.com>
Reviewed-by: Joe Grassel <fyrewyld@gmail.com>
diff --git a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/dynamic/DynamicClassLoader.java b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/dynamic/DynamicClassLoader.java
index 9e850aa..585fc65 100644
--- a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/dynamic/DynamicClassLoader.java
+++ b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/dynamic/DynamicClassLoader.java
@@ -17,8 +17,6 @@
******************************************************************************/
package org.eclipse.persistence.dynamic;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
//javase imports
import java.util.ArrayList;
import java.util.HashMap;
@@ -214,14 +212,7 @@ protected Class<?> findClass(String className) throws ClassNotFoundException {
try {
byte[] bytes = writer.writeClass(this, className);
if (bytes != null) {
- String outputPath = PrivilegedAccessHelper.shouldUsePrivilegedAccess() ?
- AccessController.doPrivileged(new PrivilegedAction<String>() {
- @Override
- public String run() {
- return System.getProperty(SystemProperties.WEAVING_OUTPUT_PATH, "");
- }
- })
- : System.getProperty(SystemProperties.WEAVING_OUTPUT_PATH, "");
+ String outputPath = PrivilegedAccessHelper.getSystemProperty(SystemProperties.WEAVING_OUTPUT_PATH, "");
if (!outputPath.equals("")) {
Helper.outputClassFile(className, bytes, outputPath);
diff --git a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/exceptions/EclipseLinkException.java b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/exceptions/EclipseLinkException.java
index f2f3ba4..906cb36 100644
--- a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/exceptions/EclipseLinkException.java
+++ b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/exceptions/EclipseLinkException.java
@@ -17,8 +17,6 @@
import java.io.PrintStream;
import java.io.PrintWriter;
import java.io.StringWriter;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
import org.eclipse.persistence.exceptions.i18n.ExceptionMessageGenerator;
import org.eclipse.persistence.internal.security.PrivilegedAccessHelper;
@@ -34,22 +32,10 @@ public abstract class EclipseLinkException extends RuntimeException {
protected static Boolean shouldPrintInternalException = null;
protected String indentationString;
protected int errorCode;
- protected static final String CR;
+ protected static final String CR = PrivilegedAccessHelper.getSystemProperty("line.separator");
//Bug#3559280 Added to avoid logging an exception twice
protected boolean hasBeenLogged;
- static {
- // bug 2756643
- CR = PrivilegedAccessHelper.shouldUsePrivilegedAccess() ?
- AccessController.doPrivileged(new PrivilegedAction<String>() {
- @Override
- public String run() {
- return System.getProperty("line.separator");
- }
- })
- : System.getProperty("line.separator");
- }
-
/**
* INTERNAL:
* Return a new exception.
diff --git a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/exceptions/i18n/ExceptionMessageGenerator.java b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/exceptions/i18n/ExceptionMessageGenerator.java
index ac4b747..a0ab7c3 100644
--- a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/exceptions/i18n/ExceptionMessageGenerator.java
+++ b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/exceptions/i18n/ExceptionMessageGenerator.java
@@ -14,8 +14,6 @@
******************************************************************************/
package org.eclipse.persistence.exceptions.i18n;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
import java.text.MessageFormat;
import java.util.Locale;
import java.util.ResourceBundle;
@@ -33,18 +31,7 @@
* @author: Rick Barkhouse
*/
public class ExceptionMessageGenerator {
- private final static String CR;
-
- static {
- CR = PrivilegedAccessHelper.shouldUsePrivilegedAccess() ?
- AccessController.doPrivileged(new PrivilegedAction<String>() {
- @Override
- public String run() {
- return System.getProperty("line.separator");
- }
- })
- : System.getProperty("line.separator");
- }
+ private final static String CR = PrivilegedAccessHelper.getSystemProperty("line.separator");
/**
* Return the loader for loading the resource bundles.
diff --git a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/internal/core/helper/CoreHelper.java b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/internal/core/helper/CoreHelper.java
index aa5c5b5..b29ed6e 100644
--- a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/internal/core/helper/CoreHelper.java
+++ b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/internal/core/helper/CoreHelper.java
@@ -14,27 +14,12 @@
******************************************************************************/
package org.eclipse.persistence.internal.core.helper;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-
import org.eclipse.persistence.internal.security.PrivilegedAccessHelper;
public class CoreHelper {
/** Store CR string, for some reason \n is not platform independent. */
- protected final static String CR;
-
- static {
- // bug 2756643
- CR = PrivilegedAccessHelper.shouldUsePrivilegedAccess() ?
- AccessController.doPrivileged(new PrivilegedAction<String>() {
- @Override
- public String run() {
- return System.getProperty("line.separator");
- }
- })
- : System.getProperty("line.separator");
- }
+ protected static String CR = null;
/**
* Return a string containing the platform-appropriate
@@ -42,6 +27,9 @@ public String run() {
*/
public static String cr() {
// bug 2756643
+ if (CR == null) {
+ CR = PrivilegedAccessHelper.getSystemProperty("line.separator");
+ }
return CR;
}
diff --git a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/internal/helper/ConcurrencyManager.java b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/internal/helper/ConcurrencyManager.java
index a30cc91..18805b9 100644
--- a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/internal/helper/ConcurrencyManager.java
+++ b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/internal/helper/ConcurrencyManager.java
@@ -42,7 +42,7 @@ public class ConcurrencyManager implements Serializable {
public static final Map<Thread, DeferredLockManager> deferredLockManagers = initializeDeferredLockManagers();
- protected static boolean shouldTrackStack = getPropertyRecordStackOnLock() != null;
+ protected static boolean shouldTrackStack = PrivilegedAccessHelper.getSystemProperty(SystemProperties.RECORD_STACK_ON_LOCK) != null;
protected int numberOfReaders;
protected int depth;
diff --git a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/internal/helper/Helper.java b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/internal/helper/Helper.java
index 3d79ce4..b91e54e 100644
--- a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/internal/helper/Helper.java
+++ b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/internal/helper/Helper.java
@@ -36,7 +36,6 @@
import java.net.URI;
import java.net.URISyntaxException;
import java.security.AccessController;
-import java.security.PrivilegedAction;
import java.security.PrivilegedActionException;
import java.sql.Timestamp;
import java.util.ArrayList;
@@ -94,7 +93,7 @@ public class Helper extends CoreHelper implements Serializable {
// Changed static initialization to lazy initialization for bug 2756643
/** Store CR string, for some reason \n is not platform independent. */
- protected final static String CR;
+ protected static String CR;
/** formatting strings for indenting */
public static final String SPACE = " ";
@@ -142,18 +141,6 @@ public class Helper extends CoreHelper implements Serializable {
private static String defaultStartDatabaseDelimiter = null;
private static String defaultEndDatabaseDelimiter = null;
- static {
- // bug 2756643
- CR = PrivilegedAccessHelper.shouldUsePrivilegedAccess() ?
- AccessController.doPrivileged(new PrivilegedAction<String>() {
- @Override
- public String run() {
- return System.getProperty("line.separator");
- }
- })
- : System.getProperty("line.separator");
- }
-
/**
* Return if JDBC date access should be optimized.
*/
@@ -816,6 +803,9 @@ public static Vector copyVector(List originalVector, int startIndex, int stopInd
* characters for carriage return.
*/
public static String cr() {
+ if (CR == null) {
+ CR = PrivilegedAccessHelper.getSystemProperty("line.separator");
+ }
return CR;
}
@@ -825,14 +815,7 @@ public static String cr() {
public static String currentWorkingDirectory() {
// bug 2756643
if (CURRENT_WORKING_DIRECTORY == null) {
- CURRENT_WORKING_DIRECTORY = PrivilegedAccessHelper.shouldUsePrivilegedAccess() ?
- AccessController.doPrivileged(new PrivilegedAction<String>() {
- @Override
- public String run() {
- return System.getProperty("user.dir");
- }
- })
- : System.getProperty("user.dir");
+ CURRENT_WORKING_DIRECTORY = PrivilegedAccessHelper.getSystemProperty("user.dir");
}
return CURRENT_WORKING_DIRECTORY;
}
@@ -843,14 +826,7 @@ public String run() {
public static String tempDirectory() {
// Bug 2756643
if (TEMP_DIRECTORY == null) {
- TEMP_DIRECTORY = PrivilegedAccessHelper.shouldUsePrivilegedAccess() ?
- AccessController.doPrivileged(new PrivilegedAction<String>() {
- @Override
- public String run() {
- return System.getProperty("java.io.tmpdir");
- }
- })
- : System.getProperty("java.io.tmpdir");
+ TEMP_DIRECTORY = PrivilegedAccessHelper.getSystemProperty("java.io.tmpdir");
}
return TEMP_DIRECTORY;
}
@@ -983,14 +959,7 @@ public static String extractJarNameFromURL(java.net.URL url) {
public static String fileSeparator() {
//Bug 2756643
if (FILE_SEPARATOR == null) {
- FILE_SEPARATOR = PrivilegedAccessHelper.shouldUsePrivilegedAccess() ?
- AccessController.doPrivileged(new PrivilegedAction<String>() {
- @Override
- public String run() {
- return System.getProperty("file.separator");
- }
- })
- : System.getProperty("file.separator");
+ FILE_SEPARATOR = PrivilegedAccessHelper.getSystemProperty("file.separator");
}
return FILE_SEPARATOR;
}
@@ -1260,16 +1229,7 @@ public static void outputClassFile(String className, byte[] classBytes,
"weaver_not_overwriting", file);
}
} else {
- String weavingShouldOverwriteProp = PrivilegedAccessHelper.shouldUsePrivilegedAccess() ?
- AccessController.doPrivileged(new PrivilegedAction<String>() {
- @Override
- public String run() {
- return System.getProperty(SystemProperties.WEAVING_SHOULD_OVERWRITE, "false");
- }
- })
- : System.getProperty(SystemProperties.WEAVING_SHOULD_OVERWRITE, "false");
-
- if (!weavingShouldOverwriteProp.equalsIgnoreCase("true")) {
+ if (!PrivilegedAccessHelper.getSystemProperty(SystemProperties.WEAVING_SHOULD_OVERWRITE, "false").equalsIgnoreCase("true")) {
AbstractSessionLog.getLog().log(SessionLog.WARNING,
SessionLog.WEAVER, "weaver_not_overwriting",
className);
@@ -1296,14 +1256,7 @@ public String run() {
public static String pathSeparator() {
// Bug 2756643
if (PATH_SEPARATOR == null) {
- PATH_SEPARATOR = PrivilegedAccessHelper.shouldUsePrivilegedAccess() ?
- AccessController.doPrivileged(new PrivilegedAction<String>() {
- @Override
- public String run() {
- return System.getProperty("path.separator");
- }
- })
- : System.getProperty("path.separator");
+ PATH_SEPARATOR = PrivilegedAccessHelper.getSystemProperty("path.separator");
}
return PATH_SEPARATOR;
}
diff --git a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/internal/helper/JavaVersion.java b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/internal/helper/JavaVersion.java
index 0b7f903..cdb0bd6 100644
--- a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/internal/helper/JavaVersion.java
+++ b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/internal/helper/JavaVersion.java
@@ -12,12 +12,10 @@
******************************************************************************/
package org.eclipse.persistence.internal.helper;
-import java.security.AccessController;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.eclipse.persistence.internal.security.PrivilegedAccessHelper;
-import org.eclipse.persistence.internal.security.PrivilegedGetSystemProperty;
/**
* Java version storage class. Used for version numbers retrieved from
@@ -54,10 +52,7 @@ public final class JavaVersion {
* @return Java specification version {@see String} from JDK system property.
*/
public static String vmVersionString() {
- if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
- return AccessController.doPrivileged(new PrivilegedGetSystemProperty(VM_VERSION_PROPERTY));
- }
- return System.getProperty(VM_VERSION_PROPERTY);
+ return PrivilegedAccessHelper.getSystemProperty(VM_VERSION_PROPERTY);
}
/**
diff --git a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/internal/oxm/Constants.java b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/internal/oxm/Constants.java
index 0475340..4ab467f 100644
--- a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/internal/oxm/Constants.java
+++ b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/internal/oxm/Constants.java
@@ -15,8 +15,6 @@
package org.eclipse.persistence.internal.oxm;
import java.nio.charset.Charset;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
import javax.xml.namespace.QName;
@@ -30,7 +28,7 @@ public class Constants {
public static final String BOOLEAN_STRING_TRUE = "true";
public static final String CDATA = "CDATA";
public static final char COLON = ':';
- private static final String CR;
+ private static String CR;
public static final String DEFAULT_XML_ENCODING = "UTF-8";
public static final Charset DEFAULT_CHARSET = Charset.forName(DEFAULT_XML_ENCODING);
public static final char DOT = '.';
@@ -153,18 +151,6 @@ public class Constants {
public static final QName SWA_REF_QNAME = new QName(REF_URL, SWA_REF);
public static final QName EXPECTED_CONTENT_TYPES_QNAME = new QName(XML_MIME_URL, EXPECTED_CONTENT_TYPES);
- static {
- // bug 2756643
- CR = PrivilegedAccessHelper.shouldUsePrivilegedAccess() ?
- AccessController.doPrivileged(new PrivilegedAction<String>() {
- @Override
- public String run() {
- return System.getProperty("line.separator");
- }
- })
- : System.getProperty("line.separator");
- }
-
public static final MediaType APPLICATION_JSON = new MediaType() {
@Override
@@ -198,6 +184,9 @@ public boolean isApplicationXML() {
* characters for carriage return.
*/
public static String cr() {
+ if (CR == null) {
+ CR = PrivilegedAccessHelper.getSystemProperty("line.separator");
+ }
return CR;
}
diff --git a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/internal/security/PrivilegedAccessHelper.java b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/internal/security/PrivilegedAccessHelper.java
index 746e4f8..5b7f6ac 100644
--- a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/internal/security/PrivilegedAccessHelper.java
+++ b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/internal/security/PrivilegedAccessHelper.java
@@ -26,12 +26,19 @@
import java.lang.reflect.Method;
import java.security.AccessController;
import java.security.PrivilegedActionException;
+import java.util.Arrays;
+import java.util.Collections;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Map;
+import java.util.Set;
import org.eclipse.persistence.config.PersistenceUnitProperties;
+import org.eclipse.persistence.config.SystemProperties;
import org.eclipse.persistence.internal.helper.Helper;
import org.eclipse.persistence.internal.localization.ExceptionLocalization;
+import org.eclipse.persistence.platform.server.ServerPlatformBase;
+import org.eclipse.persistence.platform.xml.XMLPlatformFactory;
/**
* INTERNAL:
@@ -51,6 +58,20 @@ public class PrivilegedAccessHelper {
private static boolean shouldCheckPrivilegedAccess = true;
private static boolean shouldUsePrivilegedAccess = false;
+ private final static String[] legalProperties = { "file.separator", "java.io.tmpdir", "java.version", "line.separator", "path.separator", "user.dir",
+ "org.eclipse.persistence.fetchgroupmonitor", "org.eclipse.persistence.querymonitor", "SAP_J2EE_Engine_Version",
+ PersistenceUnitProperties.ECLIPSELINK_PERSISTENCE_XML, PersistenceUnitProperties.JAVASE_DB_INTERACTION,
+ PersistenceUnitProperties.LOGGING_FILE, PersistenceUnitProperties.LOGGING_LEVEL,
+ SystemProperties.ARCHIVE_FACTORY, SystemProperties.DO_NOT_PROCESS_XTOMANY_FOR_QBE, SystemProperties.RECORD_STACK_ON_LOCK,
+ SystemProperties.WEAVING_OUTPUT_PATH, SystemProperties.WEAVING_SHOULD_OVERWRITE, SystemProperties.WEAVING_REFLECTIVE_INTROSPECTION,
+ SystemProperties.DO_NOT_PROCESS_XTOMANY_FOR_QBE,
+ ServerPlatformBase.JMX_REGISTER_RUN_MBEAN_PROPERTY, ServerPlatformBase.JMX_REGISTER_DEV_MBEAN_PROPERTY,
+ XMLPlatformFactory.XML_PLATFORM_PROPERTY};
+ private final static Set<String> legalPropertiesSet = Collections.unmodifiableSet(new HashSet(Arrays.asList(legalProperties)));
+
+ private final static String[] exemptedProperties = { "line.separator" };
+ private final static Set<String> exemptedPropertiesSet = Collections.unmodifiableSet(new HashSet(Arrays.asList(exemptedProperties)));
+
private static Map<String, Class> primitiveClasses;
static {
@@ -360,10 +381,21 @@ public static Class getFieldType(final Field field) {
* or {@code false} otherwise.
*/
private static boolean isIllegalProperty(final String key) {
- return key == null || !(key.startsWith("eclipselink.") || "line.separator".equals(key)
+ return key == null || !(legalPropertiesSet.contains(key) || key.startsWith("eclipselink.")
|| key.startsWith("javax.persistence.") || key.startsWith("org.eclipse.persistence.")
- || key.startsWith("persistence.") || key.startsWith("javax.xml.")
- || PersistenceUnitProperties.JAVASE_DB_INTERACTION.equals(key));
+ || key.startsWith("persistence.") || key.startsWith("javax.xml."));
+ }
+
+ /**
+ * Vet certain System properties as "safe" enough to override defaultUseDoPrivilegedValue setting. Reserved
+ * for properties that must be read before the application server runtime environment is known. Consider
+ * security implications very carefully before adding new system property names to this list.
+ * @param key The name of the {@link System} property.
+ * @return Value of {@code true} if {@code getSystemProperty} is allowed defaultUseDoPrivilegedValue override
+ * or {@code false} otherwise.
+ */
+ private static boolean isExemptedProperty(final String key) {
+ return key != null && exemptedPropertiesSet.contains(key);
}
/**
@@ -379,7 +411,7 @@ public static final String getSystemProperty(final String key) {
throw new IllegalArgumentException(
ExceptionLocalization.buildMessage("unexpect_argument", new Object[] {key}));
}
- if (shouldUsePrivilegedAccess()) {
+ if (isExemptedProperty(key) || shouldUsePrivilegedAccess()) {
return AccessController.doPrivileged(new PrivilegedGetSystemProperty(key));
} else {
return System.getProperty(key);
@@ -400,7 +432,7 @@ public static final String getSystemProperty(final String key, final String def)
throw new IllegalArgumentException(
ExceptionLocalization.buildMessage("unexpect_argument", new Object[] {key}));
}
- if (shouldUsePrivilegedAccess()) {
+ if (isExemptedProperty(key) || shouldUsePrivilegedAccess()) {
return AccessController.doPrivileged(new PrivilegedGetSystemProperty(key, def));
} else {
return System.getProperty(key, def);
diff --git a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/internal/sessions/PropertiesHandler.java b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/internal/sessions/PropertiesHandler.java
index 9717a45..bb8a64a 100644
--- a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/internal/sessions/PropertiesHandler.java
+++ b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/internal/sessions/PropertiesHandler.java
@@ -48,6 +48,7 @@
import org.eclipse.persistence.descriptors.DescriptorQueryManager;
import org.eclipse.persistence.internal.localization.ExceptionLocalization;
import org.eclipse.persistence.internal.security.PrivilegedAccessHelper;
+import org.eclipse.persistence.internal.security.PrivilegedGetSystemProperty;
import org.eclipse.persistence.logging.SessionLog;
import org.eclipse.persistence.queries.ObjectLevelReadQuery;
@@ -242,14 +243,11 @@ protected static abstract class Prop {
static String getPropertyValueFromMap(String name, Map m, boolean useSystemAsDefault) {
String value = (String)m.get(name);
if (value == null && useSystemAsDefault) {
- value = PrivilegedAccessHelper.shouldUsePrivilegedAccess() ?
- AccessController.doPrivileged(new PrivilegedAction<String>() {
- @Override
- public String run() {
- return System.getProperty(name);
- }
- })
- : System.getProperty(name);
+ if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
+ value = AccessController.doPrivileged(new PrivilegedGetSystemProperty(name));
+ } else {
+ value = System.getProperty(name);
+ }
}
return value;
diff --git a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/logging/AbstractSessionLog.java b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/logging/AbstractSessionLog.java
index 781b044..49ee0e0 100644
--- a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/logging/AbstractSessionLog.java
+++ b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/logging/AbstractSessionLog.java
@@ -18,7 +18,6 @@
import java.io.PrintWriter;
import java.io.StringWriter;
import java.io.Writer;
-import java.security.AccessController;
import java.text.DateFormat;
import java.util.Date;
@@ -28,7 +27,6 @@
import org.eclipse.persistence.internal.helper.ConversionManager;
import org.eclipse.persistence.internal.localization.LoggingLocalization;
import org.eclipse.persistence.internal.security.PrivilegedAccessHelper;
-import org.eclipse.persistence.internal.security.PrivilegedGetSystemProperty;
import org.eclipse.persistence.sessions.Session;
/**
@@ -164,10 +162,7 @@ public abstract class AbstractSessionLog implements SessionLog, java.lang.Clonea
* @return The system default log level property value or {@code null} if no such property is set.
*/
private static String getDefaultLoggingLevelProperty() {
- return PrivilegedAccessHelper.shouldUsePrivilegedAccess()
- ? AccessController.doPrivileged(
- new PrivilegedGetSystemProperty(PersistenceUnitProperties.LOGGING_LEVEL))
- : System.getProperty(PersistenceUnitProperties.LOGGING_LEVEL);
+ return PrivilegedAccessHelper.getSystemProperty(PersistenceUnitProperties.LOGGING_LEVEL);
}
/**
diff --git a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/mappings/CollectionMapping.java b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/mappings/CollectionMapping.java
index 35b1431..d31458a 100644
--- a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/mappings/CollectionMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/mappings/CollectionMapping.java
@@ -27,8 +27,6 @@
package org.eclipse.persistence.mappings;
import java.beans.PropertyChangeListener;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
import java.util.*;
import org.eclipse.persistence.annotations.OrderCorrectionType;
@@ -337,14 +335,7 @@ public Object buildElementClone(Object element, Object parent, CacheKey parentCa
* ObjectBuilder.
*/
public Expression buildExpression(Object queryObject, QueryByExamplePolicy policy, Expression expressionBuilder, Map processedObjects, AbstractSession session) {
- String bypassProperty = PrivilegedAccessHelper.shouldUsePrivilegedAccess() ?
- AccessController.doPrivileged(new PrivilegedAction<String>() {
- @Override
- public String run() {
- return System.getProperty(SystemProperties.DO_NOT_PROCESS_XTOMANY_FOR_QBE);
- }
- })
- : System.getProperty(SystemProperties.DO_NOT_PROCESS_XTOMANY_FOR_QBE);
+ String bypassProperty = PrivilegedAccessHelper.getSystemProperty(SystemProperties.DO_NOT_PROCESS_XTOMANY_FOR_QBE);
if (this.getContainerPolicy().isMapPolicy() || (bypassProperty != null && bypassProperty.toLowerCase().equals("true")) ){
// not supported
return super.buildExpression(queryObject, policy, expressionBuilder, processedObjects, session);
diff --git a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/platform/server/ServerPlatformBase.java b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/platform/server/ServerPlatformBase.java
index bc3df78..f024837 100644
--- a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/platform/server/ServerPlatformBase.java
+++ b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/platform/server/ServerPlatformBase.java
@@ -22,7 +22,6 @@
package org.eclipse.persistence.platform.server;
import java.security.AccessController;
-import java.security.PrivilegedAction;
import java.security.PrivilegedActionException;
import java.sql.SQLException;
import java.util.concurrent.ExecutorService;
@@ -154,14 +153,7 @@ public ServerPlatformBase(DatabaseSession newDatabaseSession) {
this.databaseSession = newDatabaseSession;
this.setIsCMP(false);
// Enable users to disable or enable (default) MBean registration
- String shouldRegisterRuntimeBeanProperty = PrivilegedAccessHelper.shouldUsePrivilegedAccess() ?
- AccessController.doPrivileged(new PrivilegedAction<String>() {
- @Override
- public String run() {
- return System.getProperty(JMX_REGISTER_RUN_MBEAN_PROPERTY);
- }
- })
- : System.getProperty(JMX_REGISTER_RUN_MBEAN_PROPERTY);
+ String shouldRegisterRuntimeBeanProperty = PrivilegedAccessHelper.getSystemProperty(JMX_REGISTER_RUN_MBEAN_PROPERTY);
if(null != shouldRegisterRuntimeBeanProperty) {
if(shouldRegisterRuntimeBeanProperty.toLowerCase().indexOf("false") > -1) {
shouldRegisterRuntimeBean = false;
@@ -170,14 +162,7 @@ public String run() {
shouldRegisterRuntimeBean = true;
}
}
- String shouldRegisterDevelopmentBeanProperty = PrivilegedAccessHelper.shouldUsePrivilegedAccess() ?
- AccessController.doPrivileged(new PrivilegedAction<String>() {
- @Override
- public String run() {
- return System.getProperty(JMX_REGISTER_DEV_MBEAN_PROPERTY);
- }
- })
- : System.getProperty(JMX_REGISTER_DEV_MBEAN_PROPERTY);
+ String shouldRegisterDevelopmentBeanProperty = PrivilegedAccessHelper.getSystemProperty(JMX_REGISTER_DEV_MBEAN_PROPERTY);
if(null != shouldRegisterDevelopmentBeanProperty) {
if(shouldRegisterDevelopmentBeanProperty.toLowerCase().indexOf("false") > -1) {
shouldRegisterDevelopmentBean = false;
diff --git a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/platform/server/sap/SAPNetWeaver_7_1_Platform.java b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/platform/server/sap/SAPNetWeaver_7_1_Platform.java
index f49c959..e4a8b56 100644
--- a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/platform/server/sap/SAPNetWeaver_7_1_Platform.java
+++ b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/platform/server/sap/SAPNetWeaver_7_1_Platform.java
@@ -14,9 +14,6 @@
******************************************************************************/
package org.eclipse.persistence.platform.server.sap;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-
import javax.persistence.spi.PersistenceUnitInfo;
import org.eclipse.persistence.internal.helper.JPAClassLoaderHolder;
@@ -58,14 +55,7 @@ public Class getExternalTransactionControllerClass() {
@Override
public String getServerNameAndVersion() {
- String version = PrivilegedAccessHelper.shouldUsePrivilegedAccess() ?
- AccessController.doPrivileged(new PrivilegedAction<String>() {
- @Override
- public String run() {
- return System.getProperty("SAP_J2EE_Engine_Version");
- }
- })
- : System.getProperty("SAP_J2EE_Engine_Version");
+ String version = PrivilegedAccessHelper.getSystemProperty("SAP_J2EE_Engine_Version");
if (version != null) {
return version;
}
diff --git a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/platform/xml/XMLPlatformFactory.java b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/platform/xml/XMLPlatformFactory.java
index 6eb3d3f..6a9d433 100644
--- a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/platform/xml/XMLPlatformFactory.java
+++ b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/platform/xml/XMLPlatformFactory.java
@@ -15,7 +15,6 @@
package org.eclipse.persistence.platform.xml;
import java.security.AccessController;
-import java.security.PrivilegedAction;
import java.security.PrivilegedActionException;
import org.eclipse.persistence.internal.security.PrivilegedAccessHelper;
@@ -57,14 +56,7 @@ public Class getXMLPlatformClass() throws XMLPlatformException {
return xmlPlatformClass;
}
- String newXMLPlatformClassName = PrivilegedAccessHelper.shouldUsePrivilegedAccess() ?
- AccessController.doPrivileged(new PrivilegedAction<String>() {
- @Override
- public String run() {
- return System.getProperty(XML_PLATFORM_PROPERTY);
- }
- })
- : System.getProperty(XML_PLATFORM_PROPERTY);
+ String newXMLPlatformClassName = PrivilegedAccessHelper.getSystemProperty(XML_PLATFORM_PROPERTY);
if (null == newXMLPlatformClassName) {
newXMLPlatformClassName = JAXP_PLATFORM_CLASS_NAME;
}
diff --git a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/tools/profiler/FetchGroupMonitor.java b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/tools/profiler/FetchGroupMonitor.java
index 0c7d1cc..cb1f232 100644
--- a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/tools/profiler/FetchGroupMonitor.java
+++ b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/tools/profiler/FetchGroupMonitor.java
@@ -14,8 +14,6 @@
******************************************************************************/
package org.eclipse.persistence.tools.profiler;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
import java.util.*;
import org.eclipse.persistence.internal.security.PrivilegedAccessHelper;
@@ -38,14 +36,7 @@ public class FetchGroupMonitor {
public static boolean shouldMonitor() {
if (shouldMonitor == null) {
shouldMonitor = Boolean.FALSE;
- String property = PrivilegedAccessHelper.shouldUsePrivilegedAccess() ?
- AccessController.doPrivileged(new PrivilegedAction<String>() {
- @Override
- public String run() {
- return System.getProperty("org.eclipse.persistence.fetchgroupmonitor");
- }
- })
- : System.getProperty("org.eclipse.persistence.fetchgroupmonitor");
+ String property = PrivilegedAccessHelper.getSystemProperty("org.eclipse.persistence.fetchgroupmonitor");
if ((property != null) && (property.toUpperCase().equals("TRUE"))) {
shouldMonitor = Boolean.TRUE;
}
diff --git a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/tools/profiler/QueryMonitor.java b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/tools/profiler/QueryMonitor.java
index d197db1..23339a4 100644
--- a/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/tools/profiler/QueryMonitor.java
+++ b/foundation/org.eclipse.persistence.core/src/org/eclipse/persistence/tools/profiler/QueryMonitor.java
@@ -15,8 +15,6 @@
package org.eclipse.persistence.tools.profiler;
import java.io.StringWriter;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
@@ -44,15 +42,7 @@ public class QueryMonitor {
public static boolean shouldMonitor() {
if (shouldMonitor == null) {
shouldMonitor = Boolean.FALSE;
- String property = PrivilegedAccessHelper.shouldUsePrivilegedAccess() ?
- AccessController.doPrivileged(new PrivilegedAction<String>() {
- @Override
- public String run() {
- return System.getProperty("org.eclipse.persistence.querymonitor");
- }
- })
- : System.getProperty("org.eclipse.persistence.querymonitor");
-
+ String property = PrivilegedAccessHelper.getSystemProperty("org.eclipse.persistence.querymonitor");
if ((property != null) && (property.toUpperCase().equals("TRUE"))) {
shouldMonitor = Boolean.TRUE;
}
diff --git a/jpa/org.eclipse.persistence.jpa/src/org/eclipse/persistence/internal/jpa/deployment/JPAInitializer.java b/jpa/org.eclipse.persistence.jpa/src/org/eclipse/persistence/internal/jpa/deployment/JPAInitializer.java
index 1ed3ef3..ebb8f49 100644
--- a/jpa/org.eclipse.persistence.jpa/src/org/eclipse/persistence/internal/jpa/deployment/JPAInitializer.java
+++ b/jpa/org.eclipse.persistence.jpa/src/org/eclipse/persistence/internal/jpa/deployment/JPAInitializer.java
@@ -18,8 +18,6 @@
import java.io.FileWriter;
import java.io.IOException;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
@@ -71,14 +69,7 @@ public abstract class JPAInitializer {
* Initialize the logging file if it is specified by the system property.
*/
public static void initializeTopLinkLoggingFile() {
- String loggingFile = PrivilegedAccessHelper.shouldUsePrivilegedAccess() ?
- AccessController.doPrivileged(new PrivilegedAction<String>() {
- @Override
- public String run() {
- return System.getProperty(PersistenceUnitProperties.LOGGING_FILE);
- }
- })
- : System.getProperty(PersistenceUnitProperties.LOGGING_FILE);
+ String loggingFile = PrivilegedAccessHelper.getSystemProperty(PersistenceUnitProperties.LOGGING_FILE);
try {
if (loggingFile != null) {
AbstractSessionLog.getLog().setWriter(new FileWriter(loggingFile));
diff --git a/jpa/org.eclipse.persistence.jpa/src/org/eclipse/persistence/internal/jpa/deployment/PersistenceUnitProcessor.java b/jpa/org.eclipse.persistence.jpa/src/org/eclipse/persistence/internal/jpa/deployment/PersistenceUnitProcessor.java
index a8a9118..789c1bf 100644
--- a/jpa/org.eclipse.persistence.jpa/src/org/eclipse/persistence/internal/jpa/deployment/PersistenceUnitProcessor.java
+++ b/jpa/org.eclipse.persistence.jpa/src/org/eclipse/persistence/internal/jpa/deployment/PersistenceUnitProcessor.java
@@ -34,7 +34,6 @@
import java.net.URL;
import java.net.URLDecoder;
import java.security.AccessController;
-import java.security.PrivilegedAction;
import java.security.PrivilegedActionException;
import java.util.ArrayList;
import java.util.Collection;
@@ -297,14 +296,7 @@ public static Set<Archive> findPersistenceArchives(){
public static Set<Archive> findPersistenceArchives(ClassLoader loader){
// allow alternate persistence location to be specified via system property. This will allow persistence units
// with alternate persistence xml locations to be weaved
- String descriptorLocation = PrivilegedAccessHelper.shouldUsePrivilegedAccess() ?
- AccessController.doPrivileged(new PrivilegedAction<String>() {
- @Override
- public String run() {
- return System.getProperty(PersistenceUnitProperties.ECLIPSELINK_PERSISTENCE_XML, PersistenceUnitProperties.ECLIPSELINK_PERSISTENCE_XML_DEFAULT);
- }
- })
- : System.getProperty(PersistenceUnitProperties.ECLIPSELINK_PERSISTENCE_XML, PersistenceUnitProperties.ECLIPSELINK_PERSISTENCE_XML_DEFAULT);
+ String descriptorLocation = PrivilegedAccessHelper.getSystemProperty(PersistenceUnitProperties.ECLIPSELINK_PERSISTENCE_XML, PersistenceUnitProperties.ECLIPSELINK_PERSISTENCE_XML_DEFAULT);
return findPersistenceArchives(loader, descriptorLocation);
}
@@ -404,14 +396,7 @@ public static Set<Archive> findPersistenceArchives(ClassLoader loader, String de
public static Set<SEPersistenceUnitInfo> getPersistenceUnits(ClassLoader loader, Map m, List<URL> jarFileUrls) {
String descriptorPath = (String) m.get(PersistenceUnitProperties.ECLIPSELINK_PERSISTENCE_XML);
if(descriptorPath == null) {
- descriptorPath = PrivilegedAccessHelper.shouldUsePrivilegedAccess() ?
- AccessController.doPrivileged(new PrivilegedAction<String>() {
- @Override
- public String run() {
- return System.getProperty(PersistenceUnitProperties.ECLIPSELINK_PERSISTENCE_XML, PersistenceUnitProperties.ECLIPSELINK_PERSISTENCE_XML_DEFAULT);
- }
- })
- : System.getProperty(PersistenceUnitProperties.ECLIPSELINK_PERSISTENCE_XML, PersistenceUnitProperties.ECLIPSELINK_PERSISTENCE_XML_DEFAULT);
+ descriptorPath = PrivilegedAccessHelper.getSystemProperty(PersistenceUnitProperties.ECLIPSELINK_PERSISTENCE_XML, PersistenceUnitProperties.ECLIPSELINK_PERSISTENCE_XML_DEFAULT);
}
Set<Archive> archives = findPersistenceArchives(loader, descriptorPath, jarFileUrls);
Set<SEPersistenceUnitInfo> puInfos = new HashSet();
@@ -434,14 +419,7 @@ public static ArchiveFactory getArchiveFactory(ClassLoader loader){
}
ArchiveFactory factory = null;
- String factoryClassName = PrivilegedAccessHelper.shouldUsePrivilegedAccess() ?
- AccessController.doPrivileged(new PrivilegedAction<String>() {
- @Override
- public String run() {
- return System.getProperty(SystemProperties.ARCHIVE_FACTORY, null);
- }
- })
- : System.getProperty(SystemProperties.ARCHIVE_FACTORY, null);
+ String factoryClassName = PrivilegedAccessHelper.getSystemProperty(SystemProperties.ARCHIVE_FACTORY, null);
if (factoryClassName == null) {
return new ArchiveFactoryImpl();
diff --git a/jpa/org.eclipse.persistence.jpa/src/org/eclipse/persistence/jpa/metadata/FileBasedProjectCache.java b/jpa/org.eclipse.persistence.jpa/src/org/eclipse/persistence/jpa/metadata/FileBasedProjectCache.java
index c215da9..7345741 100644
--- a/jpa/org.eclipse.persistence.jpa/src/org/eclipse/persistence/jpa/metadata/FileBasedProjectCache.java
+++ b/jpa/org.eclipse.persistence.jpa/src/org/eclipse/persistence/jpa/metadata/FileBasedProjectCache.java
@@ -18,11 +18,11 @@
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.security.AccessController;
-import java.security.PrivilegedAction;
import java.util.Map;
import org.eclipse.persistence.config.PersistenceUnitProperties;
import org.eclipse.persistence.internal.security.PrivilegedAccessHelper;
+import org.eclipse.persistence.internal.security.PrivilegedGetSystemProperty;
import org.eclipse.persistence.logging.SessionLog;
import org.eclipse.persistence.sessions.Project;
@@ -109,14 +109,11 @@ public Object getConfigPropertyLogDebug(final String propertyName, Map propertie
value = properties.get(propertyName);
}
if (value == null) {
- value = PrivilegedAccessHelper.shouldUsePrivilegedAccess() ?
- AccessController.doPrivileged(new PrivilegedAction<String>() {
- @Override
- public String run() {
- return System.getProperty(propertyName);
- }
- })
- : System.getProperty(propertyName);
+ if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
+ value = AccessController.doPrivileged(new PrivilegedGetSystemProperty(propertyName));
+ } else {
+ value = System.getProperty(propertyName);
+ }
}
if ((value != null) && (log != null)) {
log.log(SessionLog.FINEST, SessionLog.PROPERTIES, "property_value_specified", new Object[]{propertyName, value});
diff --git a/jpa/org.eclipse.persistence.jpa/src/org/eclipse/persistence/jpa/metadata/XMLMetadataSource.java b/jpa/org.eclipse.persistence.jpa/src/org/eclipse/persistence/jpa/metadata/XMLMetadataSource.java
index 344ca49..858010c 100644
--- a/jpa/org.eclipse.persistence.jpa/src/org/eclipse/persistence/jpa/metadata/XMLMetadataSource.java
+++ b/jpa/org.eclipse.persistence.jpa/src/org/eclipse/persistence/jpa/metadata/XMLMetadataSource.java
@@ -21,7 +21,6 @@
import java.io.Reader;
import java.net.URL;
import java.security.AccessController;
-import java.security.PrivilegedAction;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
@@ -29,6 +28,7 @@
import org.eclipse.persistence.internal.jpa.metadata.xml.XMLEntityMappingsReader;
import org.eclipse.persistence.internal.security.PrivilegedAccessHelper;
+import org.eclipse.persistence.internal.security.PrivilegedGetSystemProperty;
import org.eclipse.persistence.internal.jpa.metadata.xml.XMLEntityMappings;
import org.eclipse.persistence.config.PersistenceUnitProperties;
@@ -211,14 +211,11 @@ public Object getConfigPropertyLogDebug(final String propertyName, Map propertie
value = properties.get(propertyName);
}
if (value == null) {
- value = PrivilegedAccessHelper.shouldUsePrivilegedAccess() ?
- AccessController.doPrivileged(new PrivilegedAction<String>() {
- @Override
- public String run() {
- return System.getProperty(propertyName);
- }
- })
- : System.getProperty(propertyName);
+ if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
+ value = AccessController.doPrivileged(new PrivilegedGetSystemProperty(propertyName));
+ } else {
+ value = System.getProperty(propertyName);
+ }
}
if ((value != null) && (log != null)) {
log.log(SessionLog.FINEST, SessionLog.PROPERTIES, "property_value_specified", new Object[]{propertyName, value});