Refine search
public ConverterImpl(Mapper m) { ref = new RobustReflectionConverter(m,new JVM().bestReflectionProvider()) { @Override protected Object instantiateNewInstance(HierarchicalStreamReader reader, UnmarshallingContext context) { return reflectionProvider.newInstance(LogRotator.class); } }; }
private void init() { dictionaryEntries = new HashMap(); if (JVM.is15()) try { fieldUtil = (FieldUtil)JVM.loadClassForName("com.thoughtworks.xstream.converters.reflection.FieldUtil15", true).newInstance(); } catch (Exception e) { ; } if (fieldUtil == null) fieldUtil = new FieldUtil14(); }
staxInputFactory = getStaxInputFactory().getName(); } catch (ClassNotFoundException e) { staxInputFactory = e.getMessage(); staxOutputFactory = getStaxOutputFactory().getName(); } catch (ClassNotFoundException e) { staxOutputFactory = e.getMessage(); System.out.println("java.vm.name: " + System.getProperty("java.vm.name")); System.out.println("Version: " + majorJavaVersion); System.out.println("XStream support for enhanced Mode: " + canUseSunUnsafeReflectionProvider()); System.out.println("XStream support for reduced Mode: " + canUseSunLimitedUnsafeReflectionProvider()); System.out.println("Supports AWT: " + isAWTAvailable()); System.out.println("Supports Swing: " + isSwingAvailable()); System.out.println("Supports SQL: " + isSQLAvailable()); System.out.println("Java Beans EventHandler present: " + (loadClassForName("java.beans.EventHandler") != null)); System.out.println("Standard StAX XMLInputFactory: " + staxInputFactory); System.out.println("Standard StAX XMLOutputFactory: " + staxOutputFactory); System.out.println("Standard Base64 Codec: " + getBase64Codec().getClass().toString()); System.out.println("Optimized TreeSet.addAll: " + hasOptimizedTreeSetAddAll()); System.out.println("Optimized TreeMap.putAll: " + hasOptimizedTreeMapPutAll()); System.out.println("Can parse UTC date format: " + canParseUTCDateFormat()); System.out.println("Can create derive ObjectOutputStream: " + canCreateDerivedObjectOutputStream()); System.out.println("Reverse field order detected for JDK: " + reverseJDK); System.out.println("Reverse field order detected (only if JVM class itself has been compiled): "
public ISO8601GregorianCalendarConverter() { SingleValueConverter svConverter = null; final Class type = JVM.loadClassForName(JVM.isVersion(8) ? "com.thoughtworks.xstream.core.util.ISO8601JavaTimeConverter" : "com.thoughtworks.xstream.core.util.ISO8601JodaTimeConverter"); try { svConverter = (SingleValueConverter)type.getDeclaredConstructor(EMPTY_CLASS_ARRAY).newInstance( EMPTY_OBJECT_ARRAY); } catch (final InstantiationException e) { // ignore } catch (final IllegalAccessException e) { // ignore } catch (final InvocationTargetException e) { // ignore } catch (final NoSuchMethodException e) { // ignore } converter = svConverter; }
private void aliasDynamically(String alias, String className) { Class type = JVM.loadClassForName(className); if (type != null) { alias(alias, type); } }
protected void setupConverters() { registerConverter( new ReflectionConverter(mapper, reflectionProvider), PRIORITY_VERY_LOW); registerConverter( new SerializableConverter(mapper, reflectionProvider, classLoaderReference), PRIORITY_LOW); registerConverter(new ExternalizableConverter(mapper, classLoaderReference), PRIORITY_LOW); if (JVM.isSQLAvailable()) { if (JVM.isAWTAvailable()) { if (JVM.isSwingAvailable()) { if (JVM.isVersion(4)) { if (JVM.isVersion(5)) { if (JVM.loadClassForName("javax.xml.datatype.Duration") != null) { null, null); if (JVM.loadClassForName("javax.activation.ActivationDataFlavor") != null) { if (JVM.isVersion(7)) { if (JVM.isVersion(8)) {
if (JVM.isAWTAvailable()) { 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")); Class type = JVM.loadClassForName("javax.activation.ActivationDataFlavor"); 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")); if (JVM.isVersion(4)) { aliasDynamically("auth-subject", "javax.security.auth.Subject"); 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.isVersion(5)) { aliasDynamically("xml-duration", "javax.xml.datatype.Duration"); 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"));
alias("singleton-set", Collections.singleton(this).getClass()); if (JVM.isAWTAvailable()) { 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.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")); if (JVM.is14()) { aliasDynamically("auth-subject", "javax.security.auth.Subject"); 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.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"));
protected void setupConverters() { registerConverter( new ReflectionConverter(mapper, reflectionProvider), PRIORITY_VERY_LOW); registerConverter(new WhitelistReflectionConverter(mapper, reflectionProvider), PRIORITY_VERY_LOW); registerConverter( new SerializableConverter(mapper, reflectionProvider, classLoaderReference), PRIORITY_LOW); registerConverter(new ExternalizableConverter(mapper, classLoaderReference), PRIORITY_LOW); registerConverter(new FileConverter(), PRIORITY_NORMAL); if (JVM.isSQLAvailable()) { registerConverter(new SqlTimestampConverter(), PRIORITY_NORMAL); registerConverter(new SqlTimeConverter(), PRIORITY_NORMAL); if (JVM.isAWTAvailable()) { registerConverter(new FontConverter(mapper), PRIORITY_NORMAL); registerConverter(new ColorConverter(), PRIORITY_NORMAL); registerConverter(new TextAttributeConverter(), PRIORITY_NORMAL); if (JVM.isSwingAvailable()) { registerConverter( new LookAndFeelConverter(mapper, reflectionProvider), PRIORITY_NORMAL);
Class type = JVM.loadClassForName("java.lang.Enum"); type = JVM.loadClassForName("java.nio.file.Path"); types.add(String.class); types.add(StringBuffer.class); types.add(JVM.loadClassForName("java.lang.StringBuilder")); types.add(URL.class); types.add(URI.class); types.add(JVM.loadClassForName("java.util.UUID")); if (JVM.isSQLAvailable()) { types.add(JVM.loadClassForName("java.sql.Timestamp")); types.add(JVM.loadClassForName("java.sql.Time")); types.add(JVM.loadClassForName("java.sql.Date")); if (JVM.isVersion(8)) { xstream.allowTypeHierarchy(JVM.loadClassForName("java.time.Clock")); types.add(JVM.loadClassForName("java.time.Duration")); types.add(JVM.loadClassForName("java.time.Instant")); types.add(JVM.loadClassForName("java.time.LocalDate")); types.add(JVM.loadClassForName("java.time.LocalDateTime")); types.add(JVM.loadClassForName("java.time.LocalTime")); types.add(JVM.loadClassForName("java.time.MonthDay")); types.add(JVM.loadClassForName("java.time.OffsetDateTime")); types.add(JVM.loadClassForName("java.time.OffsetTime")); types.add(JVM.loadClassForName("java.time.Period")); types.add(JVM.loadClassForName("java.time.Ser")); types.add(JVM.loadClassForName("java.time.Year")); types.add(JVM.loadClassForName("java.time.YearMonth"));
private boolean canUseSun14ReflectionProvider() { return (isSun() || isApple() || isHPUX() || isIBM() || isBlackdown() || isBEAWithUnsafeSupport() || isHitachi() || isSAP() || isDiablo()) && is14() && loadClass("sun.misc.Unsafe") != null; }
private Mapper buildMapper() { Mapper mapper = new DefaultMapper(classLoaderReference); if ( useXStream11XmlFriendlyMapper() ){ mapper = new XStream11XmlFriendlyMapper(mapper); mapper = new DefaultImplementationsMapper(mapper); mapper = new AttributeMapper(mapper, converterLookup); if (JVM.is15()) { mapper = buildMapperDynamically( "com.thoughtworks.xstream.mapper.EnumMapper", new Class[]{Mapper.class}, new Object[]{mapper}); if (JVM.is15()) { mapper = buildMapperDynamically( ANNOTATION_MAPPER_TYPE, new Class[]{Mapper.class, ConverterRegistry.class, ClassLoader.class, ReflectionProvider.class, JVM.class},
staxInputFactory = getStaxInputFactory().getName(); } catch (ClassNotFoundException e) { staxInputFactory = e.getMessage(); staxOutputFactory = getStaxOutputFactory().getName(); } catch (ClassNotFoundException e) { staxOutputFactory = e.getMessage(); System.out.println("java.vm.name: " + System.getProperty("java.vm.name")); System.out.println("Version: " + majorJavaVersion); 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: " + isSQLAvailable()); System.out.println("Standard StAX XMLInputFactory: " + staxInputFactory); System.out.println("Standard StAX XMLOutputFactory: " + staxOutputFactory); System.out.println("Optimized TreeSet.addAll: " + hasOptimizedTreeSetAddAll()); System.out.println("Optimized TreeMap.putAll: " + hasOptimizedTreeMapPutAll()); System.out.println("Can parse UTC date format: " + canParseUTCDateFormat()); System.out.println("Can create derive ObjectOutputStream: " + canCreateDerivedObjectOutputStream()); System.out.println("Reverse field order detected (only if JVM class itself has been compiled): " + reverse);
addImmutableType(boolean.class, false); addImmutableType(Boolean.class, false); addImmutableType(byte.class, false); addImmutableType(Byte.class, false); addImmutableType(char.class, false); addImmutableType(Class.class, false); if (JVM.isVersion(7)) { Class type = JVM.loadClassForName("java.nio.file.Paths"); if (type != null) { Method methodGet; if (JVM.isAWTAvailable()) { addImmutableTypeDynamically("java.awt.font.TextAttribute", false); if (JVM.isVersion(4)) { addImmutableTypeDynamically("java.nio.charset.Charset", true); if (JVM.isVersion(5)) { addImmutableTypeDynamically("java.util.UUID", true); addImmutableType(Collections.EMPTY_MAP.getClass(), true); if (JVM.isVersion(8)) { addImmutableTypeDynamically("java.time.Duration", false); addImmutableTypeDynamically("java.time.Instant", false);
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.vm.vendor: " + vendor); System.out.println("Version: " + majorJavaVersion); System.out.println("XStream support for enhanced Mode: " + (jvm.canUseSun14ReflectionProvider() || jvm.canUseHarmonyReflectionProvider())); System.out.println("Supports AWT: " + jvm.supportsAWT()); System.out.println("Supports Swing: " + jvm.supportsSwing()); System.out.println("Supports SQL: " + jvm.supportsSQL()); System.out.println("Optimized TreeSet.addAll: " + hasOptimizedTreeSetAddAll()); System.out.println("Optimized TreeMap.putAll: " + hasOptimizedTreeMapPutAll()); System.out.println("Can parse UTC date format: " + canParseUTCDateFormat()); System.out.println("Reverse field order detected (may have failed): " + reverse);
private void addImmutableTypeDynamically(String className, boolean isReferenceable) { Class type = JVM.loadClassForName(className); if (type != null) { addImmutableType(type, isReferenceable); } }
private void readObject(final ObjectInputStream in) throws IOException, ClassNotFoundException { in.defaultReadObject(); setupMappers(); int max = in.readInt(); arguments = new Object[max+2]; for (int i = 0; i < max; i++ ) { arguments[i] = in.readObject(); if (arguments[i] instanceof ClassLoaderReference) { arguments[max+1] = ((ClassLoaderReference)arguments[i]).getReference(); } } arguments[max] = new JVM(); }
addImmutableType(boolean.class); addImmutableType(Boolean.class); addImmutableType(byte.class); addImmutableType(Byte.class); addImmutableType(char.class); addImmutableType(Collections.EMPTY_MAP.getClass()); if (JVM.isAWTAvailable()) { addImmutableTypeDynamically("java.awt.font.TextAttribute"); if (JVM.is14()) { addImmutableTypeDynamically("java.nio.charset.Charset");
/** * Get the XMLOutputFactory implementation used normally by the current Java runtime as * standard. * <p> * In contrast to XMLOutputFactory.newFactory() this method will ignore any implementations * provided with the system property <em>javax.xml.stream.XMLOutputFactory</em>, * implementations configured in <em>lib/stax.properties</em> or registered with the Service * API. * </p> * * @return the XMLOutputFactory implementation or null * @throws ClassNotFoundException if the standard class cannot be found * @since 1.4.5 */ public static Class getStaxOutputFactory() throws ClassNotFoundException { if (isVersion(6)) { if (isIBM()) { return Class.forName("com.ibm.xml.xlxp.api.stax.XMLOutputFactoryImpl"); } else { return Class.forName("com.sun.xml.internal.stream.XMLOutputFactoryImpl"); } } return null; }
if (JVM.isSQLAvailable()) { registerConverter(new SqlTimestampConverter(), PRIORITY_NORMAL); registerConverter(new SqlTimeConverter(), PRIORITY_NORMAL); registerConverter(new JavaFieldConverter(classLoaderReference), PRIORITY_NORMAL); if (JVM.isAWTAvailable()) { registerConverter(new ColorConverter(), PRIORITY_NORMAL); if (JVM.isSwingAvailable()) { registerConverter( new LookAndFeelConverter(mapper, reflectionProvider), PRIORITY_NORMAL); if (JVM.loadClassForName("javax.xml.datatype.Duration") != null) { registerConverterDynamically( "com.thoughtworks.xstream.converters.extended.DurationConverter", null, null); if (JVM.loadClassForName("javax.activation.ActivationDataFlavor") != null) { registerConverterDynamically( "com.thoughtworks.xstream.converters.extended.ActivationDataFlavorConverter",