You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2011/12/12 22:56:43 UTC
svn commit: r1213457 - in
/cxf/trunk/common/common/src/main/java/org/apache/cxf/common/logging:
JDKBugHacks.java LogUtils.java
Author: dkulp
Date: Mon Dec 12 21:56:43 2011
New Revision: 1213457
URL: http://svn.apache.org/viewvc?rev=1213457&view=rev
Log:
[CXF-3867] Add a couple methods for keeping the URLConnection
defaultUsesCaches thing set to true.
Modified:
cxf/trunk/common/common/src/main/java/org/apache/cxf/common/logging/JDKBugHacks.java
cxf/trunk/common/common/src/main/java/org/apache/cxf/common/logging/LogUtils.java
Modified: cxf/trunk/common/common/src/main/java/org/apache/cxf/common/logging/JDKBugHacks.java
URL: http://svn.apache.org/viewvc/cxf/trunk/common/common/src/main/java/org/apache/cxf/common/logging/JDKBugHacks.java?rev=1213457&r1=1213456&r2=1213457&view=diff
==============================================================================
--- cxf/trunk/common/common/src/main/java/org/apache/cxf/common/logging/JDKBugHacks.java (original)
+++ cxf/trunk/common/common/src/main/java/org/apache/cxf/common/logging/JDKBugHacks.java Mon Dec 12 21:56:43 2011
@@ -19,16 +19,22 @@
package org.apache.cxf.common.logging;
+import java.io.BufferedReader;
import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
import java.lang.reflect.Method;
import java.net.URL;
import java.net.URLConnection;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
import javax.imageio.ImageIO;
import javax.xml.parsers.DocumentBuilderFactory;
import org.apache.cxf.common.classloader.ClassLoaderUtils;
import org.apache.cxf.common.classloader.ClassLoaderUtils.ClassLoaderHolder;
+import org.apache.cxf.common.util.StringUtils;
/**
* This is called from LogUtils as LogUtils is almost always one of the VERY
@@ -47,6 +53,41 @@ final class JDKBugHacks {
//not constructed
}
+ private static boolean skipHack(final String key) {
+ String cname = null;
+ try {
+ cname = AccessController.doPrivileged(new PrivilegedAction<String>() {
+ public String run() {
+ return System.getProperty(key);
+ }
+ });
+ if (StringUtils.isEmpty(cname)) {
+ InputStream ins = Thread.currentThread().getContextClassLoader()
+ .getResourceAsStream("META-INF/cxf/" + key);
+ if (ins == null) {
+ ins = ClassLoader.getSystemResourceAsStream("META-INF/cxf/" + key);
+ }
+ if (ins != null) {
+ BufferedReader din = new BufferedReader(new InputStreamReader(ins));
+ try {
+ cname = din.readLine();
+ if (cname != null) {
+ cname.trim();
+ }
+ } finally {
+ din.close();
+ }
+ }
+ }
+ } catch (Throwable t) {
+ //ignore
+ }
+ if (cname == null) {
+ cname = "false";
+ }
+ return Boolean.parseBoolean(cname);
+ }
+
public static void doHacks() {
try {
// Use the system classloader as the victim for all this
@@ -67,14 +108,17 @@ final class JDKBugHacks {
// JAXB does this and thus affects us pretty badly.
// Doesn't matter that this JAR doesn't exist - just as long as
// the URL is well-formed
- URL url = new URL("jar:file://dummy.jar!/");
- URLConnection uConn = new URLConnection(url) {
- @Override
- public void connect() throws IOException {
- // NOOP
- }
- };
- uConn.setDefaultUseCaches(false);
+ boolean skip = skipHack("org.apache.cxf.JDKBugHacks.defaultUsesCaches");
+ if (!skip) {
+ URL url = new URL("jar:file://dummy.jar!/");
+ URLConnection uConn = new URLConnection(url) {
+ @Override
+ public void connect() throws IOException {
+ // NOOP
+ }
+ };
+ uConn.setDefaultUseCaches(false);
+ }
} catch (Throwable e) {
//ignore
}
Modified: cxf/trunk/common/common/src/main/java/org/apache/cxf/common/logging/LogUtils.java
URL: http://svn.apache.org/viewvc/cxf/trunk/common/common/src/main/java/org/apache/cxf/common/logging/LogUtils.java?rev=1213457&r1=1213456&r2=1213457&view=diff
==============================================================================
--- cxf/trunk/common/common/src/main/java/org/apache/cxf/common/logging/LogUtils.java (original)
+++ cxf/trunk/common/common/src/main/java/org/apache/cxf/common/logging/LogUtils.java Mon Dec 12 21:56:43 2011
@@ -24,6 +24,8 @@ import java.io.InputStream;
import java.io.InputStreamReader;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
import java.text.MessageFormat;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
@@ -33,7 +35,6 @@ import java.util.logging.Logger;
import org.apache.cxf.common.i18n.BundleUtils;
import org.apache.cxf.common.util.StringUtils;
-import org.apache.cxf.common.util.SystemPropertyAction;
/**
@@ -67,7 +68,18 @@ public final class LogUtils {
JDKBugHacks.doHacks();
try {
- String cname = SystemPropertyAction.getPropertyOrNull(KEY);
+
+ String cname = null;
+ try {
+ cname = AccessController.doPrivileged(new PrivilegedAction<String>() {
+ public String run() {
+ return System.getProperty(KEY);
+ }
+ });
+ } catch (Throwable t) {
+ //ignore - likely security exception or similar that won't allow
+ //access to the system properties. We'll continue with other methods
+ }
if (StringUtils.isEmpty(cname)) {
InputStream ins = Thread.currentThread().getContextClassLoader()
.getResourceAsStream("META-INF/cxf/" + KEY);