protected void setupImmutableTypes()

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);
    }