You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Zoran Regvart (JIRA)" <ji...@apache.org> on 2018/04/04 13:10:00 UTC

[jira] [Assigned] (CAMEL-12420) Swagger definition broken when working with dataType array

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

Zoran Regvart reassigned CAMEL-12420:
-------------------------------------

    Assignee: Zoran Regvart

> 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
>            Assignee: Zoran Regvart
>            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)