Add support for remapping subpackages in package map
Change data structure to a linked hash map, preserving insertion order. This allows subpackages to be inserted into the package map for remapping, before their parent package. For example, A/B/C -> X and A/B -> Y. With the unordered HashMap data structure, this was not possible (reliably). With LinkedHashMap, now it is.
This commit is contained in:
parent
fc8bae3e04
commit
a430689c64
@ -33,7 +33,7 @@ import java.util.*;
|
||||
|
||||
public class JarMapping {
|
||||
|
||||
public final Map<String, String> packages = new HashMap<String, String>();
|
||||
public final LinkedHashMap<String, String> packages = new LinkedHashMap<String, String>();
|
||||
public final Map<String, String> classes = new HashMap<String, String>();
|
||||
public final Map<String, String> fields = new HashMap<String, String>();
|
||||
public final Map<String, String> methods = new HashMap<String, String>();
|
||||
|
@ -33,10 +33,7 @@ import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Enumeration;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
import java.util.jar.JarEntry;
|
||||
import java.util.jar.JarOutputStream;
|
||||
import org.objectweb.asm.ClassReader;
|
||||
@ -59,7 +56,7 @@ public class JarRemapper extends Remapper {
|
||||
return mapTypeName(typeName, jarMapping.packages, jarMapping.classes, typeName);
|
||||
}
|
||||
|
||||
public static String mapTypeName(String typeName, Map<String, String> packageMap, Map<String, String> classMap, String defaultIfUnmapped) {
|
||||
public static String mapTypeName(String typeName, LinkedHashMap<String, String> packageMap, Map<String, String> classMap, String defaultIfUnmapped) {
|
||||
int index = typeName.indexOf('$');
|
||||
String key = (index == -1) ? typeName : typeName.substring(0, index);
|
||||
String mapped = mapClassName(key, packageMap, classMap);
|
||||
@ -70,9 +67,11 @@ public class JarRemapper extends Remapper {
|
||||
/**
|
||||
* Helper method to map a class name by package (prefix) or class (exact)
|
||||
*/
|
||||
private static String mapClassName(String className, Map<String, String> packageMap, Map<String, String> classMap) {
|
||||
private static String mapClassName(String className, LinkedHashMap<String, String> packageMap, Map<String, String> classMap) {
|
||||
if (packageMap != null) {
|
||||
for (String oldPackage : packageMap.keySet()) {
|
||||
Iterator<String> iter = packageMap.keySet().iterator();
|
||||
while (iter.hasNext()) {
|
||||
String oldPackage = iter.next();
|
||||
if (className.startsWith(oldPackage)) {
|
||||
String newPackage = packageMap.get(oldPackage);
|
||||
|
||||
|
@ -28,13 +28,14 @@
|
||||
*/
|
||||
package net.md_5.specialsource;
|
||||
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class MethodDescriptorTransformer {
|
||||
private Map<String, String> packageMap;
|
||||
private LinkedHashMap<String, String> packageMap;
|
||||
private Map<String, String> classMap;
|
||||
|
||||
public MethodDescriptorTransformer(Map<String, String> packageMap, Map<String, String> classMap) {
|
||||
public MethodDescriptorTransformer(LinkedHashMap<String, String> packageMap, Map<String, String> classMap) {
|
||||
this.packageMap = packageMap;
|
||||
this.classMap = classMap;
|
||||
}
|
||||
|
@ -29,6 +29,7 @@
|
||||
package net.md_5.specialsource;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@ -38,7 +39,7 @@ import java.util.Map;
|
||||
*/
|
||||
public class ShadeRelocationSimulator {
|
||||
|
||||
public Map<String, String> relocations = new HashMap<String, String>();
|
||||
public LinkedHashMap<String, String> relocations = new LinkedHashMap<String, String>();
|
||||
// No relocations
|
||||
public static final ShadeRelocationSimulator IDENTITY = new ShadeRelocationSimulator();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user