Title: [2005] trunk/xstream/src/java/com/thoughtworks/xstream: Fix unwanted initialization of AWT since version 1.4.3 (XSTR-709).
Revision
2005
Author
joehni
Date
2013-01-15 17:48:50 -0600 (Tue, 15 Jan 2013)

Log Message

Fix unwanted initialization of AWT since version 1.4.3 (XSTR-709).

Modified Paths


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:

http://xircles.codehaus.org/manage_email

Reply via email to