jimu-decompiled/sources/com/thoughtworks/xstream/mapper/AttributeMapper.java
2025-05-13 19:24:51 +02:00

118 lines
4.9 KiB
Java

package com.thoughtworks.xstream.mapper;
import com.thoughtworks.xstream.converters.Converter;
import com.thoughtworks.xstream.converters.ConverterLookup;
import com.thoughtworks.xstream.converters.SingleValueConverter;
import com.thoughtworks.xstream.converters.reflection.ReflectionProvider;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
/* loaded from: classes.dex */
public class AttributeMapper extends MapperWrapper {
private ConverterLookup converterLookup;
private final Map fieldNameToTypeMap;
private final Set fieldToUseAsAttribute;
private ReflectionProvider reflectionProvider;
private final Set typeSet;
public AttributeMapper(Mapper mapper) {
this(mapper, null, null);
}
private SingleValueConverter getLocalConverterFromItemType(Class cls) {
Converter lookupConverterForType = this.converterLookup.lookupConverterForType(cls);
if (lookupConverterForType == null || !(lookupConverterForType instanceof SingleValueConverter)) {
return null;
}
return (SingleValueConverter) lookupConverterForType;
}
public void addAttributeFor(String str, Class cls) {
this.fieldNameToTypeMap.put(str, cls);
}
@Override // com.thoughtworks.xstream.mapper.MapperWrapper, com.thoughtworks.xstream.mapper.Mapper
public SingleValueConverter getConverterFromAttribute(String str) {
Class cls = (Class) this.fieldNameToTypeMap.get(str);
if (cls != null) {
return getLocalConverterFromItemType(cls);
}
return null;
}
@Override // com.thoughtworks.xstream.mapper.MapperWrapper, com.thoughtworks.xstream.mapper.Mapper
public SingleValueConverter getConverterFromItemType(String str, Class cls) {
if (this.fieldNameToTypeMap.get(str) == cls) {
return getLocalConverterFromItemType(cls);
}
return null;
}
public void setConverterLookup(ConverterLookup converterLookup) {
this.converterLookup = converterLookup;
}
public boolean shouldLookForSingleValueConverter(String str, Class cls, Class cls2) {
Field fieldOrNull;
if (this.typeSet.contains(cls) || this.fieldNameToTypeMap.get(str) == cls) {
return true;
}
return (str == null || cls2 == null || (fieldOrNull = this.reflectionProvider.getFieldOrNull(cls2, str)) == null || !this.fieldToUseAsAttribute.contains(fieldOrNull)) ? false : true;
}
public AttributeMapper(Mapper mapper, ConverterLookup converterLookup, ReflectionProvider reflectionProvider) {
super(mapper);
this.fieldNameToTypeMap = new HashMap();
this.typeSet = new HashSet();
this.fieldToUseAsAttribute = new HashSet();
this.converterLookup = converterLookup;
this.reflectionProvider = reflectionProvider;
}
public void addAttributeFor(Class cls) {
this.typeSet.add(cls);
}
public void addAttributeFor(Field field) {
if (field != null) {
this.fieldToUseAsAttribute.add(field);
}
}
@Override // com.thoughtworks.xstream.mapper.MapperWrapper, com.thoughtworks.xstream.mapper.Mapper
public SingleValueConverter getConverterFromAttribute(Class cls, String str) {
Field fieldOrNull = this.reflectionProvider.getFieldOrNull(cls, str);
if (fieldOrNull != null) {
return getConverterFromAttribute(cls, str, fieldOrNull.getType());
}
return null;
}
@Override // com.thoughtworks.xstream.mapper.MapperWrapper, com.thoughtworks.xstream.mapper.Mapper
public SingleValueConverter getConverterFromItemType(String str, Class cls, Class cls2) {
SingleValueConverter localConverterFromItemType;
return (!shouldLookForSingleValueConverter(str, cls, cls2) || (localConverterFromItemType = getLocalConverterFromItemType(cls)) == null) ? super.getConverterFromItemType(str, cls, cls2) : localConverterFromItemType;
}
public void addAttributeFor(Class cls, String str) {
addAttributeFor(this.reflectionProvider.getField(cls, str));
}
@Override // com.thoughtworks.xstream.mapper.MapperWrapper, com.thoughtworks.xstream.mapper.Mapper
public SingleValueConverter getConverterFromAttribute(Class cls, String str, Class cls2) {
SingleValueConverter localConverterFromItemType;
return (!shouldLookForSingleValueConverter(str, cls2, cls) || (localConverterFromItemType = getLocalConverterFromItemType(cls2)) == null) ? super.getConverterFromAttribute(cls, str, cls2) : localConverterFromItemType;
}
@Override // com.thoughtworks.xstream.mapper.MapperWrapper, com.thoughtworks.xstream.mapper.Mapper
public SingleValueConverter getConverterFromItemType(Class cls) {
if (this.typeSet.contains(cls)) {
return getLocalConverterFromItemType(cls);
}
return null;
}
}