127 lines
5.5 KiB
Java
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;
|
|
}
|
|
}
|