Skip to content

Commit 0bf2f33

Browse files
Merge pull request #50 from themooks/DEVTOOLING-1367
[DEVTOOLING-1367] Java SDK - Manage java.time.Duration and reserved words for model names
2 parents 0e15f61 + 784b8f9 commit 0bf2f33

1 file changed

Lines changed: 42 additions & 0 deletions

File tree

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PureCloudJavaClientCodegen.java

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ public class PureCloudJavaClientCodegen extends JavaClientCodegen {
2020

2121
protected Logger LOGGER = LoggerFactory.getLogger(PureCloudJavaClientCodegen.class);
2222

23+
protected Set<String> reservedModelNames;
24+
2325
public PureCloudJavaClientCodegen() {
2426
super();
2527

@@ -42,6 +44,7 @@ public PureCloudJavaClientCodegen() {
4244
importMapping.put("HashMap", "java.util.HashMap");
4345
importMapping.put("Map", "java.util.Map");
4446
importMapping.put("BigDecimal", "java.math.BigDecimal");
47+
importMapping.put("Duration", "java.time.Duration");
4548

4649
// Type overrides
4750
typeMapping.put("date", "LocalDate");
@@ -54,6 +57,11 @@ public PureCloudJavaClientCodegen() {
5457
reservedWords.add("null");
5558
reservedWords.add("request");
5659

60+
// Add special reserved words for Model Names
61+
reservedModelNames = new HashSet<String>();
62+
reservedModelNames.add("configuration");
63+
reservedModelNames.add("case");
64+
5765
operationTemplateFiles.put("requestBuilder.mustache", ".java");
5866
//supportingFiles.add(new SupportingFile("testng.mustache", "", "testng.xml"));
5967
apiDocTemplateFiles.put("api_json.mustache", ".json");
@@ -267,6 +275,9 @@ public CodegenModel fromModel(String name, Schema schema) {
267275

268276
Set<String> imports = new HashSet<>();
269277
for (String im : codegenModel.imports) {
278+
if (im != null && reservedModelNames.contains(im.toLowerCase(Locale.ROOT))) {
279+
im = "Model" + im;
280+
}
270281
imports.add(im.replaceAll("_+$", ""));
271282
}
272283
codegenModel.imports = imports;
@@ -280,6 +291,37 @@ public CodegenModel fromModel(String name, Schema schema) {
280291
var.defaultValue = var.defaultValue
281292
.replaceAll("_+$", "")
282293
.replaceAll("_+(>)", "$1");
294+
295+
if (var.datatypeWithEnum != null && reservedModelNames.contains(var.datatypeWithEnum.toLowerCase(Locale.ROOT))) {
296+
var.datatypeWithEnum = "Model" + var.datatypeWithEnum;
297+
if (var.dataType != null && reservedModelNames.contains(var.dataType.toLowerCase(Locale.ROOT))) {
298+
var.dataType = "Model" + var.dataType;
299+
}
300+
}
301+
302+
if (var.datatypeWithEnum.startsWith("List<")) {
303+
String eltEnumName = var.datatypeWithEnum.substring(5, var.datatypeWithEnum.length() - 1);
304+
if (eltEnumName != null && reservedModelNames.contains(eltEnumName.toLowerCase(Locale.ROOT))) {
305+
var.datatypeWithEnum = "List<" + "Model" + eltEnumName + ">";
306+
if (var.defaultValue != null) {
307+
var.defaultValue = var.defaultValue.replace("<" + eltEnumName + ">", "<" + "Model" + eltEnumName + ">");
308+
}
309+
String eltName = var.dataType.substring(5, var.dataType.length() - 1);
310+
if (eltName != null && reservedModelNames.contains(eltName.toLowerCase(Locale.ROOT))) {
311+
var.dataType = "List<" + "Model" + eltName + ">";
312+
}
313+
}
314+
}
315+
if (var.datatypeWithEnum.startsWith("Map<String, ")) {
316+
String eltEnumName = var.datatypeWithEnum.substring(12, var.datatypeWithEnum.length() - 1);
317+
if (eltEnumName != null && reservedModelNames.contains(eltEnumName.toLowerCase(Locale.ROOT))) {
318+
var.datatypeWithEnum = "Map<String, " + "Model" + eltEnumName + ">";
319+
String eltName = var.dataType.substring(12, var.dataType.length() - 1);
320+
if (eltName != null && reservedModelNames.contains(eltName.toLowerCase(Locale.ROOT))) {
321+
var.dataType = "Map<String, " + "Model" + eltName + ">";
322+
}
323+
}
324+
}
283325
}
284326

285327
for (String s : Arrays.asList("pageSize","pageNumber","total","selfUri","firstUri","previousUri","nextUri","lastUri","pageCount", "entities")) {

0 commit comments

Comments
 (0)