Repository: camel
Updated Branches:
  refs/heads/camel-2.18.x f476da344 -> 47fd3072b
  refs/heads/master 0aae1257b -> c3f79bfa2


CAMEL-10767 Versions of swagger-models and swag...

...ger-parser in conflict

A change was made to `swagger-modules` in `swagger-core`[1] (version
1.5.12) that changed `java.lang.Double` type with `java.math.BigDecimal`
which in turn made `swager-parser` incompatible in the version used
(1.0.22).

This was later fixed in `swagger-parser`[2] and released as version
1.0.25.

Version of `swagger-parser` updated to 1.0.25, added a test to parse the
petstore example to catch any further version mismatches.

[1] 
https://github.com/swagger-api/swagger-core/commit/208335a08cae610d3b5eaea75f5552efaf15477b
[2] 
https://github.com/swagger-api/swagger-parser/commit/d7ac638f4355cc043a14dfcd244264aa1440c627


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/c3f79bfa
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/c3f79bfa
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/c3f79bfa

Branch: refs/heads/master
Commit: c3f79bfa2ae5eba7d1c4b83acc238a1a42505276
Parents: 0aae125
Author: Zoran Regvart <[email protected]>
Authored: Mon Jan 30 18:48:16 2017 +0100
Committer: Claus Ibsen <[email protected]>
Committed: Mon Jan 30 20:51:51 2017 +0100

----------------------------------------------------------------------
 .../swagger/SwaggerRestProducerFactory.java     |  2 +-
 .../swagger/SwaggerRestProducerFactoryTest.java | 30 ++++++++++++++++++++
 .../src/test/resources/petstore.json            |  1 +
 parent/pom.xml                                  |  2 +-
 4 files changed, 33 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/c3f79bfa/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/SwaggerRestProducerFactory.java
----------------------------------------------------------------------
diff --git 
a/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/SwaggerRestProducerFactory.java
 
b/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/SwaggerRestProducerFactory.java
index 48a1124..8dd336e 100644
--- 
a/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/SwaggerRestProducerFactory.java
+++ 
b/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/SwaggerRestProducerFactory.java
@@ -84,7 +84,7 @@ public class SwaggerRestProducerFactory implements 
RestProducerFactory {
         return producer;
     }
 
-    private Swagger loadSwaggerModel(CamelContext camelContext, String apiDoc) 
throws Exception {
+    Swagger loadSwaggerModel(CamelContext camelContext, String apiDoc) throws 
Exception {
         InputStream is = resolveMandatoryResourceAsInputStream(camelContext, 
apiDoc);
         try {
             SwaggerParser parser = new SwaggerParser();

http://git-wip-us.apache.org/repos/asf/camel/blob/c3f79bfa/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/SwaggerRestProducerFactoryTest.java
----------------------------------------------------------------------
diff --git 
a/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/SwaggerRestProducerFactoryTest.java
 
b/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/SwaggerRestProducerFactoryTest.java
new file mode 100644
index 0000000..889edf4
--- /dev/null
+++ 
b/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/SwaggerRestProducerFactoryTest.java
@@ -0,0 +1,30 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.swagger;
+
+import org.apache.camel.impl.DefaultCamelContext;
+import org.junit.Test;
+
+public class SwaggerRestProducerFactoryTest {
+
+    @Test
+    public void shouldLoadSwaggerPetStoreModel() throws Exception {
+        SwaggerRestProducerFactory factory = new SwaggerRestProducerFactory();
+
+        factory.loadSwaggerModel(new DefaultCamelContext(), "petstore.json");
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/c3f79bfa/components/camel-swagger-java/src/test/resources/petstore.json
----------------------------------------------------------------------
diff --git a/components/camel-swagger-java/src/test/resources/petstore.json 
b/components/camel-swagger-java/src/test/resources/petstore.json
new file mode 100644
index 0000000..816847f
--- /dev/null
+++ b/components/camel-swagger-java/src/test/resources/petstore.json
@@ -0,0 +1 @@
+{"swagger":"2.0","info":{"description":"This is a sample server Petstore 
server.  You can find out more about Swagger at 
[http://swagger.io](http://swagger.io) or on [irc.freenode.net, 
#swagger](http://swagger.io/irc/).  For this sample, you can use the api key 
`special-key` to test the authorization 
filters.","version":"1.0.0","title":"Swagger 
Petstore","termsOfService":"http://swagger.io/terms/","contact":{"email":"[email protected]"},"license":{"name":"Apache
 
2.0","url":"http://www.apache.org/licenses/LICENSE-2.0.html"}},"host":"petstore.swagger.io","basePath":"/v2","tags":[{"name":"pet","description":"Everything
 about your Pets","externalDocs":{"description":"Find out 
more","url":"http://swagger.io"}},{"name":"store","description":"Access to 
Petstore orders"},{"name":"user","description":"Operations about 
user","externalDocs":{"description":"Find out more about our 
store","url":"http://swagger.io"}}],"schemes":["http"],"paths":{"/pet":{"post":{"tags":["pet"],"summary":"Add
 a ne
 w pet to the 
store","description":"","operationId":"addPet","consumes":["application/json","application/xml"],"produces":["application/xml","application/json"],"parameters":[{"in":"body","name":"body","description":"Pet
 object that needs to be added to the 
store","required":true,"schema":{"$ref":"#/definitions/Pet"}}],"responses":{"405":{"description":"Invalid
 
input"}},"security":[{"petstore_auth":["write:pets","read:pets"]}]},"put":{"tags":["pet"],"summary":"Update
 an existing 
pet","description":"","operationId":"updatePet","consumes":["application/json","application/xml"],"produces":["application/xml","application/json"],"parameters":[{"in":"body","name":"body","description":"Pet
 object that needs to be added to the 
store","required":true,"schema":{"$ref":"#/definitions/Pet"}}],"responses":{"400":{"description":"Invalid
 ID supplied"},"404":{"description":"Pet not 
found"},"405":{"description":"Validation 
exception"}},"security":[{"petstore_auth":["write:pets","read:pets"]}]}},"/pet
 /findByStatus":{"get":{"tags":["pet"],"summary":"Finds Pets by 
status","description":"Multiple status values can be provided with comma 
separated 
strings","operationId":"findPetsByStatus","produces":["application/xml","application/json"],"parameters":[{"name":"status","in":"query","description":"Status
 values that need to be considered for 
filter","required":true,"type":"array","items":{"type":"string","enum":["available","pending","sold"],"default":"available"},"collectionFormat":"multi"}],"responses":{"200":{"description":"successful
 
operation","schema":{"type":"array","items":{"$ref":"#/definitions/Pet"}}},"400":{"description":"Invalid
 status 
value"}},"security":[{"petstore_auth":["write:pets","read:pets"]}]}},"/pet/findByTags":{"get":{"tags":["pet"],"summary":"Finds
 Pets by tags","description":"Muliple tags can be provided with comma separated 
strings. Use tag1, tag2, tag3 for 
testing.","operationId":"findPetsByTags","produces":["application/xml","application/json"],"parameters"
 :[{"name":"tags","in":"query","description":"Tags to filter 
by","required":true,"type":"array","items":{"type":"string"},"collectionFormat":"multi"}],"responses":{"200":{"description":"successful
 
operation","schema":{"type":"array","items":{"$ref":"#/definitions/Pet"}}},"400":{"description":"Invalid
 tag 
value"}},"security":[{"petstore_auth":["write:pets","read:pets"]}],"deprecated":true}},"/pet/{petId}":{"get":{"tags":["pet"],"summary":"Find
 pet by ID","description":"Returns a single 
pet","operationId":"getPetById","produces":["application/xml","application/json"],"parameters":[{"name":"petId","in":"path","description":"ID
 of pet to 
return","required":true,"type":"integer","format":"int64"}],"responses":{"200":{"description":"successful
 
operation","schema":{"$ref":"#/definitions/Pet"}},"400":{"description":"Invalid 
ID supplied"},"404":{"description":"Pet not 
found"}},"security":[{"api_key":[]}]},"post":{"tags":["pet"],"summary":"Updates 
a pet in the store with form data","descriptio
 
n":"","operationId":"updatePetWithForm","consumes":["application/x-www-form-urlencoded"],"produces":["application/xml","application/json"],"parameters":[{"name":"petId","in":"path","description":"ID
 of pet that needs to be 
updated","required":true,"type":"integer","format":"int64"},{"name":"name","in":"formData","description":"Updated
 name of the 
pet","required":false,"type":"string"},{"name":"status","in":"formData","description":"Updated
 status of the 
pet","required":false,"type":"string"}],"responses":{"405":{"description":"Invalid
 
input"}},"security":[{"petstore_auth":["write:pets","read:pets"]}]},"delete":{"tags":["pet"],"summary":"Deletes
 a 
pet","description":"","operationId":"deletePet","produces":["application/xml","application/json"],"parameters":[{"name":"api_key","in":"header","required":false,"type":"string"},{"name":"petId","in":"path","description":"Pet
 id to 
delete","required":true,"type":"integer","format":"int64"}],"responses":{"400":{"description":"Invalid
 ID suppl
 ied"},"404":{"description":"Pet not 
found"}},"security":[{"petstore_auth":["write:pets","read:pets"]}]}},"/pet/{petId}/uploadImage":{"post":{"tags":["pet"],"summary":"uploads
 an 
image","description":"","operationId":"uploadFile","consumes":["multipart/form-data"],"produces":["application/json"],"parameters":[{"name":"petId","in":"path","description":"ID
 of pet to 
update","required":true,"type":"integer","format":"int64"},{"name":"additionalMetadata","in":"formData","description":"Additional
 data to pass to 
server","required":false,"type":"string"},{"name":"file","in":"formData","description":"file
 to 
upload","required":false,"type":"file"}],"responses":{"200":{"description":"successful
 
operation","schema":{"$ref":"#/definitions/ApiResponse"}}},"security":[{"petstore_auth":["write:pets","read:pets"]}]}},"/store/inventory":{"get":{"tags":["store"],"summary":"Returns
 pet inventories by status","description":"Returns a map of status codes to 
quantities","operationId":"getInventory","pro
 
duces":["application/json"],"parameters":[],"responses":{"200":{"description":"successful
 
operation","schema":{"type":"object","additionalProperties":{"type":"integer","format":"int32"}}}},"security":[{"api_key":[]}]}},"/store/order":{"post":{"tags":["store"],"summary":"Place
 an order for a 
pet","description":"","operationId":"placeOrder","produces":["application/xml","application/json"],"parameters":[{"in":"body","name":"body","description":"order
 placed for purchasing the 
pet","required":true,"schema":{"$ref":"#/definitions/Order"}}],"responses":{"200":{"description":"successful
 
operation","schema":{"$ref":"#/definitions/Order"}},"400":{"description":"Invalid
 Order"}}}},"/store/order/{orderId}":{"get":{"tags":["store"],"summary":"Find 
purchase order by ID","description":"For valid response try integer IDs with 
value >= 1 and <= 10. Other values will generated 
exceptions","operationId":"getOrderById","produces":["application/xml","application/json"],"parameters":[{"name":"orderId",
 "in":"path","description":"ID of pet that needs to be 
fetched","required":true,"type":"integer","maximum":10.0,"minimum":1.0,"format":"int64"}],"responses":{"200":{"description":"successful
 
operation","schema":{"$ref":"#/definitions/Order"}},"400":{"description":"Invalid
 ID supplied"},"404":{"description":"Order not 
found"}}},"delete":{"tags":["store"],"summary":"Delete purchase order by 
ID","description":"For valid response try integer IDs with positive integer 
value. Negative or non-integer values will generate API 
errors","operationId":"deleteOrder","produces":["application/xml","application/json"],"parameters":[{"name":"orderId","in":"path","description":"ID
 of the order that needs to be 
deleted","required":true,"type":"integer","minimum":1.0,"format":"int64"}],"responses":{"400":{"description":"Invalid
 ID supplied"},"404":{"description":"Order not 
found"}}}},"/user":{"post":{"tags":["user"],"summary":"Create 
user","description":"This can only be done by the logged in user.","op
 
erationId":"createUser","produces":["application/xml","application/json"],"parameters":[{"in":"body","name":"body","description":"Created
 user 
object","required":true,"schema":{"$ref":"#/definitions/User"}}],"responses":{"default":{"description":"successful
 
operation"}}}},"/user/createWithArray":{"post":{"tags":["user"],"summary":"Creates
 list of users with given input 
array","description":"","operationId":"createUsersWithArrayInput","produces":["application/xml","application/json"],"parameters":[{"in":"body","name":"body","description":"List
 of user 
object","required":true,"schema":{"type":"array","items":{"$ref":"#/definitions/User"}}}],"responses":{"default":{"description":"successful
 
operation"}}}},"/user/createWithList":{"post":{"tags":["user"],"summary":"Creates
 list of users with given input 
array","description":"","operationId":"createUsersWithListInput","produces":["application/xml","application/json"],"parameters":[{"in":"body","name":"body","description":"List
 of user obj
 
ect","required":true,"schema":{"type":"array","items":{"$ref":"#/definitions/User"}}}],"responses":{"default":{"description":"successful
 operation"}}}},"/user/login":{"get":{"tags":["user"],"summary":"Logs user into 
the 
system","description":"","operationId":"loginUser","produces":["application/xml","application/json"],"parameters":[{"name":"username","in":"query","description":"The
 user name for 
login","required":true,"type":"string"},{"name":"password","in":"query","description":"The
 password for login in clear 
text","required":true,"type":"string"}],"responses":{"200":{"description":"successful
 
operation","schema":{"type":"string"},"headers":{"X-Rate-Limit":{"type":"integer","format":"int32","description":"calls
 per hour allowed by the 
user"},"X-Expires-After":{"type":"string","format":"date-time","description":"date
 in UTC when token expires"}}},"400":{"description":"Invalid username/password 
supplied"}}}},"/user/logout":{"get":{"tags":["user"],"summary":"Logs out 
current logged
  in user 
session","description":"","operationId":"logoutUser","produces":["application/xml","application/json"],"parameters":[],"responses":{"default":{"description":"successful
 operation"}}}},"/user/{username}":{"get":{"tags":["user"],"summary":"Get user 
by user 
name","description":"","operationId":"getUserByName","produces":["application/xml","application/json"],"parameters":[{"name":"username","in":"path","description":"The
 name that needs to be fetched. Use user1 for testing. 
","required":true,"type":"string"}],"responses":{"200":{"description":"successful
 
operation","schema":{"$ref":"#/definitions/User"}},"400":{"description":"Invalid
 username supplied"},"404":{"description":"User not 
found"}}},"put":{"tags":["user"],"summary":"Updated user","description":"This 
can only be done by the logged in 
user.","operationId":"updateUser","produces":["application/xml","application/json"],"parameters":[{"name":"username","in":"path","description":"name
 that need to be updated","required":t
 rue,"type":"string"},{"in":"body","name":"body","description":"Updated user 
object","required":true,"schema":{"$ref":"#/definitions/User"}}],"responses":{"400":{"description":"Invalid
 user supplied"},"404":{"description":"User not 
found"}}},"delete":{"tags":["user"],"summary":"Delete user","description":"This 
can only be done by the logged in 
user.","operationId":"deleteUser","produces":["application/xml","application/json"],"parameters":[{"name":"username","in":"path","description":"The
 name that needs to be 
deleted","required":true,"type":"string"}],"responses":{"400":{"description":"Invalid
 username supplied"},"404":{"description":"User not 
found"}}}}},"securityDefinitions":{"petstore_auth":{"type":"oauth2","authorizationUrl":"http://petstore.swagger.io/oauth/dialog","flow":"implicit","scopes":{"write:pets":"modify
 pets in your account","read:pets":"read your 
pets"}},"api_key":{"type":"apiKey","name":"api_key","in":"header"}},"definitions":{"Order":{"type":"object","properties":{
 
"id":{"type":"integer","format":"int64"},"petId":{"type":"integer","format":"int64"},"quantity":{"type":"integer","format":"int32"},"shipDate":{"type":"string","format":"date-time"},"status":{"type":"string","description":"Order
 
Status","enum":["placed","approved","delivered"]},"complete":{"type":"boolean","default":false}},"xml":{"name":"Order"}},"Category":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"}},"xml":{"name":"Category"}},"User":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"username":{"type":"string"},"firstName":{"type":"string"},"lastName":{"type":"string"},"email":{"type":"string"},"password":{"type":"string"},"phone":{"type":"string"},"userStatus":{"type":"integer","format":"int32","description":"User
 
Status"}},"xml":{"name":"User"}},"Tag":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"}},"xml":{"name":"Tag"}},"Pet":{"type":"object","required":["
 
name","photoUrls"],"properties":{"id":{"type":"integer","format":"int64"},"category":{"$ref":"#/definitions/Category"},"name":{"type":"string","example":"doggie"},"photoUrls":{"type":"array","xml":{"name":"photoUrl","wrapped":true},"items":{"type":"string"}},"tags":{"type":"array","xml":{"name":"tag","wrapped":true},"items":{"$ref":"#/definitions/Tag"}},"status":{"type":"string","description":"pet
 status in the 
store","enum":["available","pending","sold"]}},"xml":{"name":"Pet"}},"ApiResponse":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"type":{"type":"string"},"message":{"type":"string"}}}},"externalDocs":{"description":"Find
 out more about Swagger","url":"http://swagger.io"}}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/c3f79bfa/parent/pom.xml
----------------------------------------------------------------------
diff --git a/parent/pom.xml b/parent/pom.xml
index 8806258..01d30a5 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -604,7 +604,7 @@
     <swagger-scala-guava-version>15.0</swagger-scala-guava-version>
     <swagger-scala-bundle-version>1.3.12_1</swagger-scala-bundle-version>
     <swagger-java-version>1.5.12</swagger-java-version>
-    <swagger-java-parser-version>1.0.22</swagger-java-parser-version>
+    <swagger-java-parser-version>1.0.25</swagger-java-parser-version>
     <swagger-java-guava-version>18.0</swagger-java-guava-version>
     <swagger-ui-version>2.2.8</swagger-ui-version>
     <stax-api-version>1.0.1</stax-api-version>

Reply via email to