Initial commit
This commit is contained in:
@@ -0,0 +1,116 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user