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

127 lines
5.5 KiB
Java

package com.thoughtworks.xstream.converters.extended;
import com.thoughtworks.xstream.converters.ConversionException;
import com.thoughtworks.xstream.converters.Converter;
import com.thoughtworks.xstream.converters.MarshallingContext;
import com.thoughtworks.xstream.converters.SingleValueConverter;
import com.thoughtworks.xstream.converters.UnmarshallingContext;
import com.thoughtworks.xstream.core.ClassLoaderReference;
import com.thoughtworks.xstream.io.HierarchicalStreamReader;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
import com.unity3d.ads.metadata.MediationMetaData;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.ArrayList;
/* loaded from: classes.dex */
public class JavaMethodConverter implements Converter {
static /* synthetic */ Class class$java$lang$reflect$Constructor;
static /* synthetic */ Class class$java$lang$reflect$Method;
private final SingleValueConverter javaClassConverter;
public JavaMethodConverter(ClassLoaderReference classLoaderReference) {
this(new JavaClassConverter(classLoaderReference));
}
static /* synthetic */ Class class$(String str) {
try {
return Class.forName(str);
} catch (ClassNotFoundException e) {
throw new NoClassDefFoundError().initCause(e);
}
}
private void marshalMethod(HierarchicalStreamWriter hierarchicalStreamWriter, String str, String str2, Class[] clsArr) {
hierarchicalStreamWriter.startNode("class");
hierarchicalStreamWriter.setValue(str);
hierarchicalStreamWriter.endNode();
if (str2 != null) {
hierarchicalStreamWriter.startNode(MediationMetaData.KEY_NAME);
hierarchicalStreamWriter.setValue(str2);
hierarchicalStreamWriter.endNode();
}
hierarchicalStreamWriter.startNode("parameter-types");
for (Class cls : clsArr) {
hierarchicalStreamWriter.startNode("class");
hierarchicalStreamWriter.setValue(this.javaClassConverter.toString(cls));
hierarchicalStreamWriter.endNode();
}
hierarchicalStreamWriter.endNode();
}
@Override // com.thoughtworks.xstream.converters.ConverterMatcher
public boolean canConvert(Class cls) {
Class cls2 = class$java$lang$reflect$Method;
if (cls2 == null) {
cls2 = class$("java.lang.reflect.Method");
class$java$lang$reflect$Method = cls2;
}
if (cls != cls2) {
Class cls3 = class$java$lang$reflect$Constructor;
if (cls3 == null) {
cls3 = class$("java.lang.reflect.Constructor");
class$java$lang$reflect$Constructor = cls3;
}
if (cls != cls3) {
return false;
}
}
return true;
}
@Override // com.thoughtworks.xstream.converters.Converter
public void marshal(Object obj, HierarchicalStreamWriter hierarchicalStreamWriter, MarshallingContext marshallingContext) {
if (obj instanceof Method) {
Method method = (Method) obj;
marshalMethod(hierarchicalStreamWriter, this.javaClassConverter.toString(method.getDeclaringClass()), method.getName(), method.getParameterTypes());
} else {
Constructor constructor = (Constructor) obj;
marshalMethod(hierarchicalStreamWriter, this.javaClassConverter.toString(constructor.getDeclaringClass()), null, constructor.getParameterTypes());
}
}
@Override // com.thoughtworks.xstream.converters.Converter
public Object unmarshal(HierarchicalStreamReader hierarchicalStreamReader, UnmarshallingContext unmarshallingContext) {
Class cls;
try {
Class requiredType = unmarshallingContext.getRequiredType();
if (class$java$lang$reflect$Method == null) {
cls = class$("java.lang.reflect.Method");
class$java$lang$reflect$Method = cls;
} else {
cls = class$java$lang$reflect$Method;
}
boolean equals = requiredType.equals(cls);
hierarchicalStreamReader.moveDown();
Class cls2 = (Class) this.javaClassConverter.fromString(hierarchicalStreamReader.getValue());
hierarchicalStreamReader.moveUp();
String str = null;
if (equals) {
hierarchicalStreamReader.moveDown();
str = hierarchicalStreamReader.getValue();
hierarchicalStreamReader.moveUp();
}
hierarchicalStreamReader.moveDown();
ArrayList arrayList = new ArrayList();
while (hierarchicalStreamReader.hasMoreChildren()) {
hierarchicalStreamReader.moveDown();
arrayList.add(this.javaClassConverter.fromString(hierarchicalStreamReader.getValue()));
hierarchicalStreamReader.moveUp();
}
Class<?>[] clsArr = (Class[]) arrayList.toArray(new Class[arrayList.size()]);
hierarchicalStreamReader.moveUp();
return equals ? cls2.getDeclaredMethod(str, clsArr) : cls2.getDeclaredConstructor(clsArr);
} catch (NoSuchMethodException e) {
throw new ConversionException(e);
}
}
public JavaMethodConverter(ClassLoader classLoader) {
this(new ClassLoaderReference(classLoader));
}
protected JavaMethodConverter(SingleValueConverter singleValueConverter) {
this.javaClassConverter = singleValueConverter;
}
}