in xstream/src/java/com/thoughtworks/xstream/XStream.java [1088:1164]
protected void setupImmutableTypes() {
if (immutableTypesMapper == null) {
return;
}
// primitives are always immutable
addImmutableType(boolean.class, false);
addImmutableType(Boolean.class, false);
addImmutableType(byte.class, false);
addImmutableType(Byte.class, false);
addImmutableType(char.class, false);
addImmutableType(Character.class, false);
addImmutableType(double.class, false);
addImmutableType(Double.class, false);
addImmutableType(float.class, false);
addImmutableType(Float.class, false);
addImmutableType(int.class, false);
addImmutableType(Integer.class, false);
addImmutableType(long.class, false);
addImmutableType(Long.class, false);
addImmutableType(short.class, false);
addImmutableType(Short.class, false);
// additional types
addImmutableType(Mapper.Null.class, false);
addImmutableType(BigDecimal.class, false);
addImmutableType(BigInteger.class, false);
addImmutableType(String.class, false);
addImmutableType(URL.class, false);
addImmutableType(File.class, false);
addImmutableType(Class.class, false);
addImmutableType(Paths.get(".").getClass(), false);
if (JVM.isAWTAvailable()) {
addImmutableTypeDynamically("java.awt.font.TextAttribute", false);
}
addImmutableType(UUID.class, false);
addImmutableType(URI.class, false);
addImmutableType(Charset.class, false);
addImmutableType(Currency.class, false);
addImmutableType(Collections.EMPTY_LIST.getClass(), false);
addImmutableType(Collections.EMPTY_SET.getClass(), false);
addImmutableType(Collections.EMPTY_MAP.getClass(), false);
addImmutableType(Duration.class, false);
addImmutableType(Instant.class, false);
addImmutableType(LocalDate.class, false);
addImmutableType(LocalDateTime.class, false);
addImmutableType(LocalTime.class, false);
addImmutableType(MonthDay.class, false);
addImmutableType(OffsetDateTime.class, false);
addImmutableType(OffsetTime.class, false);
addImmutableType(Period.class, false);
addImmutableType(Year.class, false);
addImmutableType(YearMonth.class, false);
addImmutableType(ZonedDateTime.class, false);
addImmutableType(ZoneId.class, false);
addImmutableType(ZoneOffset.class, false);
addImmutableTypeDynamically("java.time.ZoneRegion", false);
addImmutableType(HijrahChronology.class, false);
addImmutableType(HijrahDate.class, false);
addImmutableType(IsoChronology.class, false);
addImmutableType(JapaneseChronology.class, false);
addImmutableType(JapaneseDate.class, false);
addImmutableType(JapaneseEra.class, false);
addImmutableType(MinguoChronology.class, false);
addImmutableType(MinguoDate.class, false);
addImmutableType(ThaiBuddhistChronology.class, false);
addImmutableType(ThaiBuddhistDate.class, false);
addImmutableTypeDynamically("java.time.temporal.IsoFields$Field", false);
addImmutableTypeDynamically("java.time.temporal.IsoFields$Unit", false);
addImmutableTypeDynamically("java.time.temporal.JulianFields$Field", false);
addImmutableType(OptionalDouble.class, false);
addImmutableType(OptionalInt.class, false);
addImmutableType(OptionalLong.class, false);
}