You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2016/08/26 16:02:30 UTC
[02/23] camel git commit: CAMEL-10164: swagger component for making
rest calls with swagger schema validation and facade to actual HTTP client in
use
CAMEL-10164: swagger component for making rest calls with swagger schema validation and facade to actual HTTP client in use
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/bf49e363
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/bf49e363
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/bf49e363
Branch: refs/heads/master
Commit: bf49e3631b0e1b1ba60286674baef2aedfbea4ec
Parents: b05fd50
Author: Claus Ibsen <da...@apache.org>
Authored: Fri Aug 26 16:26:53 2016 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Aug 26 16:53:31 2016 +0200
----------------------------------------------------------------------
.../camel/component/rest/RestComponent.java | 4 ++
.../model/rest/RestConfigurationDefinition.java | 61 ++++++++++++++++----
.../org/apache/camel/spi/RestConfiguration.java | 22 +++++++
.../producer/JettyRestProducerApiDocTest.java | 4 +-
.../JettyRestProducerInvalidApiDocTest.java | 4 +-
.../producer/RestSwaggerGetUriParamTest.java | 4 +-
6 files changed, 81 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/bf49e363/camel-core/src/main/java/org/apache/camel/component/rest/RestComponent.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/component/rest/RestComponent.java b/camel-core/src/main/java/org/apache/camel/component/rest/RestComponent.java
index f8245c6..4fb3d4e 100644
--- a/camel-core/src/main/java/org/apache/camel/component/rest/RestComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/rest/RestComponent.java
@@ -101,6 +101,10 @@ public class RestComponent extends UriEndpointComponent {
}
answer.setComponentName(name);
}
+ // if no explicit producer api was given, then fallback and use default configured
+ if (answer.getApiDoc() == null && getCamelContext().getRestConfiguration() != null) {
+ answer.setApiDoc(getCamelContext().getRestConfiguration().getProducerApiDoc());
+ }
return answer;
}
http://git-wip-us.apache.org/repos/asf/camel/blob/bf49e363/camel-core/src/main/java/org/apache/camel/model/rest/RestConfigurationDefinition.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/rest/RestConfigurationDefinition.java b/camel-core/src/main/java/org/apache/camel/model/rest/RestConfigurationDefinition.java
index dec2901..fe5327e 100644
--- a/camel-core/src/main/java/org/apache/camel/model/rest/RestConfigurationDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/rest/RestConfigurationDefinition.java
@@ -42,10 +42,10 @@ public class RestConfigurationDefinition {
@XmlAttribute
private String component;
- @XmlAttribute @Metadata(defaultValue = "swagger")
+ @XmlAttribute @Metadata(label = "consumer", defaultValue = "swagger")
private String apiComponent;
- @XmlAttribute
+ @XmlAttribute @Metadata(label = "producer")
private String producerComponent;
@XmlAttribute
@@ -57,22 +57,25 @@ public class RestConfigurationDefinition {
@XmlAttribute
private String port;
- @XmlAttribute
+ @XmlAttribute @Metadata(label = "producer")
+ private String producerApiDoc;
+
+ @XmlAttribute @Metadata(label = "consumer")
private String contextPath;
- @XmlAttribute
+ @XmlAttribute @Metadata(label = "consumer")
private String apiContextPath;
- @XmlAttribute
+ @XmlAttribute @Metadata(label = "consumer")
private String apiContextRouteId;
- @XmlAttribute
+ @XmlAttribute @Metadata(label = "consumer")
private String apiContextIdPattern;
- @XmlAttribute
+ @XmlAttribute @Metadata(label = "consumer")
private Boolean apiContextListing;
- @XmlAttribute
+ @XmlAttribute @Metadata(label = "consumer")
private RestHostNameResolver hostNameResolver;
@XmlAttribute @Metadata(defaultValue = "off")
@@ -81,7 +84,7 @@ public class RestConfigurationDefinition {
@XmlAttribute
private Boolean skipBindingOnErrorCode;
- @XmlAttribute
+ @XmlAttribute @Metadata(label = "consumer")
private Boolean enableCORS;
@XmlAttribute
@@ -96,16 +99,16 @@ public class RestConfigurationDefinition {
@XmlElement(name = "endpointProperty")
private List<RestPropertyDefinition> endpointProperties = new ArrayList<RestPropertyDefinition>();
- @XmlElement(name = "consumerProperty")
+ @XmlElement(name = "consumerProperty") @Metadata(label = "consumer")
private List<RestPropertyDefinition> consumerProperties = new ArrayList<RestPropertyDefinition>();
@XmlElement(name = "dataFormatProperty")
private List<RestPropertyDefinition> dataFormatProperties = new ArrayList<RestPropertyDefinition>();
- @XmlElement(name = "apiProperty")
+ @XmlElement(name = "apiProperty") @Metadata(label = "consumer")
private List<RestPropertyDefinition> apiProperties = new ArrayList<RestPropertyDefinition>();
- @XmlElement(name = "corsHeaders")
+ @XmlElement(name = "corsHeaders") @Metadata(label = "consumer")
private List<RestPropertyDefinition> corsHeaders = new ArrayList<RestPropertyDefinition>();
public String getComponent() {
@@ -185,6 +188,23 @@ public class RestConfigurationDefinition {
this.port = port;
}
+ public String getProducerApiDoc() {
+ return producerApiDoc;
+ }
+
+ /**
+ * Sets the location of the api document (swagger api) the REST producer will use
+ * to validate the REST uri and query parameters are valid accordingly to the api document.
+ * This requires adding camel-swagger-java to the classpath, and any miss configuration
+ * will let Camel fail on startup and report the error(s).
+ * <p/>
+ * The location of the api document is loaded from classpath by default, but you can use
+ * <tt>file:</tt> or <tt>http:</tt> to refer to resources to load from file or http url.
+ */
+ public void setProducerApiDoc(String producerApiDoc) {
+ this.producerApiDoc = producerApiDoc;
+ }
+
public String getContextPath() {
return contextPath;
}
@@ -472,6 +492,20 @@ public class RestConfigurationDefinition {
}
/**
+ * Sets the location of the api document (swagger api) the REST producer will use
+ * to validate the REST uri and query parameters are valid accordingly to the api document.
+ * This requires adding camel-swagger-java to the classpath, and any miss configuration
+ * will let Camel fail on startup and report the error(s).
+ * <p/>
+ * The location of the api document is loaded from classpath by default, but you can use
+ * <tt>file:</tt> or <tt>http:</tt> to refer to resources to load from file or http url.
+ */
+ public RestConfigurationDefinition producerApiDoc(String apiDoc) {
+ setProducerApiDoc(apiDoc);
+ return this;
+ }
+
+ /**
* Sets a leading context-path the REST services will be using.
* <p/>
* This can be used when using components such as <tt>camel-servlet</tt> where the deployed web application
@@ -681,6 +715,9 @@ public class RestConfigurationDefinition {
if (port != null) {
answer.setPort(CamelContextHelper.parseInteger(context, port));
}
+ if (producerApiDoc != null) {
+ answer.setProducerApiDoc(CamelContextHelper.parseText(context, producerApiDoc));
+ }
if (apiContextPath != null) {
answer.setApiContextPath(CamelContextHelper.parseText(context, apiContextPath));
}
http://git-wip-us.apache.org/repos/asf/camel/blob/bf49e363/camel-core/src/main/java/org/apache/camel/spi/RestConfiguration.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/spi/RestConfiguration.java b/camel-core/src/main/java/org/apache/camel/spi/RestConfiguration.java
index 0a71ba6..c90ba8d 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/RestConfiguration.java
+++ b/camel-core/src/main/java/org/apache/camel/spi/RestConfiguration.java
@@ -40,6 +40,7 @@ public class RestConfiguration {
private String component;
private String apiComponent;
private String producerComponent;
+ private String producerApiDoc;
private String scheme;
private String host;
private int port;
@@ -116,6 +117,27 @@ public class RestConfiguration {
}
/**
+ * Gets the location of the api document (swagger api) the REST producer will use
+ * to validate the REST uri and query parameters are valid accordingly to the api document.
+ */
+ public String getProducerApiDoc() {
+ return producerApiDoc;
+ }
+
+ /**
+ * Sets the location of the api document (swagger api) the REST producer will use
+ * to validate the REST uri and query parameters are valid accordingly to the api document.
+ * This requires adding camel-swagger-java to the classpath, and any miss configuration
+ * will let Camel fail on startup and report the error(s).
+ * <p/>
+ * The location of the api document is loaded from classpath by default, but you can use
+ * <tt>file:</tt> or <tt>http:</tt> to refer to resources to load from file or http url.
+ */
+ public void setProducerApiDoc(String producerApiDoc) {
+ this.producerApiDoc = producerApiDoc;
+ }
+
+ /**
* Gets the hostname to use by the REST consumer
*
* @return the hostname, or <tt>null</tt> to use default hostname
http://git-wip-us.apache.org/repos/asf/camel/blob/bf49e363/components/camel-jetty9/src/test/java/org/apache/camel/component/jetty/rest/producer/JettyRestProducerApiDocTest.java
----------------------------------------------------------------------
diff --git a/components/camel-jetty9/src/test/java/org/apache/camel/component/jetty/rest/producer/JettyRestProducerApiDocTest.java b/components/camel-jetty9/src/test/java/org/apache/camel/component/jetty/rest/producer/JettyRestProducerApiDocTest.java
index ede12e5..c3f0824 100644
--- a/components/camel-jetty9/src/test/java/org/apache/camel/component/jetty/rest/producer/JettyRestProducerApiDocTest.java
+++ b/components/camel-jetty9/src/test/java/org/apache/camel/component/jetty/rest/producer/JettyRestProducerApiDocTest.java
@@ -34,10 +34,10 @@ public class JettyRestProducerApiDocTest extends BaseJettyTest {
@Override
public void configure() throws Exception {
// configure to use localhost with the given port
- restConfiguration().component("jetty").host("localhost").port(getPort());
+ restConfiguration().component("jetty").host("localhost").port(getPort()).producerApiDoc("hello-api.json");
from("direct:start")
- .to("rest:get:api/hello/hi/{name}?apiDoc=hello-api.json");
+ .to("rest:get:api:hello/hi/{name}");
// use the rest DSL to define the rest services
rest("/api/")
http://git-wip-us.apache.org/repos/asf/camel/blob/bf49e363/components/camel-jetty9/src/test/java/org/apache/camel/component/jetty/rest/producer/JettyRestProducerInvalidApiDocTest.java
----------------------------------------------------------------------
diff --git a/components/camel-jetty9/src/test/java/org/apache/camel/component/jetty/rest/producer/JettyRestProducerInvalidApiDocTest.java b/components/camel-jetty9/src/test/java/org/apache/camel/component/jetty/rest/producer/JettyRestProducerInvalidApiDocTest.java
index 9711dab..7cc3353 100644
--- a/components/camel-jetty9/src/test/java/org/apache/camel/component/jetty/rest/producer/JettyRestProducerInvalidApiDocTest.java
+++ b/components/camel-jetty9/src/test/java/org/apache/camel/component/jetty/rest/producer/JettyRestProducerInvalidApiDocTest.java
@@ -55,10 +55,10 @@ public class JettyRestProducerInvalidApiDocTest extends CamelTestSupport {
@Override
public void configure() throws Exception {
// configure to use localhost with the given port
- restConfiguration().component("jetty").host("localhost");
+ restConfiguration().component("jetty").host("localhost").producerApiDoc("hello-api.json");
from("direct:start")
- .to("rest:get:api/bye/?unknown={name}&apiDoc=hello-api.json");
+ .to("rest:get:api/bye/?unknown={name}");
}
});
http://git-wip-us.apache.org/repos/asf/camel/blob/bf49e363/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/producer/RestSwaggerGetUriParamTest.java
----------------------------------------------------------------------
diff --git a/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/producer/RestSwaggerGetUriParamTest.java b/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/producer/RestSwaggerGetUriParamTest.java
index 7bd7fe7..53fe043 100644
--- a/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/producer/RestSwaggerGetUriParamTest.java
+++ b/components/camel-swagger-java/src/test/java/org/apache/camel/swagger/producer/RestSwaggerGetUriParamTest.java
@@ -45,10 +45,10 @@ public class RestSwaggerGetUriParamTest extends CamelTestSupport {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
- restConfiguration().producerComponent("dummy");
+ restConfiguration().producerComponent("dummy").producerApiDoc("hello-api.json");
from("direct:start")
- .to("rest:get:bye?name={name}&apiDoc=hello-api.json")
+ .to("rest:get:bye?name={name}")
.to("mock:result");
}
};