in xstream/src/java/com/thoughtworks/xstream/XStream.java [714:776]
protected void setupSecurity() {
if (securityMapper == null) {
return;
}
addPermission(NullPermission.NULL);
addPermission(PrimitiveTypePermission.PRIMITIVES);
addPermission(ArrayTypePermission.ARRAYS);
addPermission(InterfaceTypePermission.INTERFACES);
allowTypeHierarchy(Calendar.class);
allowTypeHierarchy(Collection.class);
allowTypeHierarchy(Enum.class);
allowTypeHierarchy(Map.class);
allowTypeHierarchy(Map.Entry.class);
allowTypeHierarchy(Member.class);
allowTypeHierarchy(Number.class);
allowTypeHierarchy(Throwable.class);
allowTypeHierarchy(TimeZone.class);
allowTypeHierarchy(Path.class);
final Set<Class<?>> types = new HashSet<>();
types.addAll(Arrays.<Class<?>>asList(AtomicBoolean.class, AtomicInteger.class, AtomicLong.class,
AtomicReference.class, BitSet.class, Charset.class, Class.class, Currency.class, Date.class,
DecimalFormatSymbols.class, File.class, Locale.class, Object.class, Pattern.class, StackTraceElement.class,
String.class, StringBuffer.class, StringBuilder.class, URL.class, URI.class, UUID.class));
if (JVM.isSQLAvailable()) {
types.add(JVM.loadClassForName("java.sql.Timestamp"));
types.add(JVM.loadClassForName("java.sql.Time"));
types.add(JVM.loadClassForName("java.sql.Date"));
}
allowTypeHierarchy(Clock.class);
types.add(Duration.class);
types.add(Instant.class);
types.add(LocalDate.class);
types.add(LocalDateTime.class);
types.add(LocalTime.class);
types.add(MonthDay.class);
types.add(OffsetDateTime.class);
types.add(OffsetTime.class);
types.add(Period.class);
types.add(JVM.loadClassForName("java.time.Ser"));
types.add(Year.class);
types.add(YearMonth.class);
types.add(ZonedDateTime.class);
allowTypeHierarchy(ZoneId.class);
types.add(HijrahDate.class);
types.add(JapaneseDate.class);
types.add(JapaneseEra.class);
types.add(MinguoDate.class);
types.add(ThaiBuddhistDate.class);
types.add(JVM.loadClassForName("java.time.chrono.Ser"));
allowTypeHierarchy(Chronology.class);
types.add(ValueRange.class);
types.add(WeekFields.class);
types.add(Optional.class);
types.add(OptionalDouble.class);
types.add(OptionalInt.class);
types.add(OptionalLong.class);
types.remove(null);
allowTypes(types.toArray(new Class[types.size()]));
}