Skip to content

Commit 44e4dc3

Browse files
eriktimwing328
authored andcommitted
Add support for the URI format (#3023)
* Add support for URI formats * Set URI type for all generators
1 parent f93e75b commit 44e4dc3

55 files changed

Lines changed: 85 additions & 4 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public class CodegenParameter {
3333
public String example; // example value (x-example)
3434
public String jsonSchema;
3535
public boolean isString, isNumeric, isInteger, isLong, isNumber, isFloat, isDouble, isByteArray, isBinary,
36-
isBoolean, isDate, isDateTime, isUuid, isEmail, isFreeFormObject;
36+
isBoolean, isDate, isDateTime, isUuid, isUri, isEmail, isFreeFormObject;
3737
public boolean isListContainer, isMapContainer;
3838
public boolean isFile;
3939
public boolean isEnum;
@@ -168,6 +168,7 @@ public CodegenParameter copy() {
168168
output.isDate = this.isDate;
169169
output.isDateTime = this.isDateTime;
170170
output.isUuid = this.isUuid;
171+
output.isUri = this.isUri;
171172
output.isEmail = this.isEmail;
172173
output.isFreeFormObject = this.isFreeFormObject;
173174
output.isListContainer = this.isListContainer;
@@ -222,6 +223,7 @@ public boolean equals(Object o) {
222223
Objects.equals(isDate, that.isDate) &&
223224
Objects.equals(isDateTime, that.isDateTime) &&
224225
Objects.equals(isUuid, that.isUuid) &&
226+
Objects.equals(isUri, that.isUri) &&
225227
Objects.equals(isEmail, that.isEmail) &&
226228
Objects.equals(isFreeFormObject, that.isFreeFormObject) &&
227229
Objects.equals(isListContainer, that.isListContainer) &&
@@ -289,6 +291,7 @@ public int hashCode() {
289291
isDate,
290292
isDateTime,
291293
isUuid,
294+
isUri,
292295
isEmail,
293296
isFreeFormObject,
294297
isListContainer,
@@ -357,6 +360,7 @@ public java.lang.String toString() {
357360
", isDate=" + isDate +
358361
", isDateTime=" + isDateTime +
359362
", isUuid=" + isUuid +
363+
", isUri=" + isUri +
360364
", isEmail=" + isEmail +
361365
", isFreeFormObject=" + isFreeFormObject +
362366
", isListContainer=" + isListContainer +

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public class CodegenProperty implements Cloneable {
5555
public boolean hasMoreNonReadOnly; // for model constructor, true if next property is not readonly
5656
public boolean isPrimitiveType, isModel, isContainer;
5757
public boolean isString, isNumeric, isInteger, isLong, isNumber, isFloat, isDouble, isByteArray, isBinary, isFile,
58-
isBoolean, isDate, isDateTime, isUuid, isEmail, isFreeFormObject;
58+
isBoolean, isDate, isDateTime, isUuid, isUri, isEmail, isFreeFormObject;
5959
public boolean isListContainer, isMapContainer;
6060
public boolean isEnum;
6161
public boolean isReadOnly;
@@ -472,6 +472,7 @@ public int hashCode() {
472472
isDate,
473473
isDateTime,
474474
isUuid,
475+
isUri,
475476
isEmail,
476477
isFreeFormObject,
477478
isMapContainer,
@@ -552,6 +553,7 @@ public boolean equals(Object obj) {
552553
Objects.equals(isDate, other.isDate) &&
553554
Objects.equals(isDateTime, other.isDateTime) &&
554555
Objects.equals(isUuid, other.isUuid) &&
556+
Objects.equals(isUri, other.isUri) &&
555557
Objects.equals(isEmail, other.isEmail) &&
556558
Objects.equals(isFreeFormObject, other.isFreeFormObject) &&
557559
Objects.equals(isBinary, other.isBinary) &&
@@ -649,6 +651,7 @@ public java.lang.String toString() {
649651
", isDate=" + isDate +
650652
", isDateTime=" + isDateTime +
651653
", isUuid=" + isUuid +
654+
", isUri=" + isUri +
652655
", isEmail=" + isEmail +
653656
", isFreeFormObject=" + isFreeFormObject +
654657
", isListContainer=" + isListContainer +

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1015,6 +1015,7 @@ public DefaultCodegen() {
10151015
typeMapping.put("binary", "File");
10161016
typeMapping.put("file", "File");
10171017
typeMapping.put("UUID", "UUID");
1018+
typeMapping.put("URI", "URI");
10181019
//typeMapping.put("BigDecimal", "BigDecimal"); //TODO need the mapping?
10191020

10201021

@@ -1025,6 +1026,7 @@ public DefaultCodegen() {
10251026
importMapping = new HashMap<String, String>();
10261027
importMapping.put("BigDecimal", "java.math.BigDecimal");
10271028
importMapping.put("UUID", "java.util.UUID");
1029+
importMapping.put("URI", "java.net.URI");
10281030
importMapping.put("File", "java.io.File");
10291031
importMapping.put("Date", "java.util.Date");
10301032
importMapping.put("Timestamp", "java.sql.Timestamp");
@@ -1233,6 +1235,8 @@ public void setParameterExampleValue(CodegenParameter codegenParameter) {
12331235
codegenParameter.example = "2013-10-20T19:20:30+01:00";
12341236
} else if (Boolean.TRUE.equals(codegenParameter.isUuid)) {
12351237
codegenParameter.example = "38400000-8cf0-11bd-b23e-10b96e4ef00d";
1238+
} else if (Boolean.TRUE.equals(codegenParameter.isUri)) {
1239+
codegenParameter.example = "https://openapi-generator.tech";
12361240
} else if (Boolean.TRUE.equals(codegenParameter.isString)) {
12371241
codegenParameter.example = codegenParameter.paramName + "_example";
12381242
} else if (Boolean.TRUE.equals(codegenParameter.isFreeFormObject)) {
@@ -1512,6 +1516,8 @@ private static String getPrimitiveType(Schema schema) {
15121516
return "array";
15131517
} else if (ModelUtils.isUUIDSchema(schema)) {
15141518
return "UUID";
1519+
} else if (ModelUtils.isURISchema(schema)) {
1520+
return "URI";
15151521
} else if (ModelUtils.isStringSchema(schema)) {
15161522
return "string";
15171523
} else if (ModelUtils.isFreeFormObject(schema)) {
@@ -2038,6 +2044,9 @@ public CodegenProperty fromProperty(String name, Schema p) {
20382044
// keep isString to true to make it backward compatible
20392045
property.isString = true;
20402046
property.isUuid = true;
2047+
} else if (ModelUtils.isURISchema(p)) {
2048+
property.isString = true; // for backward compatibility
2049+
property.isUri = true;
20412050
} else if (ModelUtils.isEmailSchema(p)) {
20422051
property.isString = true;
20432052
property.isEmail = true;

modules/openapi-generator/src/main/java/org/openapitools/codegen/examples/ExampleGenerator.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,8 @@ private Object resolvePropertyToExample(String propertyName, String mediaType, S
277277
return mp;
278278
} else if (ModelUtils.isUUIDSchema(property)) {
279279
return "046b6c7f-0b8a-43b9-b35d-6489e6daee91";
280+
} else if (ModelUtils.isURISchema(property)) {
281+
return "https://openapi-generator.tech";
280282
} else if (ModelUtils.isStringSchema(property)) {
281283
LOGGER.debug("String property");
282284
String defaultValue = (String) property.getDefault();

modules/openapi-generator/src/main/java/org/openapitools/codegen/examples/XmlExampleGenerator.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,8 @@ protected String getExample(Schema schema) {
193193
return "********";
194194
} else if (ModelUtils.isUUIDSchema(schema)) {
195195
return "046b6c7f-0b8a-43b9-b35d-6489e6daee91";
196+
} else if (ModelUtils.isURISchema(schema)) {
197+
return "https://openapi-generator.tech";
196198
// do these last in case the specific types above are derived from these classes
197199
} else if (ModelUtils.isStringSchema(schema)) {
198200
return "aeiou";

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ public AbstractAdaCodegen() {
140140
typeMapping.put("object", "Swagger.Object");
141141
typeMapping.put("number", "Swagger.Number");
142142
typeMapping.put("UUID", "Swagger.UString");
143+
typeMapping.put("URI", "Swagger.UString");
143144
typeMapping.put("file", "Swagger.Http_Content_Type");
144145
typeMapping.put("binary", "Swagger.Binary");
145146

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@ public AbstractCSharpCodegen() {
185185
typeMapping.put("map", "Dictionary");
186186
typeMapping.put("object", "Object");
187187
typeMapping.put("UUID", "Guid?");
188+
typeMapping.put("URI", "string");
188189

189190
// nullable type
190191
nullableType = new HashSet<String>(
@@ -1087,6 +1088,8 @@ public void setParameterExampleValue(CodegenParameter codegenParameter) {
10871088
codegenParameter.example = "2013-10-20T19:20:30+01:00";
10881089
} else if (Boolean.TRUE.equals(codegenParameter.isUuid)) {
10891090
codegenParameter.example = "38400000-8cf0-11bd-b23e-10b96e4ef00d";
1091+
} else if (Boolean.TRUE.equals(codegenParameter.isUri)) {
1092+
codegenParameter.example = "https://openapi-generator.tech";
10901093
} else if (Boolean.TRUE.equals(codegenParameter.isString)) {
10911094
codegenParameter.example = codegenParameter.paramName + "_example";
10921095
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ public AbstractEiffelCodegen() {
7171
typeMapping.put("boolean", "BOOLEAN");
7272
typeMapping.put("string", "STRING_32");
7373
typeMapping.put("UUID", "UUID"); //
74+
typeMapping.put("URI", "STRING"); //
7475
typeMapping.put("date", "DATE");
7576
typeMapping.put("DateTime", "DATE_TIME");
7677
typeMapping.put("date-time", "DATE_TIME");

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,7 @@ public AbstractFSharpCodegen() {
171171
typeMapping.put("map", "IDictionary");
172172
typeMapping.put("object", "obj");
173173
typeMapping.put("UUID", "Guid");
174+
typeMapping.put("URI", "string");
174175

175176
// nullable type
176177
nullableType = new HashSet<String>(

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ public AbstractGoCodegen() {
9898
typeMapping.put("boolean", "bool");
9999
typeMapping.put("string", "string");
100100
typeMapping.put("UUID", "string");
101+
typeMapping.put("URI", "string");
101102
typeMapping.put("date", "string");
102103
typeMapping.put("DateTime", "time.Time");
103104
typeMapping.put("password", "string");

0 commit comments

Comments
 (0)