diff options
| author | 2015-03-16 12:29:17 -0400 | |
|---|---|---|
| committer | 2015-03-16 12:29:17 -0400 | |
| commit | c133e05b786ff5357931842581571c046f958c74 (patch) | |
| tree | 9fc998ac7b85828f3b57f04600244c6a79b2b2e8 /src/cuchaz/enigma/mapping/ClassEntry.java | |
| parent | Added tag v0.9 beta for changeset 856528c00d1c (diff) | |
| download | enigma-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.java | 31 |
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; | |||
| 13 | import java.io.Serializable; | 13 | import java.io.Serializable; |
| 14 | import java.util.List; | 14 | import java.util.List; |
| 15 | 15 | ||
| 16 | import com.beust.jcommander.internal.Lists; | ||
| 17 | |||
| 16 | public class ClassEntry implements Entry, Serializable { | 18 | public 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) { |