Author: buildbot Date: Sun Dec 21 15:18:09 2014 New Revision: 933558 Log: Production update by buildbot for camel
Modified: websites/production/camel/content/cache/main.pageCache websites/production/camel/content/rest-dsl.html Modified: websites/production/camel/content/cache/main.pageCache ============================================================================== Binary files - no diff available. Modified: websites/production/camel/content/rest-dsl.html ============================================================================== --- websites/production/camel/content/rest-dsl.html (original) +++ websites/production/camel/content/rest-dsl.html Sun Dec 21 15:18:09 2014 @@ -274,7 +274,15 @@ public class UserPojo { exchange.getIn().setHeader(Exchange.HTTP_RESPONSE_CODE, 400); } }]]></script> -</div></div><p>In the UserErrorService bean we build our custom error message, and set the HTTP error code to 400. This is important, as that tells rest-dsl that this is a custom error message, and the message should not use the output pojo binding (eg would otherwise bind to CountryPojo).</p><h3 id="RestDSL-IntegrationaCamelcomponentwithRestDSL">Integration a Camel component with Rest DSL</h3><p>Any Apache Camel component can integrate with the Rest DSL if they can be used as a REST service (eg as a REST consumer in Camel lingo). To integrate with the Rest DSL, then the component should implement the <code>org.apache.camel.spi.RestConsumerFactory</code>. The Rest DSL will then invoke the <code>createConsumer</code> method when it setup the Camel routes from the defined DSL. The component should then implement logic to create a Camel consumer that exposes the REST services based on the given parameters, such as path, verb, and other options. For example see the source code for camel-restlet, camel-spark-rest.</p><h3 id="RestDSL-SwaggerAPI">Swagger API</h3><p>The Rest DSL supports <a shape="rect" href="swagger.html">Swagger</a> by the <code>camel-swagger</code> module. See more details at  <a shape="rect" href="swagger.html">Swagger</a> and the <code>camel-example-servlet-rest-tomcat</code> example from the Apache Camel distribution.</p><h3 id="RestDSL-SeeAlso">See Also</h3><ul><li><a shape="rect" href="dsl.html">DSL</a></li><li><a shape="rect" href="rest.html">Rest</a></li><li><a shape="rect" href="swagger.html">Swagger</a></li><li><a shape="rect" href="spark-rest.html">Spark-rest</a></li><li><a shape="rect" href="how-do-i-import-rests-from-other-xml-files.html">How do I import rests from other XML files</a></li></ul></div> +</div></div><p>In the UserErrorService bean we build our custom error message, and set the HTTP error code to 400. This is important, as that tells rest-dsl that this is a custom error message, and the message should not use the output pojo binding (eg would otherwise bind to CountryPojo).</p><h3 id="RestDSL-CatchingJsonParserExceptionandreturningacustomerrormessage">Catching JsonParserException and returning a custom error message</h3><p>From <strong>Camel 2.14.1</strong> onwards you return a custom message as-is (see previous section). So we can leverage this with Camel error handler to catch JsonParserException, handle that exception and build our custom response message. For example to return a HTTP error code 400 with a hardcoded message, we can do as shown below:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[onException(JsonParseException.class) + .handled(true) + .setHeader(Exchange.HTTP_RESPONSE_CODE, constant(400)) + .setHeader(Exchange.HTTP_CONTENT_TYPE, constant("text/plain")) + .setBody().constant("Invalid json data"); + +]]></script> +</div></div><p> </p><h3 id="RestDSL-IntegrationaCamelcomponentwithRestDSL">Integration a Camel component with Rest DSL</h3><p>Any Apache Camel component can integrate with the Rest DSL if they can be used as a REST service (eg as a REST consumer in Camel lingo). To integrate with the Rest DSL, then the component should implement the <code>org.apache.camel.spi.RestConsumerFactory</code>. The Rest DSL will then invoke the <code>createConsumer</code> method when it setup the Camel routes from the defined DSL. The component should then implement logic to create a Camel consumer that exposes the REST services based on the given parameters, such as path, verb, and other options. For example see the source code for camel-restlet, camel-spark-rest.</p><h3 id="RestDSL-SwaggerAPI">Swagger API</h3><p>The Rest DSL supports <a shape="rect" href="swagger.html">Swagger</a> by the <code>camel-swagger</code> module. See more details at  <a shape="rect" href="swagger.htm l">Swagger</a> and the <code>camel-example-servlet-rest-tomcat</code> example from the Apache Camel distribution.</p><h3 id="RestDSL-SeeAlso">See Also</h3><ul><li><a shape="rect" href="dsl.html">DSL</a></li><li><a shape="rect" href="rest.html">Rest</a></li><li><a shape="rect" href="swagger.html">Swagger</a></li><li><a shape="rect" href="spark-rest.html">Spark-rest</a></li><li><a shape="rect" href="how-do-i-import-rests-from-other-xml-files.html">How do I import rests from other XML files</a></li></ul></div> </td> <td valign="top"> <div class="navigation">