in xstream/src/java/com/thoughtworks/xstream/mapper/MapperWrapper.java [43:117]
public MapperWrapper(final Mapper wrapped) {
this.wrapped = wrapped;
if (wrapped instanceof MapperWrapper) {
final MapperWrapper wrapper = (MapperWrapper)wrapped;
final Map<String, Mapper> wrapperMap = new HashMap<>();
wrapperMap.put("aliasForAttribute", wrapper.aliasForAttributeMapper);
wrapperMap.put("aliasForSystemAttribute", wrapper.aliasForSystemAttributeMapper);
wrapperMap.put("attributeForAlias", wrapper.attributeForAliasMapper);
wrapperMap.put("defaultImplementationOf", wrapper.defaultImplementationOfMapper);
wrapperMap.put("getConverterFromAttribute", wrapper.getConverterFromAttributeMapper);
wrapperMap.put("getConverterFromItemType", wrapper.getConverterFromItemTypeMapper);
wrapperMap.put("getFieldNameForItemTypeAndName", wrapper.getFieldNameForItemTypeAndNameMapper);
wrapperMap.put("getImplicitCollectionDefForFieldName", wrapper.getImplicitCollectionDefForFieldNameMapper);
wrapperMap.put("getItemTypeForItemFieldName", wrapper.getItemTypeForItemFieldNameMapper);
wrapperMap.put("getLocalConverter", wrapper.getLocalConverterMapper);
wrapperMap.put("isIgnoredElement", wrapper.isIgnoredElementMapper);
wrapperMap.put("isImmutableValueType", wrapper.isImmutableValueTypeMapper);
wrapperMap.put("isReferenceable", wrapper.isReferenceableMapper);
wrapperMap.put("realClass", wrapper.realClassMapper);
wrapperMap.put("realMember", wrapper.realMemberMapper);
wrapperMap.put("serializedClass", wrapper.serializedClassMapper);
wrapperMap.put("serializedMember", wrapper.serializedMemberMapper);
wrapperMap.put("shouldSerializeMember", wrapper.shouldSerializeMemberMapper);
final Method[] methods = wrapped.getClass().getMethods();
for (final Method method : methods) {
if (method.getDeclaringClass() != MapperWrapper.class) {
final String name = method.getName();
if (wrapperMap.containsKey(name)) {
wrapperMap.put(name, wrapped);
}
}
}
aliasForAttributeMapper = wrapperMap.get("aliasForAttribute");
aliasForSystemAttributeMapper = wrapperMap.get("aliasForSystemAttribute");
attributeForAliasMapper = wrapperMap.get("attributeForAlias");
defaultImplementationOfMapper = wrapperMap.get("defaultImplementationOf");
getConverterFromAttributeMapper = wrapperMap.get("getConverterFromAttribute");
getConverterFromItemTypeMapper = wrapperMap.get("getConverterFromItemType");
getFieldNameForItemTypeAndNameMapper = wrapperMap.get("getFieldNameForItemTypeAndName");
getImplicitCollectionDefForFieldNameMapper = wrapperMap.get("getImplicitCollectionDefForFieldName");
getItemTypeForItemFieldNameMapper = wrapperMap.get("getItemTypeForItemFieldName");
getLocalConverterMapper = wrapperMap.get("getLocalConverter");
isIgnoredElementMapper = wrapperMap.get("isIgnoredElement");
isImmutableValueTypeMapper = wrapperMap.get("isImmutableValueType");
isReferenceableMapper = wrapperMap.get("isReferenceable");
realClassMapper = wrapperMap.get("realClass");
realMemberMapper = wrapperMap.get("realMember");
serializedClassMapper = wrapperMap.get("serializedClass");
serializedMemberMapper = wrapperMap.get("serializedMember");
shouldSerializeMemberMapper = wrapperMap.get("shouldSerializeMember");
} else {
aliasForAttributeMapper = wrapped;
aliasForSystemAttributeMapper = wrapped;
attributeForAliasMapper = wrapped;
defaultImplementationOfMapper = wrapped;
getConverterFromAttributeMapper = wrapped;
getConverterFromItemTypeMapper = wrapped;
getFieldNameForItemTypeAndNameMapper = wrapped;
getImplicitCollectionDefForFieldNameMapper = wrapped;
getItemTypeForItemFieldNameMapper = wrapped;
getLocalConverterMapper = wrapped;
isIgnoredElementMapper = wrapped;
isImmutableValueTypeMapper = wrapped;
isReferenceableMapper = wrapped;
realClassMapper = wrapped;
realMemberMapper = wrapped;
serializedClassMapper = wrapped;
serializedMemberMapper = wrapped;
shouldSerializeMemberMapper = wrapped;
}
}