Add support for remapping class name prefixes
Adds support for interpreting "CL: xxx/* yyy/*" in .srg for remapping all class names beginning with xxx/ to yyy/. Previously this functionality was only programmatically accessible when SpecialSource was used as a library, but now you can use it from .srg mappings as well. May be replaced with "PK: xxx yyy" support in .srg files later, but needs to be first thoroughly tested for full compatibility, to ensure identical semantics as in MCP (e.g. remapping "."). Adding CL: /* class name prefix remapping for now, separate from PK:, which simply remaps class names matching the given prefix substring.
This commit is contained in:
parent
0cf7f47ce7
commit
78494b5ff1
@ -309,21 +309,29 @@ public class JarMapping {
|
|||||||
+ " but already mapped to " + classes.get(oldClassName) + " in line=" + line);
|
+ " but already mapped to " + classes.get(oldClassName) + " in line=" + line);
|
||||||
}
|
}
|
||||||
|
|
||||||
classes.put(oldClassName, newClassName);
|
if (oldClassName.endsWith("/*") && newClassName.endsWith("/*")) {
|
||||||
|
// extension for remapping class name prefixes
|
||||||
|
oldClassName = oldClassName.substring(0, oldClassName.length() - 1);
|
||||||
|
newClassName = newClassName.substring(0, newClassName.length() - 1);
|
||||||
|
|
||||||
|
packages.put(oldClassName, newClassName);
|
||||||
|
} else {
|
||||||
|
classes.put(oldClassName, newClassName);
|
||||||
|
}
|
||||||
} else if (kind.equals("PK:")) {
|
} else if (kind.equals("PK:")) {
|
||||||
/* TODO: support .srg's package maps
|
/* TODO: support .srg's package maps properly - not simply prefix matches(?)
|
||||||
String oldPackageName = inputTransformer.transformClassName(tokens[1]);
|
String oldPackageName = inputTransformer.transformClassName(tokens[1]);
|
||||||
String newPackageName = outputTransformer.transformClassName(tokens[2]);
|
String newPackageName = outputTransformer.transformClassName(tokens[2]);
|
||||||
|
|
||||||
if (reverse) {
|
if (reverse) {
|
||||||
String temp = newPackageName;
|
String temp = newPackageName;
|
||||||
newPackageName = oldPackageName;
|
newPackageName = oldPackageName;
|
||||||
oldPackageName = temp;
|
oldPackageName = temp;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (packages.containsKey(oldPackageName) && !newPackageName.equals(packages.get(oldPackageName))) {
|
if (packages.containsKey(oldPackageName) && !newPackageName.equals(packages.get(oldPackageName))) {
|
||||||
throw new IllegalArgumentException("Duplicate package mapping: " + oldPackageName + " ->" + newPackageName +
|
throw new IllegalArgumentException("Duplicate package mapping: " + oldPackageName + " ->" + newPackageName +
|
||||||
" but already mapped to "+packages.get(oldPackageName)+" in line="+line);
|
" but already mapped to "+packages.get(oldPackageName)+" in line="+line);
|
||||||
}
|
}
|
||||||
|
|
||||||
packages.put(oldPackageName, newPackageName);
|
packages.put(oldPackageName, newPackageName);
|
||||||
|
Loading…
Reference in New Issue
Block a user