Skip to content
Open
Show file tree
Hide file tree
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
@@ -1,5 +1,9 @@
package {{configPackage}};

import java.math.BigDecimal;
import java.net.URI;
import java.util.UUID;

{{#models}}
{{#model}}
{{#isEnum}}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3057,6 +3057,36 @@ public void shouldHandleSeparatelyInterfaceAndModelAdditionalAnnotations() throw
.containsWithName("marker.Common");
}

@Test
public void contractWithUriEnumContainsEnumConverterWithUriImport() throws IOException {
Map<String, File> output = generateFromContract("src/test/resources/3_0/enum_uri.yaml", SPRING_BOOT);

JavaFileAssert.assertThat(output.get("EnumConverterConfiguration.java"))
.hasImports("java.net.URI")
.fileContains("Converter<URI, ExampleUriEnum>")
.assertMethod("exampleUriEnumConverter");
}

@Test
public void contractWithUuidEnumContainsEnumConverterWithUuidImport() throws IOException {
Map<String, File> output = generateFromContract("src/test/resources/3_0/enum_uuid.yaml", SPRING_BOOT);

JavaFileAssert.assertThat(output.get("EnumConverterConfiguration.java"))
.hasImports("java.util.UUID")
.fileContains("Converter<UUID, ExampleUuidEnum>")
.assertMethod("exampleUuidEnumConverter");
}

@Test
public void contractWithNumberEnumContainsEnumConverterWithBigDecimalImport() throws IOException {
Map<String, File> output = generateFromContract("src/test/resources/3_0/enum_number.yaml", SPRING_BOOT);

JavaFileAssert.assertThat(output.get("EnumConverterConfiguration.java"))
.hasImports("java.math.BigDecimal")
.fileContains("Converter<BigDecimal, ExampleNumberEnum>")
.assertMethod("exampleNumberEnumConverter");
}

@Test
public void contractWithoutEnumDoesNotContainEnumConverter() throws IOException {
Map<String, File> output = generateFromContract("src/test/resources/3_0/generic.yaml", SPRING_BOOT);
Expand Down
33 changes: 33 additions & 0 deletions modules/openapi-generator/src/test/resources/3_0/enum_number.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
openapi: 3.0.0
info:
title: Sample API
description: API with number enum.
version: 1.0.0
paths:
/resources:
get:
summary: Returns resources.
responses:
200:
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Resource'
components:
schemas:
Resource:
type: object
properties:
source:
$ref: '#/components/schemas/ExampleNumberEnum'
ExampleNumberEnum:
type: number
description: Example of an Enum with number values
enum:
- 1.1
- 2.2
- 3.3

33 changes: 33 additions & 0 deletions modules/openapi-generator/src/test/resources/3_0/enum_uri.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
openapi: 3.0.0
info:
title: Sample API
description: API with URI enum.
version: 1.0.0
paths:
/resources:
get:
summary: Returns resources.
responses:
200:
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Resource'
components:
schemas:
Resource:
type: object
properties:
source:
$ref: '#/components/schemas/ExampleUriEnum'
ExampleUriEnum:
type: string
format: uri
description: Example of an Enum with URI values
enum:
- "https://another-example.com"
- "https://example.com"

33 changes: 33 additions & 0 deletions modules/openapi-generator/src/test/resources/3_0/enum_uuid.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
openapi: 3.0.0
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did a test with

java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar generate -g spring -i https://raw.githubusercontent.com/renatomameli/openapi-generator/41aa7db5ef0e046a200e65ae154a9486fafe4794/modules/openapi-generator/src/test/resources/3_0/enum_uuid.yaml -o /tmp/enum-uuid2/

But the output fails to compile:

[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /C:/Users/User/AppData/Local/Temp/enum-uuid2/src/main/java/org/openapitools/api/ResourcesApiController.java:[34,6] cannot find symbol
  symbol:   class Nullable
  location: class org.openapitools.api.ResourcesApiController
[ERROR] /C:/Users/User/AppData/Local/Temp/enum-uuid2/src/main/java/org/openapitools/api/ResourcesApiController.java:[38,36] cannot find symbol
  symbol:   class Nullable
  location: class org.openapitools.api.ResourcesApiController
[ERROR] /C:/Users/User/AppData/Local/Temp/enum-uuid2/src/main/java/org/openapitools/model/ExampleUuidEnum.java:[26,40] incompatible types: java.lang.String cannot be converted to java.util.UUID
[ERROR] /C:/Users/User/AppData/Local/Temp/enum-uuid2/src/main/java/org/openapitools/model/ExampleUuidEnum.java:[28,40] incompatible types: java.lang.String cannot be converted to java.util.UUID
[INFO] 4 errors

Does it compile fine for your?

info:
title: Sample API
description: API with UUID enum.
version: 1.0.0
paths:
/resources:
get:
summary: Returns resources.
responses:
200:
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Resource'
components:
schemas:
Resource:
type: object
properties:
source:
$ref: '#/components/schemas/ExampleUuidEnum'
ExampleUuidEnum:
type: string
format: uuid
description: Example of an Enum with UUID values
enum:
- "d6a8f2b0-1c34-4e56-a789-0abcdef12345"
- "e7b9c3d1-2d45-5f67-b890-1bcdef023456"

Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package org.openapitools.configuration;

import java.math.BigDecimal;
import java.net.URI;
import java.util.UUID;

import org.openapitools.model.FruitType;

import org.springframework.context.annotation.Bean;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package org.openapitools.configuration;

import java.math.BigDecimal;
import java.net.URI;
import java.util.UUID;

import org.openapitools.model.FruitType;

import org.springframework.context.annotation.Bean;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package org.openapitools.configuration;

import java.math.BigDecimal;
import java.net.URI;
import java.util.UUID;

import org.openapitools.model.FruitType;

import org.springframework.context.annotation.Bean;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package org.openapitools.configuration;

import java.math.BigDecimal;
import java.net.URI;
import java.util.UUID;

import org.openapitools.model.EnumClass;
import org.openapitools.model.OuterEnum;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package org.openapitools.configuration;

import java.math.BigDecimal;
import java.net.URI;
import java.util.UUID;

import org.openapitools.model.EnumClass;
import org.openapitools.model.OuterEnum;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package org.openapitools.configuration;

import java.math.BigDecimal;
import java.net.URI;
import java.util.UUID;

import org.openapitools.model.EnumClass;
import org.openapitools.model.OuterEnum;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package org.openapitools.configuration;

import java.math.BigDecimal;
import java.net.URI;
import java.util.UUID;

import org.openapitools.model.EnumClass;
import org.openapitools.model.OuterEnum;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package org.openapitools.configuration;

import java.math.BigDecimal;
import java.net.URI;
import java.util.UUID;

import org.openapitools.model.EnumClass;
import org.openapitools.model.OuterEnum;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package org.openapitools.configuration;

import java.math.BigDecimal;
import java.net.URI;
import java.util.UUID;

import org.openapitools.model.EnumClass;
import org.openapitools.model.OuterEnum;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package org.openapitools.configuration;

import java.math.BigDecimal;
import java.net.URI;
import java.util.UUID;

import org.openapitools.model.EnumClass;
import org.openapitools.model.OuterEnum;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package org.openapitools.configuration;

import java.math.BigDecimal;
import java.net.URI;
import java.util.UUID;

import org.openapitools.model.EnumClass;
import org.openapitools.model.OuterEnum;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package org.openapitools.configuration;

import java.math.BigDecimal;
import java.net.URI;
import java.util.UUID;

import org.openapitools.model.EnumClass;
import org.openapitools.model.OuterEnum;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package org.openapitools.configuration;

import java.math.BigDecimal;
import java.net.URI;
import java.util.UUID;

import org.openapitools.model.EnumClassDto;
import org.openapitools.model.OuterEnumDto;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package org.openapitools.configuration;

import java.math.BigDecimal;
import java.net.URI;
import java.util.UUID;

import org.openapitools.model.EnumClass;
import org.openapitools.model.OuterEnum;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package org.openapitools.configuration;

import java.math.BigDecimal;
import java.net.URI;
import java.util.UUID;

import org.openapitools.model.EnumClass;
import org.openapitools.model.OuterEnum;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package org.openapitools.configuration;

import java.math.BigDecimal;
import java.net.URI;
import java.util.UUID;

import org.openapitools.model.EnumClass;
import org.openapitools.model.OuterEnum;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package org.openapitools.configuration;

import java.math.BigDecimal;
import java.net.URI;
import java.util.UUID;

import org.openapitools.model.EnumClass;
import org.openapitools.model.OuterEnum;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package org.openapitools.configuration;

import java.math.BigDecimal;
import java.net.URI;
import java.util.UUID;

import org.openapitools.model.EnumClass;
import org.openapitools.model.OuterEnum;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package org.openapitools.configuration;

import java.math.BigDecimal;
import java.net.URI;
import java.util.UUID;

import org.openapitools.model.EnumClass;
import org.openapitools.model.OuterEnum;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package org.openapitools.configuration;

import java.math.BigDecimal;
import java.net.URI;
import java.util.UUID;

import org.openapitools.model.EnumClass;
import org.openapitools.model.OuterEnum;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package org.openapitools.configuration;

import java.math.BigDecimal;
import java.net.URI;
import java.util.UUID;

import org.openapitools.virtualan.model.EnumClass;
import org.openapitools.virtualan.model.OuterEnum;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package org.openapitools.configuration;

import java.math.BigDecimal;
import java.net.URI;
import java.util.UUID;

import org.openapitools.model.EnumClassDto;
import org.openapitools.model.OuterEnumDefaultValueDto;
import org.openapitools.model.OuterEnumDto;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package org.openapitools.configuration;

import java.math.BigDecimal;
import java.net.URI;
import java.util.UUID;

import org.openapitools.model.EnumClassDto;
import org.openapitools.model.OuterEnumDto;

Expand Down
Loading