Log Message
Fix unwanted initialization of AWT since version 1.4.3 (XSTR-709).
Modified Paths
- trunk/xstream/src/java/com/thoughtworks/xstream/XStream.java
- trunk/xstream/src/java/com/thoughtworks/xstream/core/JVM.java
Diff
Modified: trunk/xstream/src/java/com/thoughtworks/xstream/XStream.java (2004 => 2005)
--- trunk/xstream/src/java/com/thoughtworks/xstream/XStream.java 2013-01-15 22:46:46 UTC (rev 2004)
+++ trunk/xstream/src/java/com/thoughtworks/xstream/XStream.java 2013-01-15 23:48:50 UTC (rev 2005)
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2003, 2004, 2005, 2006 Joe Walnes.
- * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 XStream Committers.
+ * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 XStream Committers.
* All rights reserved.
*
* The software in this package is published under the terms of the BSD
@@ -592,8 +592,8 @@
// Instantiating these two classes starts the AWT system, which is undesirable.
// Calling loadClass ensures a reference to the class is found but they are not
// instantiated.
- alias("awt-color", jvm.loadClass("java.awt.Color"));
- alias("awt-font", jvm.loadClass("java.awt.Font"));
+ alias("awt-color", jvm.loadClass("java.awt.Color", false));
+ alias("awt-font", jvm.loadClass("java.awt.Font", false));
alias("awt-text-attribute", jvm.loadClass("java.awt.font.TextAttribute"));
}
Modified: trunk/xstream/src/java/com/thoughtworks/xstream/core/JVM.java (2004 => 2005)
--- trunk/xstream/src/java/com/thoughtworks/xstream/core/JVM.java 2013-01-15 22:46:46 UTC (rev 2004)
+++ trunk/xstream/src/java/com/thoughtworks/xstream/core/JVM.java 2013-01-15 23:48:50 UTC (rev 2005)
@@ -17,7 +17,6 @@
import com.thoughtworks.xstream.core.util.PresortedSet;
import com.thoughtworks.xstream.core.util.WeakCache;
-import java.awt.GraphicsEnvironment;
import java.lang.reflect.Field;
import java.security.AccessControlException;
import java.text.AttributedString;
@@ -36,9 +35,9 @@
private ReflectionProvider reflectionProvider;
private transient Map loaderCache = new WeakCache(new HashMap());
- private final boolean supportsAWT = existsClass("java.awt.Color") && (is15() || !GraphicsEnvironment.isHeadless());
- private final boolean supportsSwing = existsClass("javax.swing.LookAndFeel") && (is15() || !GraphicsEnvironment.isHeadless());
- private final boolean supportsSQL = existsClass("java.sql.Date");
+ private final boolean supportsAWT = loadClass("java.awt.Color", false) != null;
+ private final boolean supportsSwing = loadClass("javax.swing.LookAndFeel", false) != null;
+ private final boolean supportsSQL = loadClass("java.sql.Date") != null;
private static final boolean optimizedTreeSetAddAll;
private static final boolean optimizedTreeMapPutAll;
@@ -213,28 +212,20 @@
return vendor.indexOf("SAP AG") != -1;
}
- public boolean existsClass(String name) {
- if (loaderCache.get(name) != null) {
- return true;
- }
- try {
- return Class.forName(name, false, getClass().getClassLoader()) != null;
- } catch (LinkageError e) {
- return false;
- } catch (ClassNotFoundException e) {
- return false;
- } catch (RuntimeException e) {
- return false;
- }
+ public Class loadClass(String name) {
+ return loadClass(name, true);
}
- public Class loadClass(String name) {
+ /**
+ * @since upcoming
+ */
+ public Class loadClass(String name, boolean initialize) {
Class cached = (Class) loaderCache.get(name);
if (cached != null) {
return cached;
}
try {
- Class clazz = Class.forName(name, true, getClass().getClassLoader());
+ Class clazz = Class.forName(name, initialize, getClass().getClassLoader());
loaderCache.put(name, clazz);
return clazz;
} catch (LinkageError e) {
To unsubscribe from this list please visit:
