[ 
https://issues.apache.org/jira/browse/CAMEL-12420?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Johan Karlsson updated CAMEL-12420:
-----------------------------------
    Summary: Swagger definition broken when working with dataType array  (was: 
Swagger definition )

> Swagger definition broken when working with dataType array
> ----------------------------------------------------------
>
>                 Key: CAMEL-12420
>                 URL: https://issues.apache.org/jira/browse/CAMEL-12420
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-swagger
>    Affects Versions: 2.21.0
>         Environment: {code:xml}
> <spring-boot.version>1.5.10.RELEASE</spring-boot.version>
> <camel.version>2.21.0</camel.version>
> <dependency>
>       <groupId>org.apache.camel</groupId>
>       <artifactId>camel-spring-boot-starter</artifactId>
>       <version>${camel.version}</version>
> </dependency>
> <dependency>
>       <groupId>org.apache.camel</groupId>
>       <artifactId>camel-swagger-java-starter</artifactId>
>       <version>${camel.version}</version>
> </dependency>
> {code}
> {code:sh}
> java -version
> openjdk version "1.8.0_162"
> OpenJDK Runtime Environment (build 1.8.0_162-8u162-b12-0ubuntu0.16.04.2-b12)
> OpenJDK 64-Bit Server VM (build 25.162-b12, mixed mode)
> {code}
>            Reporter: Johan Karlsson
>            Priority: Minor
>
> I've created two gists. 
> [This first 
> gist|https://gist.github.com/hochas/10e1f65531211672de03d018e42447df] is 
> generated by _camel-swagger-java:2.21.0_ and is broken
> Copy the contents and paste into the [Swagger 
> Editor|http://editor.swagger.io/]. See field _identification_ under 
> _/classifier_ which according to the editor is broken.
> [This second 
> gist](https://gist.github.com/hochas/1218ef7a14da509f7079c1f5e098b53c) is 
> modified by hand and displays the field _identification_ as expected. 
> The difference is at [line 
> 74|https://gist.github.com/hochas/1218ef7a14da509f7079c1f5e098b53c#file-camel-swagger-working-json-L74].
>  The enum type in the broken version, [line 
> 76|https://gist.github.com/hochas/10e1f65531211672de03d018e42447df#file-camel-swagger-broken-json-L76],
>  should be inside  the `items` object, according to [this 
> issue|https://github.com/swagger-api/swagger-ui/issues/4400] at swagger-ui.
> This current behavior [seems to have been 
> correct|https://github.com/swagger-api/swagger-ui/issues/685] some time back.
> This is the related parameter that I am creating in my camel route using the 
> DSL:
> {code:java}
> parameters.add(new RestOperationParamDefinition()
>               .name("identification")
>               .type(RestParamType.query)
>               .required(true)
>               .description("The types of identification to include")
>               .allowableValues(IdentificationType.getAllTypes())
>               .collectionFormat(CollectionFormat.csv)
>               .dataType("array")
>               .arrayType("string"));
> {code}
> If it helps, here is the entirety of the route:
> {code:java}
> public class ClassifierRoute extends RouteBuilder {
>       
>       @Override
>       public void configure() throws Exception {
>               rest("/classifier")
>                       .description("MatchX Classifier REST API")
>                       .id("Classifier route")
>                       .get()
>                               .description("Gets classifiers based on 
> supplied parameters")
>                               .produces(MediaType.APPLICATION_JSON)
>                               .outType(Identification.class)
>                               .responseMessage()
>                                       .code(200)
>                                       .message("Returns a result set in JSON 
> format")
>                                       .endResponseMessage()
>                               .responseMessage()
>                                       .code(400)
>                                       .message("The supplied query is 
> invalid")
>                                       .endResponseMessage()
>                               .params(addParameters())
>                               .to("direct:algorithmMatch");
>               
>               from("direct:algorithmMatch")
>                       .bean(ClassifierMediator.class, 
> "getAlgorithmMatchCount")
>                       .marshal()
>                               .json(JsonLibrary.Jackson);
>       }
>       private List<RestOperationParamDefinition> addParameters() {
>               List<RestOperationParamDefinition> parameters = 
> Lists.newArrayList();
>               
>               parameters.add(new RestOperationParamDefinition()
>                               .name("feature")
>                               .type(RestParamType.query)
>                               .required(false)
>                               .description("The classifier feature type.")
>                               .allowableValues(FeatureType.getAllTypes()));
>               
>               parameters.add(new RestOperationParamDefinition()
>                               .name("rating")
>                               .type(RestParamType.query)
>                               .required(true)
>                               .description("The rating of the associated 
> classifier. Takes everything up to and including this number.")
>                               .allowableValues("0", "1", "2", "3", "4")
>                               .dataType("integer"));
>               
>               parameters.add(new RestOperationParamDefinition()
>                               .name("identification")
>                               .type(RestParamType.query)
>                               .required(true)
>                               .description("The types of identification to 
> include")
>                               
> .allowableValues(IdentificationType.getAllTypes())
>                               .collectionFormat(CollectionFormat.csv)
>                               .dataType("array")
>                               .arrayType("string"));
>               
>               parameters.add(new RestOperationParamDefinition()
>                               .name("from")
>                               .type(RestParamType.query)
>                               .required(true)
>                               .dataType("string")
>                               .dataFormat("date")
>                               .description("yyyy-MM-dd"));
>               
>               parameters.add(new RestOperationParamDefinition()
>                               .name("to")
>                               .type(RestParamType.query)
>                               .required(true)
>                               .dataType("string")
>                               .dataFormat("date")
>                               .description("yyyy-MM-dd"));
>               return parameters;
>       }
> }
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to