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);
|
||||
}
|
||||
|
||||
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:")) {
|
||||
/* TODO: support .srg's package maps
|
||||
/* TODO: support .srg's package maps properly - not simply prefix matches(?)
|
||||
String oldPackageName = inputTransformer.transformClassName(tokens[1]);
|
||||
String newPackageName = outputTransformer.transformClassName(tokens[2]);
|
||||
|
||||
if (reverse) {
|
||||
String temp = newPackageName;
|
||||
newPackageName = oldPackageName;
|
||||
oldPackageName = temp;
|
||||
String temp = newPackageName;
|
||||
newPackageName = oldPackageName;
|
||||
oldPackageName = temp;
|
||||
}
|
||||
|
||||
if (packages.containsKey(oldPackageName) && !newPackageName.equals(packages.get(oldPackageName))) {
|
||||
throw new IllegalArgumentException("Duplicate package mapping: " + oldPackageName + " ->" + newPackageName +
|
||||
" but already mapped to "+packages.get(oldPackageName)+" in line="+line);
|
||||
throw new IllegalArgumentException("Duplicate package mapping: " + oldPackageName + " ->" + newPackageName +
|
||||
" but already mapped to "+packages.get(oldPackageName)+" in line="+line);
|
||||
}
|
||||
|
||||
packages.put(oldPackageName, newPackageName);
|
||||
|
Loading…
Reference in New Issue
Block a user