Skip to content

Commit 5b8566e

Browse files
authored
Merge pull request #149 from SentryMan/innerConflict
Lengthen Inner Type Short Names
2 parents e5c51e9 + c31c5e6 commit 5b8566e

File tree

2 files changed

+38
-4
lines changed

2 files changed

+38
-4
lines changed

http-generator-core/src/main/java/io/avaje/http/generator/core/UType.java

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ public String shortType() {
132132

133133
@Override
134134
public String shortName() {
135-
return Util.initLower(shortType());
135+
return Util.initLower(shortType()).replace(".", "$");
136136
}
137137

138138
@Override
@@ -202,12 +202,36 @@ public Set<String> importTypes() {
202202
Set<String> set = new LinkedHashSet<>();
203203
for (String type : allTypes) {
204204
if (!type.startsWith("java.lang.") && type.indexOf('.') > -1) {
205-
set.add(type.replace("[]", ""));
205+
if (type.startsWith("java")) set.add(type.replace("[]", ""));
206+
else set.add(innerTypesImport(type).replace("[]", ""));
206207
}
207208
}
208209
return set;
209210
}
210211

212+
public String innerTypesImport(String type) {
213+
214+
final var parts = type.split("\\.");
215+
var result = "";
216+
var foundUpper = false;
217+
218+
for (var i = 0; i < parts.length; i++) {
219+
if (!Character.isUpperCase(parts[i].charAt(0))) {
220+
result += parts[i] + ".";
221+
} else if (!foundUpper) {
222+
foundUpper = true;
223+
result += parts[i] + (i == parts.length - 1 ? "" : ".");
224+
} else {
225+
break;
226+
}
227+
}
228+
229+
if (result.endsWith(".")) {
230+
result = result.substring(0, result.length() - 1);
231+
}
232+
return result;
233+
}
234+
211235
@Override
212236
public boolean isGeneric() {
213237
return true;
@@ -232,7 +256,7 @@ public String shortType() {
232256

233257
@Override
234258
public String shortName() {
235-
return shortName;
259+
return shortName.replace(".", "$");
236260
}
237261

238262
@Override

http-generator-core/src/main/java/io/avaje/http/generator/core/Util.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,18 @@ public static String shortName(String fullType) {
7575
int p = fullType.lastIndexOf('.');
7676
if (p == -1) {
7777
return fullType;
78-
} else {
78+
} else if (fullType.startsWith("java")) {
7979
return fullType.substring(p + 1);
80+
} else {
81+
var result = "";
82+
var foundClass = false;
83+
for (final String part : fullType.split("\\.")) {
84+
if (foundClass || Character.isUpperCase(part.charAt(0))) {
85+
foundClass = true;
86+
result += (result.isEmpty() ? "" : ".") + part;
87+
}
88+
}
89+
return result;
8090
}
8191
}
8292

0 commit comments

Comments
 (0)