Title: [2095] trunk: Make JVM static only.

Diff

Modified: trunk/xstream/src/java/com/thoughtworks/xstream/XStream.java (2094 => 2095)


--- trunk/xstream/src/java/com/thoughtworks/xstream/XStream.java	2013-07-06 12:23:38 UTC (rev 2094)
+++ trunk/xstream/src/java/com/thoughtworks/xstream/XStream.java	2013-07-08 22:35:46 UTC (rev 2095)
@@ -311,8 +311,6 @@
     private LocalConversionMapper localConversionMapper;
     private AnnotationConfiguration annotationConfiguration;
 
-    private transient JVM jvm = new JVM();
-
     public static final int NO_REFERENCES = 1001;
     public static final int ID_REFERENCES = 1002;
     public static final int XPATH_RELATIVE_REFERENCES = 1003;
@@ -539,9 +537,8 @@
         ReflectionProvider reflectionProvider, HierarchicalStreamDriver driver,
         ClassLoaderReference classLoaderReference, Mapper mapper, ConverterLookup converterLookup,
         ConverterRegistry converterRegistry) {
-        jvm = new JVM();
         if (reflectionProvider == null) {
-            reflectionProvider = jvm.bestReflectionProvider();
+            reflectionProvider = JVM.newReflectionProvider();
         }
         this.reflectionProvider = reflectionProvider;
         this.hierarchicalStreamDriver = driver;
@@ -688,19 +685,19 @@
         alias("singleton-map", Collections.singletonMap(this, null).getClass());
         alias("singleton-set", Collections.singleton(this).getClass());
 
-        if (jvm.supportsAWT()) {
+        if (JVM.isAWTAvailable()) {
             // 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", false));
-            alias("awt-font", jvm.loadClass("java.awt.Font", false));
-            alias("awt-text-attribute", jvm.loadClass("java.awt.font.TextAttribute"));
+            alias("awt-color", JVM.loadClassForName("java.awt.Color", false));
+            alias("awt-font", JVM.loadClassForName("java.awt.Font", false));
+            alias("awt-text-attribute", JVM.loadClassForName("java.awt.font.TextAttribute"));
         }
 
-        if (jvm.supportsSQL()) {
-            alias("sql-timestamp", jvm.loadClass("java.sql.Timestamp"));
-            alias("sql-time", jvm.loadClass("java.sql.Time"));
-            alias("sql-date", jvm.loadClass("java.sql.Date"));
+        if (JVM.isSQLAvailable()) {
+            alias("sql-timestamp", JVM.loadClassForName("java.sql.Timestamp"));
+            alias("sql-time", JVM.loadClassForName("java.sql.Time"));
+            alias("sql-date", JVM.loadClassForName("java.sql.Date"));
         }
 
         alias("file", File.class);
@@ -709,25 +706,25 @@
 
         if (JVM.is14()) {
             aliasDynamically("auth-subject", "javax.security.auth.Subject");
-            alias("linked-hash-map", jvm.loadClass("java.util.LinkedHashMap"));
-            alias("linked-hash-set", jvm.loadClass("java.util.LinkedHashSet"));
-            alias("trace", jvm.loadClass("java.lang.StackTraceElement"));
-            alias("currency", jvm.loadClass("java.util.Currency"));
-            aliasType("charset", jvm.loadClass("java.nio.charset.Charset"));
+            alias("linked-hash-map", JVM.loadClassForName("java.util.LinkedHashMap"));
+            alias("linked-hash-set", JVM.loadClassForName("java.util.LinkedHashSet"));
+            alias("trace", JVM.loadClassForName("java.lang.StackTraceElement"));
+            alias("currency", JVM.loadClassForName("java.util.Currency"));
+            aliasType("charset", JVM.loadClassForName("java.nio.charset.Charset"));
         }
 
         if (JVM.is15()) {
             aliasDynamically("duration", "javax.xml.datatype.Duration");
-            alias("concurrent-hash-map", jvm.loadClass("java.util.concurrent.ConcurrentHashMap"));
-            alias("enum-set", jvm.loadClass("java.util.EnumSet"));
-            alias("enum-map", jvm.loadClass("java.util.EnumMap"));
-            alias("string-builder", jvm.loadClass("java.lang.StringBuilder"));
-            alias("uuid", jvm.loadClass("java.util.UUID"));
+            alias("concurrent-hash-map", JVM.loadClassForName("java.util.concurrent.ConcurrentHashMap"));
+            alias("enum-set", JVM.loadClassForName("java.util.EnumSet"));
+            alias("enum-map", JVM.loadClassForName("java.util.EnumMap"));
+            alias("string-builder", JVM.loadClassForName("java.lang.StringBuilder"));
+            alias("uuid", JVM.loadClassForName("java.util.UUID"));
         }
     }
 
     private void aliasDynamically(String alias, String className) {
-        Class type = jvm.loadClass(className);
+        Class type = JVM.loadClassForName(className);
         if (type != null) {
             alias(alias, type);
         }
@@ -783,7 +780,7 @@
         registerConverter((Converter)new EncodedByteArrayConverter(), PRIORITY_NORMAL);
 
         registerConverter(new FileConverter(), PRIORITY_NORMAL);
-        if (jvm.supportsSQL()) {
+        if (JVM.isSQLAvailable()) {
             registerConverter(new SqlTimestampConverter(), PRIORITY_NORMAL);
             registerConverter(new SqlTimeConverter(), PRIORITY_NORMAL);
             registerConverter(new SqlDateConverter(), PRIORITY_NORMAL);
@@ -793,12 +790,12 @@
         registerConverter(new JavaClassConverter(classLoaderReference), PRIORITY_NORMAL);
         registerConverter(new JavaMethodConverter(classLoaderReference), PRIORITY_NORMAL);
         registerConverter(new JavaFieldConverter(classLoaderReference), PRIORITY_NORMAL);
-        if (jvm.supportsAWT()) {
+        if (JVM.isAWTAvailable()) {
             registerConverter(new FontConverter(), PRIORITY_NORMAL);
             registerConverter(new ColorConverter(), PRIORITY_NORMAL);
             registerConverter(new TextAttributeConverter(), PRIORITY_NORMAL);
         }
-        if (jvm.supportsSwing()) {
+        if (JVM.isSwingAvailable()) {
             registerConverter(
                 new LookAndFeelConverter(mapper, reflectionProvider), PRIORITY_NORMAL);
         }
@@ -830,7 +827,7 @@
 
         if (JVM.is15()) {
             // late bound converters - allows XStream to be compiled on earlier JDKs
-            if (jvm.loadClass("javax.xml.datatype.Duration") != null) {
+            if (JVM.loadClassForName("javax.xml.datatype.Duration") != null) {
                 registerConverterDynamically(
                     "com.thoughtworks.xstream.converters.extended.DurationConverter",
                     PRIORITY_NORMAL, null, null);
@@ -910,7 +907,7 @@
         addImmutableType(Collections.EMPTY_SET.getClass());
         addImmutableType(Collections.EMPTY_MAP.getClass());
 
-        if (jvm.supportsAWT()) {
+        if (JVM.isAWTAvailable()) {
             addImmutableTypeDynamically("java.awt.font.TextAttribute");
         }
 
@@ -922,7 +919,7 @@
     }
 
     private void addImmutableTypeDynamically(String className) {
-        Class type = jvm.loadClass(className);
+        Class type = JVM.loadClassForName(className);
         if (type != null) {
             addImmutableType(type);
         }
@@ -1991,10 +1988,4 @@
             super(message);
         }
     }
-
-    private Object readResolve() {
-        jvm = new JVM();
-        return this;
-    }
-
 }

Modified: trunk/xstream/src/java/com/thoughtworks/xstream/core/JVM.java (2094 => 2095)


--- trunk/xstream/src/java/com/thoughtworks/xstream/core/JVM.java	2013-07-06 12:23:38 UTC (rev 2094)
+++ trunk/xstream/src/java/com/thoughtworks/xstream/core/JVM.java	2013-07-08 22:35:46 UTC (rev 2095)
@@ -11,11 +11,13 @@
  */
 package com.thoughtworks.xstream.core;
 
+import com.thoughtworks.xstream.converters.reflection.FieldDictionary;
+import com.thoughtworks.xstream.converters.reflection.ObjectAccessException;
 import com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider;
 import com.thoughtworks.xstream.converters.reflection.ReflectionProvider;
+import com.thoughtworks.xstream.core.util.DependencyInjectionFactory;
 import com.thoughtworks.xstream.core.util.PresortedMap;
 import com.thoughtworks.xstream.core.util.PresortedSet;
-import com.thoughtworks.xstream.core.util.WeakCache;
 
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
@@ -24,8 +26,6 @@
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.Comparator;
-import java.util.HashMap;
-import java.util.Map;
 import java.util.SortedMap;
 import java.util.SortedSet;
 import java.util.TreeMap;
@@ -34,13 +34,11 @@
 public class JVM implements Caching {
 
     private ReflectionProvider reflectionProvider;
-    private transient Map loaderCache = new WeakCache(new HashMap());
     
-    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 final boolean supportsSunStAX = loadClass("com.sun.xml.internal.stream.XMLInputFactoryImpl") != null;
-    
+    private static final boolean isAWTAvailable;
+    private static final boolean isSwingAvailable;
+    private static final boolean isSQLAvailable;
+    private static final boolean isSunStAXAvailable;
     private static final boolean canAllocateWithUnsafe;
     private static final boolean optimizedTreeSetAddAll;
     private static final boolean optimizedTreeMapPutAll;
@@ -48,10 +46,10 @@
 
     private static final String vendor = System.getProperty("java.vm.vendor");
     private static final float majorJavaVersion = getMajorJavaVersion();
+    private static final float DEFAULT_JAVA_VERSION = 1.4f;
     private static final boolean reverseFieldOrder = false;
+    private static final Class reflectionProviderType;
 
-    private static final float DEFAULT_JAVA_VERSION = 1.4f;
-
     static class Broken {
         Broken() {
            throw new UnsupportedOperationException(); 
@@ -104,9 +102,36 @@
             test = false;
         }
         canParseUTCDateFormat = test;
+        
+        isAWTAvailable = loadClassForName("java.awt.Color", false) != null;
+        isSwingAvailable = loadClassForName("javax.swing.LookAndFeel", false) != null;
+        isSQLAvailable = loadClassForName("java.sql.Date") != null;
+        isSunStAXAvailable = loadClassForName("com.sun.xml.internal.stream.XMLInputFactoryImpl") != null;
+        
+        Class type = null;
+        if (canUseSun14ReflectionProvider()) {
+            type = loadClassForName("com.thoughtworks.xstream.converters.reflection.Sun14ReflectionProvider");
+            if (type != null) {
+                try {
+                    DependencyInjectionFactory.newInstance(type, null);
+                } catch (ObjectAccessException e) {
+                    type = null;
+                }
+            }
+        }
+        if (type == null) {
+            type = PureJavaReflectionProvider.class;
+        }
+        reflectionProviderType = type;
     }
     
     /**
+     * @deprecated As of upcoming use the static methods of JVM.
+     */
+    public JVM() {
+    }
+    
+    /**
      * Parses the java version system property to determine the major java version,
      * i.e. 1.x
      *
@@ -167,21 +192,36 @@
         return vendor.indexOf("Android") != -1;
     }
 
+    /**
+     * Load a XStream class for the given name.
+     * 
+     * <p>This method is not meant to use loading arbitrary classes. It is used by XStream bootstrap
+     * until it is able to use the user provided or the default {@link ClassLoader}.</p>
+     * 
+     * @since upcoming
+     */
+    public static Class loadClassForName(String name) {
+        return loadClassForName(name, true);
+    }
+
+    /**
+     * @deprecated As of upcoming use {@link #loadClassForName(String)}
+     */
     public Class loadClass(String name) {
-        return loadClass(name, true);
+        return loadClassForName(name, true);
     }
 
     /**
-     * @since 1.4.4
+     * Load a XStream class for the given name.
+     * 
+     * <p>This method is not meant to use loading arbitrary classes. It is used by XStream bootstrap
+     * until it is able to use the user provided or the default {@link ClassLoader}.</p>
+     * 
+     * @since upcoming
      */
-    public Class loadClass(String name, boolean initialize) {
-        Class cached = (Class) loaderCache.get(name);
-        if (cached != null) {
-            return cached;
-        }
+    public static Class loadClassForName(String name, boolean initialize) {
         try {
-            Class clazz = Class.forName(name, initialize, getClass().getClassLoader());
-            loaderCache.put(name, clazz);
+            Class clazz = Class.forName(name, initialize, JVM.class.getClassLoader());
             return clazz;
         } catch (LinkageError e) {
             return null;
@@ -190,6 +230,38 @@
         }
     }
 
+    /**
+     * @since 1.4.4
+     * @deprecated As of upcoming use {@link #loadClassForName(String, boolean)}
+     */
+    public Class loadClass(String name, boolean initialize) {
+        return loadClassForName(name, initialize);
+    }
+    
+    /**
+     * Create the best matching ReflectionProvider.
+     * 
+     * @return a new instance
+     * @since upcoming
+     */
+    public static ReflectionProvider newReflectionProvider() {
+        return (ReflectionProvider)DependencyInjectionFactory.newInstance(reflectionProviderType, null);
+    }
+    
+    /**
+     * Create the best matching ReflectionProvider.
+     *
+     * @param dictionary the FieldDictionary to use by the ReflectionProvider
+     * @return a new instance
+     * @since upcoming
+     */
+    public static ReflectionProvider newReflectionProvider(FieldDictionary dictionary) {
+        return (ReflectionProvider)DependencyInjectionFactory.newInstance(reflectionProviderType, new Object[]{ dictionary });
+    }
+    
+    /**
+     * @deprecated As of upcoming use {@link #newReflectionProvider()}
+     */
     public synchronized ReflectionProvider bestReflectionProvider() {
         if (reflectionProvider == null) {
             try {
@@ -198,7 +270,7 @@
                     className = "com.thoughtworks.xstream.converters.reflection.Sun14ReflectionProvider";
                 }
                 if (className != null) {
-                    Class cls = loadClass(className);
+                    Class cls = loadClassForName(className);
                     if (cls != null) {
                         reflectionProvider = (ReflectionProvider) cls.newInstance();
                     }
@@ -206,7 +278,7 @@
             } catch (InstantiationException e) {
             } catch (IllegalAccessException e) {
             } catch (AccessControlException e) {
-                // thrown when trying to access sun.misc package in Applet context.
+                // thrown when trying to access sun.misc package in Applet context
             }
             if (reflectionProvider == null) {
                 reflectionProvider = new PureJavaReflectionProvider();
@@ -215,33 +287,63 @@
         return reflectionProvider;
     }
 
-    private boolean canUseSun14ReflectionProvider() {
+    private static boolean canUseSun14ReflectionProvider() {
         return canAllocateWithUnsafe && is14();
     }
 
+    /**
+     * @deprecated As of upcoming
+     */
     public static boolean reverseFieldDefinition() {
         return reverseFieldOrder;
     }
 
     /**
+     * Checks if AWT is available.
+     * @since upcoming
+     */
+    public static boolean isAWTAvailable() {
+        return isAWTAvailable;
+    }
+
+    /**
      * Checks if the jvm supports awt.
+     * @deprecated As of upcoming use {@link #isAWTAvailable()}
      */
     public boolean supportsAWT() {
-        return this.supportsAWT;
+        return this.isAWTAvailable;
     }
 
     /**
+     * Checks if Swing is available.
+     * @since upcoming
+     */
+    public static boolean isSwingAvailable() {
+        return isSwingAvailable;
+    }
+
+    /**
      * Checks if the jvm supports swing.
+     * @deprecated As of upcoming use {@link #isSwingAvailable()}
      */
     public boolean supportsSwing() {
-        return this.supportsSwing;
+        return this.isSwingAvailable;
     }
 
     /**
+     * Checks if SQL is available.
+     * @since upcoming
+     */
+    public static boolean isSQLAvailable() {
+        return isSQLAvailable;
+    }
+
+    /**
      * Checks if the jvm supports sql.
+     * @deprecated As of upcoming use {@link #isSQLAvailable()}
      */
     public boolean supportsSQL() {
-        return this.supportsSQL;
+        return this.isSQLAvailable;
     }
 
     /**
@@ -249,8 +351,8 @@
      * 
      * @since upcoming
      */
-    public boolean supportsSunStAX() {
-        return this.supportsSunStAX;
+    public static boolean isSunStAXAvilable() {
+        return isSunStAXAvailable;
     }
     
     /**
@@ -275,15 +377,12 @@
         return canParseUTCDateFormat;
     }
 
+    /**
+     * @deprecated As of upcoming no functionality
+     */
     public void flushCache() {
-        loaderCache.clear();
     }
     
-    private Object readResolve() {
-        loaderCache = new WeakCache(new HashMap());
-        return this;
-    }
-    
     public static void main(String[] args) {
         boolean reverse = false;
         Field[] fields = AttributedString.class.getDeclaredFields();
@@ -303,7 +402,6 @@
             }
         }
 
-        JVM jvm = new JVM();
         System.out.println("XStream JVM diagnostics");
         System.out.println("java.specification.version: " + System.getProperty("java.specification.version"));
         System.out.println("java.specification.vendor: " + System.getProperty("java.specification.vendor"));
@@ -312,10 +410,10 @@
         System.out.println("java.vendor: " + System.getProperty("java.vendor"));
         System.out.println("java.vm.name: " + System.getProperty("java.vm.name"));
         System.out.println("Version: " + majorJavaVersion);
-        System.out.println("XStream support for enhanced Mode: " + jvm.canUseSun14ReflectionProvider());
-        System.out.println("Supports AWT: " + jvm.supportsAWT());
-        System.out.println("Supports Swing: " + jvm.supportsSwing());
-        System.out.println("Supports SQL: " + jvm.supportsSunStAX());
+        System.out.println("XStream support for enhanced Mode: " + canUseSun14ReflectionProvider());
+        System.out.println("Supports AWT: " + isAWTAvailable());
+        System.out.println("Supports Swing: " + isSwingAvailable());
+        System.out.println("Supports SQL: " + isSunStAXAvilable());
         System.out.println("Optimized TreeSet.addAll: " + hasOptimizedTreeSetAddAll());
         System.out.println("Optimized TreeMap.putAll: " + hasOptimizedTreeMapPutAll());
         System.out.println("Can parse UTC date format: " + canParseUTCDateFormat());

Modified: trunk/xstream/src/java/com/thoughtworks/xstream/core/util/DependencyInjectionFactory.java (2094 => 2095)


--- trunk/xstream/src/java/com/thoughtworks/xstream/core/util/DependencyInjectionFactory.java	2013-07-06 12:23:38 UTC (rev 2094)
+++ trunk/xstream/src/java/com/thoughtworks/xstream/core/util/DependencyInjectionFactory.java	2013-07-08 22:35:46 UTC (rev 2095)
@@ -229,6 +229,10 @@
             throw new ObjectAccessException("Cannot construct " + type.getName(), e);
         } catch (final InvocationTargetException e) {
             throw new ObjectAccessException("Cannot construct " + type.getName(), e);
+        } catch (final SecurityException e) {
+            throw new ObjectAccessException("Cannot construct " + type.getName(), e);
+        } catch (final ExceptionInInitializerError e) {
+            throw new ObjectAccessException("Cannot construct " + type.getName(), e);
         }
     }
 

Modified: trunk/xstream/src/test/com/thoughtworks/acceptance/FinalFieldsTest.java (2094 => 2095)


--- trunk/xstream/src/test/com/thoughtworks/acceptance/FinalFieldsTest.java	2013-07-06 12:23:38 UTC (rev 2094)
+++ trunk/xstream/src/test/com/thoughtworks/acceptance/FinalFieldsTest.java	2013-07-08 22:35:46 UTC (rev 2095)
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2004, 2005 Joe Walnes.
- * Copyright (C) 2006, 2007, 2008 XStream Committers.
+ * Copyright (C) 2006, 2007, 2008, 2013 XStream Committers.
  * All rights reserved.
  *
  * The software in this package is published under the terms of the BSD
@@ -24,7 +24,7 @@
     }
 
     public void testSerializeFinalFieldsIfSupported() {
-        xstream = new XStream(new JVM().bestReflectionProvider());
+        xstream = new XStream(JVM.newReflectionProvider());
         xstream.alias("thing", ThingWithFinalField.class);
 
         assertBothWays(new ThingWithFinalField(),

Modified: trunk/xstream/src/test/com/thoughtworks/xstream/core/JVMTest.java (2094 => 2095)


--- trunk/xstream/src/test/com/thoughtworks/xstream/core/JVMTest.java	2013-07-06 12:23:38 UTC (rev 2094)
+++ trunk/xstream/src/test/com/thoughtworks/xstream/core/JVMTest.java	2013-07-08 22:35:46 UTC (rev 2095)
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2004, 2005 Joe Walnes.
- * Copyright (C) 2006, 2007, 2012 XStream Committers.
+ * Copyright (C) 2006, 2007, 2012, 2013 XStream Committers.
  * All rights reserved.
  *
  * The software in this package is published under the terms of the BSD
@@ -17,7 +17,7 @@
 
     public void testDoesIgnoreLinkageErrors() {
         try {
-            assertNull(new JVM().loadClass("com.thoughtworks.xstream.core.EvilClass"));
+            assertNull(JVM.loadClassForName("com.thoughtworks.xstream.core.EvilClass"));
         } catch (LinkageError error) {
             fail("Error thrown");
         }

Modified: trunk/xstream/src/test/com/thoughtworks/xstream/io/DriverEndToEndTestSuite.java (2094 => 2095)


--- trunk/xstream/src/test/com/thoughtworks/xstream/io/DriverEndToEndTestSuite.java	2013-07-06 12:23:38 UTC (rev 2094)
+++ trunk/xstream/src/test/com/thoughtworks/xstream/io/DriverEndToEndTestSuite.java	2013-07-08 22:35:46 UTC (rev 2095)
@@ -56,7 +56,7 @@
         addDriverTest(new JDomDriver());
         if (JVM.is15()) {
             JVM jvm = new JVM();
-            Class driverType = jvm.loadClass("com.thoughtworks.xstream.io.xml.JDom2Driver");
+            Class driverType = jvm.loadClassForName("com.thoughtworks.xstream.io.xml.JDom2Driver");
             try {
                 addDriverTest((HierarchicalStreamDriver)driverType.newInstance());
             } catch (InstantiationException e) {
@@ -69,9 +69,8 @@
         addDriverTest(new KXml2Driver());
         addDriverTest(new StaxDriver());
         if (JVM.is16()) {
-            JVM jvm = new JVM();
-            if (jvm.supportsSunStAX()) {
-                Class driverType = jvm.loadClass("com.thoughtworks.xstream.io.xml.SjsxpDriver");
+            if (JVM.isSunStAXAvilable()) {
+                Class driverType = JVM.loadClassForName("com.thoughtworks.xstream.io.xml.SjsxpDriver");
                 try {
                     addDriverTest((HierarchicalStreamDriver)driverType.newInstance());
                 } catch (InstantiationException e) {
@@ -88,8 +87,7 @@
         addDriverTest(new XppDomDriver());
         addDriverTest(new XppDriver());
         if (JVM.is14()) {
-            JVM jvm = new JVM();
-            Class driverType = jvm.loadClass("com.thoughtworks.xstream.io.json.JettisonMappedXmlDriver");
+            Class driverType = JVM.loadClassForName("com.thoughtworks.xstream.io.json.JettisonMappedXmlDriver");
             try {
                 addDriverTest((HierarchicalStreamDriver)driverType.newInstance());
             } catch (InstantiationException e) {

Modified: trunk/xstream-benchmark/src/test/com/thoughtworks/xstream/tools/benchmark/cache/products/AliasedAttributeCache.java (2094 => 2095)


--- trunk/xstream-benchmark/src/test/com/thoughtworks/xstream/tools/benchmark/cache/products/AliasedAttributeCache.java	2013-07-06 12:23:38 UTC (rev 2094)
+++ trunk/xstream-benchmark/src/test/com/thoughtworks/xstream/tools/benchmark/cache/products/AliasedAttributeCache.java	2013-07-08 22:35:46 UTC (rev 2095)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008, 2009 XStream Committers.
+ * Copyright (C) 2008, 2009, 2013 XStream Committers.
  * All rights reserved.
  *
  * The software in this package is published under the terms of the BSD
@@ -10,7 +10,6 @@
  */
 package com.thoughtworks.xstream.tools.benchmark.cache.products;
 
-import com.thoughtworks.xstream.core.JVM;
 import com.thoughtworks.xstream.mapper.Mapper;
 import com.thoughtworks.xstream.mapper.MapperWrapper;
 
@@ -27,8 +26,8 @@
  */
 public class AliasedAttributeCache extends XStreamCache {
 
-    protected List getMappers(JVM jvm) {
-        List list = super.getMappers(jvm);
+    protected List getMappers() {
+        List list = super.getMappers();
         list.add(CachingMapper.class);
         return list;
     }

Modified: trunk/xstream-benchmark/src/test/com/thoughtworks/xstream/tools/benchmark/cache/products/Cache122.java (2094 => 2095)


--- trunk/xstream-benchmark/src/test/com/thoughtworks/xstream/tools/benchmark/cache/products/Cache122.java	2013-07-06 12:23:38 UTC (rev 2094)
+++ trunk/xstream-benchmark/src/test/com/thoughtworks/xstream/tools/benchmark/cache/products/Cache122.java	2013-07-08 22:35:46 UTC (rev 2095)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008, 2009 XStream Committers.
+ * Copyright (C) 2008, 2009, 2013 XStream Committers.
  * All rights reserved.
  *
  * The software in this package is published under the terms of the BSD
@@ -28,15 +28,15 @@
  */
 public class Cache122 extends XStreamCache {
 
-    protected List getMappers(JVM jvm) {
-        List list = super.getMappers(jvm);
+    protected List getMappers() {
+        List list = super.getMappers();
         Object cglibMapper = list.remove(1);
         Object dynProxyMapper = null;
-        if (jvm.loadClass("net.sf.cglib.proxy.Enhancer") != null) {
+        if (JVM.loadClassForName("net.sf.cglib.proxy.Enhancer") != null) {
             dynProxyMapper = list.remove(1);
         }
         int idx = list.indexOf(ImplicitCollectionMapper.class);
-        if (jvm.loadClass("net.sf.cglib.proxy.Enhancer") != null) {
+        if (JVM.loadClassForName("net.sf.cglib.proxy.Enhancer") != null) {
             list.add(idx+1, dynProxyMapper);
         }
         list.add(idx+1, cglibMapper);

Modified: trunk/xstream-benchmark/src/test/com/thoughtworks/xstream/tools/benchmark/cache/products/DefaultImplementationCache.java (2094 => 2095)


--- trunk/xstream-benchmark/src/test/com/thoughtworks/xstream/tools/benchmark/cache/products/DefaultImplementationCache.java	2013-07-06 12:23:38 UTC (rev 2094)
+++ trunk/xstream-benchmark/src/test/com/thoughtworks/xstream/tools/benchmark/cache/products/DefaultImplementationCache.java	2013-07-08 22:35:46 UTC (rev 2095)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008, 2009 XStream Committers.
+ * Copyright (C) 2008, 2009, 2013 XStream Committers.
  * All rights reserved.
  *
  * The software in this package is published under the terms of the BSD
@@ -10,7 +10,6 @@
  */
 package com.thoughtworks.xstream.tools.benchmark.cache.products;
 
-import com.thoughtworks.xstream.core.JVM;
 import com.thoughtworks.xstream.mapper.Mapper;
 import com.thoughtworks.xstream.mapper.MapperWrapper;
 
@@ -28,8 +27,8 @@
  */
 public class DefaultImplementationCache extends XStreamCache {
 
-    protected List getMappers(JVM jvm) {
-        List list = super.getMappers(jvm);
+    protected List getMappers() {
+        List list = super.getMappers();
         list.add(CachingMapper.class);
         return list;
     }

Modified: trunk/xstream-benchmark/src/test/com/thoughtworks/xstream/tools/benchmark/cache/products/RealClassCache.java (2094 => 2095)


--- trunk/xstream-benchmark/src/test/com/thoughtworks/xstream/tools/benchmark/cache/products/RealClassCache.java	2013-07-06 12:23:38 UTC (rev 2094)
+++ trunk/xstream-benchmark/src/test/com/thoughtworks/xstream/tools/benchmark/cache/products/RealClassCache.java	2013-07-08 22:35:46 UTC (rev 2095)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008, 2009 XStream Committers.
+ * Copyright (C) 2008, 2009, 2013 XStream Committers.
  * All rights reserved.
  *
  * The software in this package is published under the terms of the BSD
@@ -10,7 +10,6 @@
  */
 package com.thoughtworks.xstream.tools.benchmark.cache.products;
 
-import com.thoughtworks.xstream.core.JVM;
 import com.thoughtworks.xstream.mapper.Mapper;
 import com.thoughtworks.xstream.mapper.MapperWrapper;
 
@@ -28,8 +27,8 @@
  */
 public class RealClassCache extends XStreamCache {
 
-    protected List getMappers(JVM jvm) {
-        List list = super.getMappers(jvm);
+    protected List getMappers() {
+        List list = super.getMappers();
         list.add(CachingMapper.class);
         return list;
     }

Modified: trunk/xstream-benchmark/src/test/com/thoughtworks/xstream/tools/benchmark/cache/products/SerializedClassCache.java (2094 => 2095)


--- trunk/xstream-benchmark/src/test/com/thoughtworks/xstream/tools/benchmark/cache/products/SerializedClassCache.java	2013-07-06 12:23:38 UTC (rev 2094)
+++ trunk/xstream-benchmark/src/test/com/thoughtworks/xstream/tools/benchmark/cache/products/SerializedClassCache.java	2013-07-08 22:35:46 UTC (rev 2095)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008, 2009 XStream Committers.
+ * Copyright (C) 2008, 2009, 2013 XStream Committers.
  * All rights reserved.
  *
  * The software in this package is published under the terms of the BSD
@@ -10,7 +10,6 @@
  */
 package com.thoughtworks.xstream.tools.benchmark.cache.products;
 
-import com.thoughtworks.xstream.core.JVM;
 import com.thoughtworks.xstream.mapper.Mapper;
 import com.thoughtworks.xstream.mapper.MapperWrapper;
 
@@ -27,8 +26,8 @@
  */
 public class SerializedClassCache extends XStreamCache {
 
-    protected List getMappers(JVM jvm) {
-        List list = super.getMappers(jvm);
+    protected List getMappers() {
+        List list = super.getMappers();
         list.add(CachingMapper.class);
         return list;
     }

Modified: trunk/xstream-benchmark/src/test/com/thoughtworks/xstream/tools/benchmark/cache/products/XStreamCache.java (2094 => 2095)


--- trunk/xstream-benchmark/src/test/com/thoughtworks/xstream/tools/benchmark/cache/products/XStreamCache.java	2013-07-06 12:23:38 UTC (rev 2094)
+++ trunk/xstream-benchmark/src/test/com/thoughtworks/xstream/tools/benchmark/cache/products/XStreamCache.java	2013-07-08 22:35:46 UTC (rev 2095)
@@ -56,13 +56,12 @@
     private final XStream xstream;
 
     public XStreamCache() {
-        JVM jvm = new JVM();
         ClassLoaderReference classLoaderReference = new ClassLoaderReference(
             new CompositeClassLoader());
         DefaultConverterLookup converterLookup = new DefaultConverterLookup();
         xstream = new XStream(
-            jvm.bestReflectionProvider(), new XppDriver(), classLoaderReference, buildMapper(
-                getMappers(jvm), jvm, classLoaderReference, converterLookup), converterLookup, converterLookup);
+            JVM.newReflectionProvider(), new XppDriver(), classLoaderReference, buildMapper(
+                getMappers(), classLoaderReference, converterLookup), converterLookup, converterLookup);
         xstream.alias("one", One.class);
         xstream.alias("five", Five.class);
         xstream.alias("ser-one", SerializableOne.class);
@@ -77,11 +76,11 @@
         return xstream.fromXML(input);
     }
 
-    protected List getMappers(JVM jvm) {
+    protected List getMappers() {
         List mappers = new ArrayList();
         mappers.add(DefaultMapper.class);
-        if (jvm.loadClass("net.sf.cglib.proxy.Enhancer") != null) {
-            mappers.add(jvm.loadClass("com.thoughtworks.xstream.mapper.CGLIBMapper"));
+        if (JVM.loadClassForName("net.sf.cglib.proxy.Enhancer") != null) {
+            mappers.add(JVM.loadClassForName("com.thoughtworks.xstream.mapper.CGLIBMapper"));
         }
         mappers.add(DynamicProxyMapper.class);
         mappers.add(ClassAliasingMapper.class);
@@ -93,22 +92,22 @@
         mappers.add(LocalConversionMapper.class);
         mappers.add(DefaultImplementationsMapper.class);
         if (JVM.is15()) {
-            mappers.add(jvm.loadClass("com.thoughtworks.xstream.mapper.EnumMapper"));
+            mappers.add(JVM.loadClassForName("com.thoughtworks.xstream.mapper.EnumMapper"));
         } else {
             mappers.add(AttributeMapper.class);
         }
         mappers.add(ImmutableTypesMapper.class);
         if (JVM.is15()) {
-            mappers.add(jvm.loadClass("com.thoughtworks.xstream.mapper.AnnotationMapper"));
+            mappers.add(JVM.loadClassForName("com.thoughtworks.xstream.mapper.AnnotationMapper"));
         }
         return mappers;
     }
 
-    private Mapper buildMapper(List mappers, JVM jvm, ClassLoaderReference classLoaderReference,
+    private Mapper buildMapper(List mappers, ClassLoaderReference classLoaderReference,
         ConverterLookup converterLookup) {
         final Object[] arguments = new Object[]{
             new TypedNull(Mapper.class), converterLookup, classLoaderReference,
-            jvm.bestReflectionProvider(), jvm};
+            JVM.newReflectionProvider()};
         for (final Iterator iter = mappers.iterator(); iter.hasNext();) {
             final Class mapperType = (Class)iter.next();
             try {

To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to