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

349 lines
16 KiB
Java

package com.thoughtworks.xstream.mapper;
import com.thoughtworks.xstream.InitializationException;
import com.thoughtworks.xstream.converters.reflection.ReflectionProvider;
import com.thoughtworks.xstream.core.util.Primitives;
import com.thoughtworks.xstream.mapper.Mapper;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
/* loaded from: classes.dex */
public class ImplicitCollectionMapper extends MapperWrapper {
static /* synthetic */ Class class$com$thoughtworks$xstream$mapper$Mapper$Null;
static /* synthetic */ Class class$java$lang$Object;
static /* synthetic */ Class class$java$util$Collection;
static /* synthetic */ Class class$java$util$Map;
static /* synthetic */ Class class$java$util$Map$Entry;
private final Map classNameToMapper;
private ReflectionProvider reflectionProvider;
private class ImplicitCollectionMapperForClass {
private Class definedIn;
private Map namedItemTypeToDef = new HashMap();
private Map itemFieldNameToDef = new HashMap();
private Map fieldNameToDef = new HashMap();
ImplicitCollectionMapperForClass(Class cls) {
this.definedIn = cls;
}
private ImplicitCollectionMappingImpl getImplicitCollectionDefByItemFieldName(String str) {
if (str == null) {
return null;
}
ImplicitCollectionMappingImpl implicitCollectionMappingImpl = (ImplicitCollectionMappingImpl) this.itemFieldNameToDef.get(str);
if (implicitCollectionMappingImpl != null) {
return implicitCollectionMappingImpl;
}
ImplicitCollectionMapperForClass mapper = ImplicitCollectionMapper.this.getMapper(this.definedIn.getSuperclass(), null);
if (mapper != null) {
return mapper.getImplicitCollectionDefByItemFieldName(str);
}
return null;
}
public void add(ImplicitCollectionMappingImpl implicitCollectionMappingImpl) {
this.fieldNameToDef.put(implicitCollectionMappingImpl.getFieldName(), implicitCollectionMappingImpl);
this.namedItemTypeToDef.put(implicitCollectionMappingImpl.createNamedItemType(), implicitCollectionMappingImpl);
if (implicitCollectionMappingImpl.getItemFieldName() != null) {
this.itemFieldNameToDef.put(implicitCollectionMappingImpl.getItemFieldName(), implicitCollectionMappingImpl);
}
}
public String getFieldNameForItemTypeAndName(Class cls, String str) {
Iterator it = this.namedItemTypeToDef.keySet().iterator();
ImplicitCollectionMappingImpl implicitCollectionMappingImpl = null;
while (true) {
if (!it.hasNext()) {
break;
}
NamedItemType namedItemType = (NamedItemType) it.next();
ImplicitCollectionMappingImpl implicitCollectionMappingImpl2 = (ImplicitCollectionMappingImpl) this.namedItemTypeToDef.get(namedItemType);
Class cls2 = ImplicitCollectionMapper.class$com$thoughtworks$xstream$mapper$Mapper$Null;
if (cls2 == null) {
cls2 = ImplicitCollectionMapper.class$("com.thoughtworks.xstream.mapper.Mapper$Null");
ImplicitCollectionMapper.class$com$thoughtworks$xstream$mapper$Mapper$Null = cls2;
}
if (cls == cls2) {
implicitCollectionMappingImpl = implicitCollectionMappingImpl2;
break;
}
if (namedItemType.itemType.isAssignableFrom(cls)) {
if (implicitCollectionMappingImpl2.getItemFieldName() != null) {
if (implicitCollectionMappingImpl2.getItemFieldName().equals(str)) {
return implicitCollectionMappingImpl2.getFieldName();
}
} else if (implicitCollectionMappingImpl == null || implicitCollectionMappingImpl.getItemType() == null || (implicitCollectionMappingImpl2.getItemType() != null && implicitCollectionMappingImpl.getItemType().isAssignableFrom(implicitCollectionMappingImpl2.getItemType()))) {
implicitCollectionMappingImpl = implicitCollectionMappingImpl2;
}
}
}
if (implicitCollectionMappingImpl != null) {
return implicitCollectionMappingImpl.getFieldName();
}
ImplicitCollectionMapperForClass mapper = ImplicitCollectionMapper.this.getMapper(this.definedIn.getSuperclass(), null);
if (mapper != null) {
return mapper.getFieldNameForItemTypeAndName(cls, str);
}
return null;
}
public Mapper.ImplicitCollectionMapping getImplicitCollectionDefForFieldName(String str) {
Mapper.ImplicitCollectionMapping implicitCollectionMapping = (Mapper.ImplicitCollectionMapping) this.fieldNameToDef.get(str);
if (implicitCollectionMapping != null) {
return implicitCollectionMapping;
}
ImplicitCollectionMapperForClass mapper = ImplicitCollectionMapper.this.getMapper(this.definedIn.getSuperclass(), null);
if (mapper != null) {
return mapper.getImplicitCollectionDefForFieldName(str);
}
return null;
}
public Class getItemTypeForItemFieldName(String str) {
ImplicitCollectionMappingImpl implicitCollectionDefByItemFieldName = getImplicitCollectionDefByItemFieldName(str);
if (implicitCollectionDefByItemFieldName != null) {
return implicitCollectionDefByItemFieldName.getItemType();
}
ImplicitCollectionMapperForClass mapper = ImplicitCollectionMapper.this.getMapper(this.definedIn.getSuperclass(), null);
if (mapper != null) {
return mapper.getItemTypeForItemFieldName(str);
}
return null;
}
}
private static class ImplicitCollectionMappingImpl implements Mapper.ImplicitCollectionMapping {
private final String fieldName;
private final String itemFieldName;
private final Class itemType;
private final String keyFieldName;
ImplicitCollectionMappingImpl(String str, Class cls, String str2, String str3) {
this.fieldName = str;
this.itemFieldName = str2;
this.itemType = cls;
this.keyFieldName = str3;
}
public NamedItemType createNamedItemType() {
return new NamedItemType(this.itemType, this.itemFieldName);
}
@Override // com.thoughtworks.xstream.mapper.Mapper.ImplicitCollectionMapping
public String getFieldName() {
return this.fieldName;
}
@Override // com.thoughtworks.xstream.mapper.Mapper.ImplicitCollectionMapping
public String getItemFieldName() {
return this.itemFieldName;
}
@Override // com.thoughtworks.xstream.mapper.Mapper.ImplicitCollectionMapping
public Class getItemType() {
return this.itemType;
}
@Override // com.thoughtworks.xstream.mapper.Mapper.ImplicitCollectionMapping
public String getKeyFieldName() {
return this.keyFieldName;
}
}
private static class NamedItemType {
String itemFieldName;
Class itemType;
NamedItemType(Class cls, String str) {
if (cls == null && (cls = ImplicitCollectionMapper.class$java$lang$Object) == null) {
cls = ImplicitCollectionMapper.class$("java.lang.Object");
ImplicitCollectionMapper.class$java$lang$Object = cls;
}
this.itemType = cls;
this.itemFieldName = str;
}
private static boolean isEquals(Object obj, Object obj2) {
return obj == null ? obj2 == null : obj.equals(obj2);
}
public boolean equals(Object obj) {
if (!(obj instanceof NamedItemType)) {
return false;
}
NamedItemType namedItemType = (NamedItemType) obj;
return this.itemType.equals(namedItemType.itemType) && isEquals(this.itemFieldName, namedItemType.itemFieldName);
}
public int hashCode() {
int hashCode = this.itemType.hashCode() << 7;
String str = this.itemFieldName;
return str != null ? hashCode + str.hashCode() : hashCode;
}
}
public ImplicitCollectionMapper(Mapper mapper, ReflectionProvider reflectionProvider) {
super(mapper);
this.classNameToMapper = new HashMap();
this.reflectionProvider = reflectionProvider;
}
static /* synthetic */ Class class$(String str) {
try {
return Class.forName(str);
} catch (ClassNotFoundException e) {
throw new NoClassDefFoundError().initCause(e);
}
}
/* JADX INFO: Access modifiers changed from: private */
public ImplicitCollectionMapperForClass getMapper(Class cls, String str) {
Field fieldOrNull = str != null ? this.reflectionProvider.getFieldOrNull(cls, str) : null;
Class<?> declaringClass = fieldOrNull != null ? fieldOrNull.getDeclaringClass() : null;
while (cls != null) {
ImplicitCollectionMapperForClass implicitCollectionMapperForClass = (ImplicitCollectionMapperForClass) this.classNameToMapper.get(cls);
if (implicitCollectionMapperForClass != null) {
return implicitCollectionMapperForClass;
}
if (cls == declaringClass) {
break;
}
cls = cls.getSuperclass();
}
return null;
}
private ImplicitCollectionMapperForClass getOrCreateMapper(Class cls) {
ImplicitCollectionMapperForClass implicitCollectionMapperForClass = (ImplicitCollectionMapperForClass) this.classNameToMapper.get(cls);
if (implicitCollectionMapperForClass != null) {
return implicitCollectionMapperForClass;
}
ImplicitCollectionMapperForClass implicitCollectionMapperForClass2 = new ImplicitCollectionMapperForClass(cls);
this.classNameToMapper.put(cls, implicitCollectionMapperForClass2);
return implicitCollectionMapperForClass2;
}
public void add(Class cls, String str, Class cls2) {
add(cls, str, null, cls2);
}
@Override // com.thoughtworks.xstream.mapper.MapperWrapper, com.thoughtworks.xstream.mapper.Mapper
public String getFieldNameForItemTypeAndName(Class cls, Class cls2, String str) {
ImplicitCollectionMapperForClass mapper = getMapper(cls, null);
if (mapper != null) {
return mapper.getFieldNameForItemTypeAndName(cls2, str);
}
return null;
}
@Override // com.thoughtworks.xstream.mapper.MapperWrapper, com.thoughtworks.xstream.mapper.Mapper
public Mapper.ImplicitCollectionMapping getImplicitCollectionDefForFieldName(Class cls, String str) {
ImplicitCollectionMapperForClass mapper = getMapper(cls, str);
if (mapper != null) {
return mapper.getImplicitCollectionDefForFieldName(str);
}
return null;
}
@Override // com.thoughtworks.xstream.mapper.MapperWrapper, com.thoughtworks.xstream.mapper.Mapper
public Class getItemTypeForItemFieldName(Class cls, String str) {
ImplicitCollectionMapperForClass mapper = getMapper(cls, null);
if (mapper != null) {
return mapper.getItemTypeForItemFieldName(str);
}
return null;
}
public void add(Class cls, String str, String str2, Class cls2) {
add(cls, str, str2, cls2, null);
}
public void add(Class cls, String str, String str2, Class cls2, String str3) {
Field field;
if (cls != null) {
Class cls3 = cls;
loop0: do {
field = null;
while (true) {
Class cls4 = class$java$lang$Object;
if (cls4 == null) {
cls4 = class$("java.lang.Object");
class$java$lang$Object = cls4;
}
if (cls3 == cls4) {
break loop0;
}
try {
field = cls3.getDeclaredField(str);
break;
} catch (NoSuchFieldException unused) {
cls3 = cls3.getSuperclass();
} catch (SecurityException e) {
throw new InitializationException("Access denied for field with implicit collection", e);
}
}
} while (Modifier.isStatic(field.getModifiers()));
} else {
field = null;
}
if (field != null) {
Class cls5 = class$java$util$Map;
if (cls5 == null) {
cls5 = class$("java.util.Map");
class$java$util$Map = cls5;
}
if (!cls5.isAssignableFrom(field.getType())) {
Class cls6 = class$java$util$Collection;
if (cls6 == null) {
cls6 = class$("java.util.Collection");
class$java$util$Collection = cls6;
}
if (!cls6.isAssignableFrom(field.getType())) {
Class<?> type = field.getType();
if (type.isArray()) {
Class componentType = type.getComponentType();
if (componentType.isPrimitive()) {
componentType = Primitives.box(componentType);
}
if (cls2 == null) {
cls2 = componentType;
} else {
if (cls2.isPrimitive()) {
cls2 = Primitives.box(cls2);
}
if (!componentType.isAssignableFrom(cls2)) {
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append("Field \"");
stringBuffer.append(str);
stringBuffer.append("\" declares an array, but the array type is not compatible with ");
stringBuffer.append(cls2.getName());
throw new InitializationException(stringBuffer.toString());
}
}
} else {
StringBuffer stringBuffer2 = new StringBuffer();
stringBuffer2.append("Field \"");
stringBuffer2.append(str);
stringBuffer2.append("\" declares no collection or array");
throw new InitializationException(stringBuffer2.toString());
}
}
} else if (str2 == null && str3 == null && (cls2 = class$java$util$Map$Entry) == null) {
cls2 = class$("java.util.Map$Entry");
class$java$util$Map$Entry = cls2;
}
getOrCreateMapper(cls).add(new ImplicitCollectionMappingImpl(str, cls2, str2, str3));
return;
}
StringBuffer stringBuffer3 = new StringBuffer();
stringBuffer3.append("No field \"");
stringBuffer3.append(str);
stringBuffer3.append("\" for implicit collection");
throw new InitializationException(stringBuffer3.toString());
}
}