117 lines
4.4 KiB
Java
117 lines
4.4 KiB
Java
package com.thoughtworks.xstream.mapper;
|
|
|
|
import java.io.IOException;
|
|
import java.io.ObjectInputStream;
|
|
import java.io.ObjectOutputStream;
|
|
import java.io.Serializable;
|
|
import java.util.Comparator;
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
import java.util.TreeMap;
|
|
|
|
/* loaded from: classes.dex */
|
|
public class PackageAliasingMapper extends MapperWrapper implements Serializable {
|
|
private static final Comparator REVERSE = new Comparator() { // from class: com.thoughtworks.xstream.mapper.PackageAliasingMapper.1
|
|
@Override // java.util.Comparator
|
|
public int compare(Object obj, Object obj2) {
|
|
return ((String) obj2).compareTo((String) obj);
|
|
}
|
|
};
|
|
protected transient Map nameToPackage;
|
|
private Map packageToName;
|
|
|
|
public PackageAliasingMapper(Mapper mapper) {
|
|
super(mapper);
|
|
this.packageToName = new TreeMap(REVERSE);
|
|
this.nameToPackage = new HashMap();
|
|
}
|
|
|
|
private void readObject(ObjectInputStream objectInputStream) throws IOException, ClassNotFoundException {
|
|
this.packageToName = new TreeMap(REVERSE);
|
|
this.packageToName.putAll((Map) objectInputStream.readObject());
|
|
this.nameToPackage = new HashMap();
|
|
for (Object obj : this.packageToName.keySet()) {
|
|
this.nameToPackage.put(this.packageToName.get(obj), obj);
|
|
}
|
|
}
|
|
|
|
private void writeObject(ObjectOutputStream objectOutputStream) throws IOException {
|
|
objectOutputStream.writeObject(new HashMap(this.packageToName));
|
|
}
|
|
|
|
public void addPackageAlias(String str, String str2) {
|
|
if (str.length() > 0 && str.charAt(str.length() - 1) != '.') {
|
|
StringBuffer stringBuffer = new StringBuffer();
|
|
stringBuffer.append(str);
|
|
stringBuffer.append('.');
|
|
str = stringBuffer.toString();
|
|
}
|
|
if (str2.length() > 0 && str2.charAt(str2.length() - 1) != '.') {
|
|
StringBuffer stringBuffer2 = new StringBuffer();
|
|
stringBuffer2.append(str2);
|
|
stringBuffer2.append('.');
|
|
str2 = stringBuffer2.toString();
|
|
}
|
|
this.nameToPackage.put(str, str2);
|
|
this.packageToName.put(str2, str);
|
|
}
|
|
|
|
@Override // com.thoughtworks.xstream.mapper.MapperWrapper, com.thoughtworks.xstream.mapper.Mapper
|
|
public Class realClass(String str) {
|
|
String stringBuffer;
|
|
int length = str.length();
|
|
while (true) {
|
|
int lastIndexOf = str.lastIndexOf(46, length);
|
|
if (lastIndexOf < 0) {
|
|
stringBuffer = "";
|
|
} else {
|
|
StringBuffer stringBuffer2 = new StringBuffer();
|
|
stringBuffer2.append(str.substring(0, lastIndexOf));
|
|
stringBuffer2.append('.');
|
|
stringBuffer = stringBuffer2.toString();
|
|
}
|
|
String str2 = (String) this.nameToPackage.get(stringBuffer);
|
|
if (str2 != null) {
|
|
StringBuffer stringBuffer3 = new StringBuffer();
|
|
stringBuffer3.append(str2);
|
|
if (lastIndexOf >= 0) {
|
|
str = str.substring(lastIndexOf + 1);
|
|
}
|
|
stringBuffer3.append(str);
|
|
str = stringBuffer3.toString();
|
|
} else {
|
|
int i = lastIndexOf - 1;
|
|
if (lastIndexOf < 0) {
|
|
break;
|
|
}
|
|
length = i;
|
|
}
|
|
}
|
|
return super.realClass(str);
|
|
}
|
|
|
|
@Override // com.thoughtworks.xstream.mapper.MapperWrapper, com.thoughtworks.xstream.mapper.Mapper
|
|
public String serializedClass(Class cls) {
|
|
String name = cls.getName();
|
|
int length = name.length();
|
|
while (true) {
|
|
int lastIndexOf = name.lastIndexOf(46, length);
|
|
String str = (String) this.packageToName.get(lastIndexOf < 0 ? "" : name.substring(0, lastIndexOf + 1));
|
|
if (str != null) {
|
|
StringBuffer stringBuffer = new StringBuffer();
|
|
stringBuffer.append(str);
|
|
if (lastIndexOf >= 0) {
|
|
name = name.substring(lastIndexOf + 1);
|
|
}
|
|
stringBuffer.append(name);
|
|
return stringBuffer.toString();
|
|
}
|
|
int i = lastIndexOf - 1;
|
|
if (lastIndexOf < 0) {
|
|
return super.serializedClass(cls);
|
|
}
|
|
length = i;
|
|
}
|
|
}
|
|
}
|