summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/mapping/ClassEntry.java
diff options
context:
space:
mode:
authorGravatar jeff2015-03-16 12:29:17 -0400
committerGravatar jeff2015-03-16 12:29:17 -0400
commitc133e05b786ff5357931842581571c046f958c74 (patch)
tree9fc998ac7b85828f3b57f04600244c6a79b2b2e8 /src/cuchaz/enigma/mapping/ClassEntry.java
parentAdded tag v0.9 beta for changeset 856528c00d1c (diff)
downloadenigma-fork-c133e05b786ff5357931842581571c046f958c74.tar.gz
enigma-fork-c133e05b786ff5357931842581571c046f958c74.tar.xz
enigma-fork-c133e05b786ff5357931842581571c046f958c74.zip
fix a zillion issues with inner classes
Diffstat (limited to 'src/cuchaz/enigma/mapping/ClassEntry.java')
-rw-r--r--src/cuchaz/enigma/mapping/ClassEntry.java31
1 files changed, 25 insertions, 6 deletions
diff --git a/src/cuchaz/enigma/mapping/ClassEntry.java b/src/cuchaz/enigma/mapping/ClassEntry.java
index 69e66bc..5f3b5e2 100644
--- a/src/cuchaz/enigma/mapping/ClassEntry.java
+++ b/src/cuchaz/enigma/mapping/ClassEntry.java
@@ -13,6 +13,8 @@ package cuchaz.enigma.mapping;
13import java.io.Serializable; 13import java.io.Serializable;
14import java.util.List; 14import java.util.List;
15 15
16import com.beust.jcommander.internal.Lists;
17
16public class ClassEntry implements Entry, Serializable { 18public class ClassEntry implements Entry, Serializable {
17 19
18 private static final long serialVersionUID = 4235460580973955811L; 20 private static final long serialVersionUID = 4235460580973955811L;
@@ -29,7 +31,7 @@ public class ClassEntry implements Entry, Serializable {
29 31
30 m_name = className; 32 m_name = className;
31 33
32 if (isInnerClass() && getInnerClassName().indexOf('/') >= 0) { 34 if (isInnerClass() && getInnermostClassName().indexOf('/') >= 0) {
33 throw new IllegalArgumentException("Inner class must not have a package: " + className); 35 throw new IllegalArgumentException("Inner class must not have a package: " + className);
34 } 36 }
35 } 37 }
@@ -84,22 +86,39 @@ public class ClassEntry implements Entry, Serializable {
84 return m_name.lastIndexOf('$') >= 0; 86 return m_name.lastIndexOf('$') >= 0;
85 } 87 }
86 88
87 public String getOuterClassName() { 89 public List<String> getClassChainNames() {
90 return Lists.newArrayList(m_name.split("\\$"));
91 }
92
93 public List<ClassEntry> getClassChain() {
94 List<ClassEntry> entries = Lists.newArrayList();
95 StringBuilder buf = new StringBuilder();
96 for (String name : getClassChainNames()) {
97 if (buf.length() > 0) {
98 buf.append("$");
99 }
100 buf.append(name);
101 entries.add(new ClassEntry(buf.toString()));
102 }
103 return entries;
104 }
105
106 public String getOutermostClassName() {
88 if (isInnerClass()) { 107 if (isInnerClass()) {
89 return m_name.substring(0, m_name.lastIndexOf('$')); 108 return m_name.substring(0, m_name.lastIndexOf('$'));
90 } 109 }
91 return m_name; 110 return m_name;
92 } 111 }
93 112
94 public String getInnerClassName() { 113 public String getInnermostClassName() {
95 if (!isInnerClass()) { 114 if (!isInnerClass()) {
96 throw new Error("This is not an inner class!"); 115 throw new Error("This is not an inner class!");
97 } 116 }
98 return m_name.substring(m_name.lastIndexOf('$') + 1); 117 return m_name.substring(m_name.lastIndexOf('$') + 1);
99 } 118 }
100 119
101 public ClassEntry getOuterClassEntry() { 120 public ClassEntry getOutermostClassEntry() {
102 return new ClassEntry(getOuterClassName()); 121 return new ClassEntry(getOutermostClassName());
103 } 122 }
104 123
105 public boolean isInDefaultPackage() { 124 public boolean isInDefaultPackage() {
@@ -130,7 +149,7 @@ public class ClassEntry implements Entry, Serializable {
130 buf.append(chainEntry.getName()); 149 buf.append(chainEntry.getName());
131 } else { 150 } else {
132 buf.append("$"); 151 buf.append("$");
133 buf.append(chainEntry.isInnerClass() ? chainEntry.getInnerClassName() : chainEntry.getSimpleName()); 152 buf.append(chainEntry.isInnerClass() ? chainEntry.getInnermostClassName() : chainEntry.getSimpleName());
134 } 153 }
135 154
136 if (chainEntry == this) { 155 if (chainEntry == this) {