Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ public class PureCloudJavaClientCodegen extends JavaClientCodegen {

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

protected Set<String> reservedModelNames;

public PureCloudJavaClientCodegen() {
super();

Expand All @@ -42,6 +44,7 @@ public PureCloudJavaClientCodegen() {
importMapping.put("HashMap", "java.util.HashMap");
importMapping.put("Map", "java.util.Map");
importMapping.put("BigDecimal", "java.math.BigDecimal");
importMapping.put("Duration", "java.time.Duration");

// Type overrides
typeMapping.put("date", "LocalDate");
Expand All @@ -54,6 +57,11 @@ public PureCloudJavaClientCodegen() {
reservedWords.add("null");
reservedWords.add("request");

// Add special reserved words for Model Names
reservedModelNames = new HashSet<String>();
reservedModelNames.add("configuration");
reservedModelNames.add("case");

operationTemplateFiles.put("requestBuilder.mustache", ".java");
//supportingFiles.add(new SupportingFile("testng.mustache", "", "testng.xml"));
apiDocTemplateFiles.put("api_json.mustache", ".json");
Expand Down Expand Up @@ -267,6 +275,9 @@ public CodegenModel fromModel(String name, Schema schema) {

Set<String> imports = new HashSet<>();
for (String im : codegenModel.imports) {
if (im != null && reservedModelNames.contains(im.toLowerCase(Locale.ROOT))) {
im = "Model" + im;
}
imports.add(im.replaceAll("_+$", ""));
}
codegenModel.imports = imports;
Expand All @@ -280,6 +291,37 @@ public CodegenModel fromModel(String name, Schema schema) {
var.defaultValue = var.defaultValue
.replaceAll("_+$", "")
.replaceAll("_+(>)", "$1");

if (var.datatypeWithEnum != null && reservedModelNames.contains(var.datatypeWithEnum.toLowerCase(Locale.ROOT))) {
var.datatypeWithEnum = "Model" + var.datatypeWithEnum;
if (var.dataType != null && reservedModelNames.contains(var.dataType.toLowerCase(Locale.ROOT))) {
var.dataType = "Model" + var.dataType;
}
}

if (var.datatypeWithEnum.startsWith("List<")) {
String eltEnumName = var.datatypeWithEnum.substring(5, var.datatypeWithEnum.length() - 1);
if (eltEnumName != null && reservedModelNames.contains(eltEnumName.toLowerCase(Locale.ROOT))) {
var.datatypeWithEnum = "List<" + "Model" + eltEnumName + ">";
if (var.defaultValue != null) {
var.defaultValue = var.defaultValue.replace("<" + eltEnumName + ">", "<" + "Model" + eltEnumName + ">");
}
String eltName = var.dataType.substring(5, var.dataType.length() - 1);
if (eltName != null && reservedModelNames.contains(eltName.toLowerCase(Locale.ROOT))) {
var.dataType = "List<" + "Model" + eltName + ">";
}
}
}
if (var.datatypeWithEnum.startsWith("Map<String, ")) {
String eltEnumName = var.datatypeWithEnum.substring(12, var.datatypeWithEnum.length() - 1);
if (eltEnumName != null && reservedModelNames.contains(eltEnumName.toLowerCase(Locale.ROOT))) {
var.datatypeWithEnum = "Map<String, " + "Model" + eltEnumName + ">";
String eltName = var.dataType.substring(12, var.dataType.length() - 1);
if (eltName != null && reservedModelNames.contains(eltName.toLowerCase(Locale.ROOT))) {
var.dataType = "Map<String, " + "Model" + eltName + ">";
}
}
}
}

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