MCPcopy Create free account
hub / github.com/GraxCode/zelixkiller / fillGap

Method fillGap

src/me/lpk/CorrelationMapper.java:205–306  ·  view source on GitHub ↗

Given a class, map of other classes, and a naming convention tries to link classes together. Classes that aren't renamed that aren't inner classes are renamed according to the given naming convention. @param mappedClass @param mappedClasses @param mode @return

(MappedClass mappedClass, Map<String, MappedClass> mappedClasses, MappingMode mode)

Source from the content-addressed store, hash-verified

203 * @return
204 */
205 private static Map<String, MappedClass> fillGap(MappedClass mappedClass, Map<String, MappedClass> mappedClasses, MappingMode mode) {
206 // If already renamed, pass
207 if (mappedClass.isTruelyRenamed()) {
208 return mappedClasses;
209 }
210 // Map interfaces
211 for (MappedClass interfaceClass : mappedClass.getInterfaces()) {
212 mappedClasses = fillGap(interfaceClass, mappedClasses, mode);
213 }
214 // Map the parents
215 MappedClass parent = mappedClass.getParent();
216 if (parent != null && !parent.isRenamed()) {
217 mappedClasses = fillGap(parent, mappedClasses, mode);
218 // Update parent
219 parent = mappedClasses.get(parent.getOriginalName());
220 }
221 // Map name for inner class
222 if (mappedClass.isInnerClass()) {
223 MappedClass outerClass = mappedClass.getOuterClass();
224 mappedClasses = fillGap(outerClass, mappedClasses, mode);
225 if (mappedClass.getOriginalName().contains("$")) {
226 String post = mappedClass.getOriginalName().substring(mappedClass.getOriginalName().indexOf("$") + 1);
227 mappedClass.setNewName(mappedClass.getOuterClass().getNewName() + "$" + post);
228 } else {
229 int index = 0;
230 for (String name : mappedClass.getOuterClass().getInnerClassMap().keySet()) {
231 index += 1;
232 if (name.equals(mappedClass.getOriginalName())) {
233 break;
234 }
235 }
236 mappedClass.setNewName(mappedClass.getOuterClass().getNewName() + "$" + index);
237 }
238 } else {
239 // Normal class
240 String newNameClass = mode.getClassName(mappedClass);
241 if (parent != null) {
242 // Move next to parent. Organizes packages and is less likely to
243 // cass AccessErrors for non-public methods.
244 String newNamePackage = parent.getNewName().substring(0, parent.getNewName().lastIndexOf("/") + 1);
245 if (newNameClass.contains("/")) {
246 newNameClass = newNameClass.substring(newNameClass.lastIndexOf("/") + 1);
247 }
248 mappedClass.setNewName(newNamePackage + newNameClass);
249 } else {
250 // Check for interfaces. Put them in that package if there is
251 // one or they all are in the same package.
252 if (mappedClass.getInterfaces().size() > 0) {
253 String s = null;
254 boolean failed = false;
255 for (MappedClass interfaceClass : mappedClass.getInterfaces()) {
256 int index = interfaceClass.getNewName().lastIndexOf("/");
257 if (index == -1) {
258 continue;
259 }
260 if (s == null) {
261 s = interfaceClass.getNewName().substring(0, index);
262 } else {

Callers 1

fillInTheGapsMethod · 0.95

Calls 15

keepNameMethod · 0.95
doesOverrideMethod · 0.95
findMethodOverrideMethod · 0.95
isTruelyRenamedMethod · 0.80
getInterfacesMethod · 0.80
isRenamedMethod · 0.80
getOriginalNameMethod · 0.80
isInnerClassMethod · 0.80
getOuterClassMethod · 0.80
containsMethod · 0.80
setNewNameMethod · 0.80
getNewNameMethod · 0.80

Tested by

no test coverage detected