Skip to content

Commit ad73d0a

Browse files
committed
Move classNameToJLSName to JVMUtil
1 parent 2319a02 commit ad73d0a

2 files changed

Lines changed: 25 additions & 22 deletions

File tree

src/main/java/me/nallar/javatransformer/internal/ResolutionContext.java

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,11 @@
1010
import lombok.val;
1111
import me.nallar.javatransformer.api.Type;
1212
import me.nallar.javatransformer.internal.util.JVMUtil;
13-
import me.nallar.javatransformer.internal.util.Joiner;
1413
import me.nallar.javatransformer.internal.util.NodeUtil;
15-
import me.nallar.javatransformer.internal.util.Splitter;
1614

1715
import java.util.*;
1816

1917
public class ResolutionContext {
20-
private static final Splitter dotSplitter = Splitter.on('.');
2118
@NonNull
2219
private final String packageName;
2320
@NonNull
@@ -51,25 +48,7 @@ static boolean hasPackages(String name) {
5148
static String classNameToDescriptor(String className) {
5249
// TODO: 23/01/2016 Handle inner classes properly? currently depend on following naming standards
5350
// depends on: lower case package names, uppercase first letter of class name
54-
List<String> parts = new ArrayList<>();
55-
dotSplitter.split(className).forEach(parts::add);
56-
57-
boolean possibleClass = true;
58-
for (int i = parts.size() - 1, size = i; i >= 0; i--) {
59-
String part = parts.get(i);
60-
61-
boolean last = i == size;
62-
63-
if (!last && !Character.isUpperCase(part.charAt(0))) {
64-
possibleClass = false;
65-
}
66-
67-
if (!last) {
68-
parts.set(i, part + (possibleClass ? '$' : '/'));
69-
}
70-
}
71-
72-
return "L" + Joiner.on().join(parts) + ";";
51+
return 'L' + JVMUtil.classNameToJLSName(className) + ';';
7352
}
7453

7554
public Type resolve(com.github.javaparser.ast.type.Type type) {

src/main/java/me/nallar/javatransformer/internal/util/JVMUtil.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88

99
@UtilityClass
1010
public class JVMUtil {
11+
private static final Splitter dotSplitter = Splitter.on('.');
12+
1113
public static String getDescriptor(Class<?> clazz) {
1214
if (clazz.isPrimitive()) {
1315
return descriptorToPrimitiveType(clazz.getSimpleName());
@@ -173,4 +175,26 @@ public static int makeAtLeastProtected(int access) {
173175
// change to public - protected doesn't include package-local.
174176
return access | AccessFlags.ACC_PUBLIC;
175177
}
178+
179+
public static String classNameToJLSName(String className) {
180+
List<String> parts = new ArrayList<>();
181+
dotSplitter.split(className).forEach(parts::add);
182+
183+
boolean possibleClass = true;
184+
for (int i = parts.size() - 1, size = i; i >= 0; i--) {
185+
String part = parts.get(i);
186+
187+
boolean last = i == size;
188+
189+
if (!last && !Character.isUpperCase(part.charAt(0))) {
190+
possibleClass = false;
191+
}
192+
193+
if (!last) {
194+
parts.set(i, part + (possibleClass ? '$' : '/'));
195+
}
196+
}
197+
198+
return Joiner.on().join(parts);
199+
}
176200
}

0 commit comments

Comments
 (0)