You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2016/01/27 13:55:50 UTC

camel git commit: Added camel-bean-validator docs to gitbook

Repository: camel
Updated Branches:
  refs/heads/master ab7aca061 -> 1d20e3314


Added camel-bean-validator docs to gitbook


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

Branch: refs/heads/master
Commit: 1d20e33140826f1945ab579095635110b62ef95d
Parents: ab7aca0
Author: Andrea Cosentino <an...@gmail.com>
Authored: Wed Jan 27 13:54:53 2016 +0100
Committer: Andrea Cosentino <an...@gmail.com>
Committed: Wed Jan 27 13:54:53 2016 +0100

----------------------------------------------------------------------
 .../src/main/docs/bean-validator.adoc           | 250 +++++++++++++++++++
 docs/user-manual/en/SUMMARY.md                  |   1 +
 2 files changed, 251 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/1d20e331/components/camel-bean-validator/src/main/docs/bean-validator.adoc
----------------------------------------------------------------------
diff --git a/components/camel-bean-validator/src/main/docs/bean-validator.adoc b/components/camel-bean-validator/src/main/docs/bean-validator.adoc
new file mode 100644
index 0000000..bd19b79
--- /dev/null
+++ b/components/camel-bean-validator/src/main/docs/bean-validator.adoc
@@ -0,0 +1,250 @@
+[[BeanValidator-BeanValidatorComponent]]
+Bean Validator Component
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+*Available as of Camel 2.3*
+
+The Validator component performs bean validation of the message body
+using the Java Bean Validation API
+(http://jcp.org/en/jsr/detail?id=303[JSR 303]). Camel uses the reference
+implementation, which is
+http://docs.jboss.org/hibernate/validator/4.3/reference/en-US/html_single/[Hibernate
+Validator].
+
+Maven users will need to add the following dependency to their `pom.xml`
+for this component:
+
+[source,xml]
+------------------------------------------------------------
+<dependency>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-bean-validator</artifactId>
+    <version>x.y.z</version>
+    <!-- use the same version as your Camel core version -->
+</dependency>
+------------------------------------------------------------
+
+[[BeanValidator-URIformat]]
+URI format
+^^^^^^^^^^
+
+[source,java]
+------------------------------
+bean-validator:label[?options]
+------------------------------
+
+or
+
+[source,java]
+--------------------------------
+bean-validator://label[?options]
+--------------------------------
+
+Where *label* is an arbitrary text value describing the endpoint. +
+ You can append query options to the URI in the following format,
+?option=value&option=value&...
+
+[[BeanValidator-URIOptions]]
+URI Options
+^^^^^^^^^^^
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Option |Default |Description
+
+|`group` |`javax.validation.groups.Default` |The custom validation group to use.
+
+|`validationProviderResolver` |Depends on JSR303 jar provided. |Camel *2.13.0*: Reference to a custom
+`javax.validation.ValidationProviderResolver` in the
+link:registry.html[Registry].
+
+|`messageInterpolator` |`org.hibernate.validator.engine.ResourceBundleMessageInterpolator` |Reference to a custom `javax.validation.MessageInterpolator` in the
+link:registry.html[Registry].
+
+|`traversableResolver` |`org.hibernate.validator.engine.resolver.DefaultTraversableResolver` |Reference to a custom `javax.validation.TraversableResolver` in the
+link:registry.html[Registry].
+
+|`constraintValidatorFactory` |`org.hibernate.validator.engine.ConstraintValidatorFactoryImpl` |Reference to a custom `javax.validation.ConstraintValidatorFactory` in
+the link:registry.html[Registry].
+|=======================================================================
+
+[[BeanValidator-OSGideployment]]
+OSGi deployment
+^^^^^^^^^^^^^^^
+
+To use Hibernate Validator in the OSGi environment use dedicated
+`ValidationProviderResolver` implementation, just as
+`org.apache.camel.component.bean.validator.HibernateValidationProviderResolver`.
+The snippet below demonstrates this approach. Keep in mind that you can
+use `HibernateValidationProviderResolver` starting from the Camel
+2.13.0.
+
+*Using HibernateValidationProviderResolver*
+
+[source,java]
+--------------------------------------------------------------------------------------------------------------------------------
+from("direct:test").
+  to("bean-validator://ValidationProviderResolverTest?validationProviderResolver=#myValidationProviderResolver");
+
+...
+
+<bean id="myValidationProviderResolver" class="org.apache.camel.component.bean.validator.HibernateValidationProviderResolver"/> 
+--------------------------------------------------------------------------------------------------------------------------------
+
+If no customĀ `ValidationProviderResolver` is defined and the validator
+component has been deployed into the OSGi environment,
+theĀ `HibernateValidationProviderResolver` will be automatically used.
+
+[[BeanValidator-Example]]
+Example
+^^^^^^^
+
+Assumed we have a java bean with the following annotations
+
+*Car.java*
+
+[source,java]
+-----------------------------------------------------------
+public class Car {
+
+    @NotNull
+    private String manufacturer;
+
+    @NotNull
+    @Size(min = 5, max = 14, groups = OptionalChecks.class)
+    private String licensePlate;
+    
+    // getter and setter
+}
+-----------------------------------------------------------
+
+and an interface definition for our custom validation group
+
+*OptionalChecks.java*
+
+[source,java]
+---------------------------------
+public interface OptionalChecks {
+}
+---------------------------------
+
+with the following Camel route, only the *@NotNull* constraints on the
+attributes manufacturer and licensePlate will be validated (Camel uses
+the default group `javax.validation.groups.Default`).
+
+[source,java]
+-------------------------
+from("direct:start")
+.to("bean-validator://x")
+.to("mock:end")
+-------------------------
+
+If you want to check the constraints from the group `OptionalChecks`,
+you have to define the route like this
+
+[source,java]
+----------------------------------------------
+from("direct:start")
+.to("bean-validator://x?group=OptionalChecks")
+.to("mock:end")
+----------------------------------------------
+
+If you want to check the constraints from both groups, you have to
+define a new interface first
+
+*AllChecks.java*
+
+[source,java]
+-----------------------------------------------------
+@GroupSequence({Default.class, OptionalChecks.class})
+public interface AllChecks {
+}
+-----------------------------------------------------
+
+and then your route definition should looks like this
+
+[source,java]
+-----------------------------------------
+from("direct:start")
+.to("bean-validator://x?group=AllChecks")
+.to("mock:end")
+-----------------------------------------
+
+And if you have to provide your own message interpolator, traversable
+resolver and constraint validator factory, you have to write a route
+like this
+
+[source,java]
+------------------------------------------------------------------------------------------------------
+<bean id="myMessageInterpolator" class="my.ConstraintValidatorFactory" />
+<bean id="myTraversableResolver" class="my.TraversableResolver" />
+<bean id="myConstraintValidatorFactory" class="my.ConstraintValidatorFactory" />
+
+from("direct:start")
+.to("bean-validator://x?group=AllChecks&messageInterpolator=#myMessageInterpolator
+&traversableResolver=#myTraversableResolver&constraintValidatorFactory=#myConstraintValidatorFactory")
+.to("mock:end")
+------------------------------------------------------------------------------------------------------
+
+It's also possible to describe your constraints as XML and not as Java
+annotations. In this case, you have to provide the file
+`META-INF/validation.xml` which could looks like this
+
+*validation.xml*
+
+[source,java]
+------------------------------------------------------------------------------------------------------------------------------
+<?xml version="1.0" encoding="UTF-8"?>
+<validation-config
+    xmlns="http://jboss.org/xml/ns/javax/validation/configuration"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/configuration">
+    <default-provider>org.hibernate.validator.HibernateValidator</default-provider>
+    <message-interpolator>org.hibernate.validator.engine.ResourceBundleMessageInterpolator</message-interpolator>
+    <traversable-resolver>org.hibernate.validator.engine.resolver.DefaultTraversableResolver</traversable-resolver>
+    <constraint-validator-factory>org.hibernate.validator.engine.ConstraintValidatorFactoryImpl</constraint-validator-factory>
+    
+    <constraint-mapping>/constraints-car.xml</constraint-mapping>
+</validation-config>
+------------------------------------------------------------------------------------------------------------------------------
+
+and the `constraints-car.xml` file
+
+*constraints-car.xml*
+
+[source,java]
+----------------------------------------------------------------------------------------------------
+<?xml version="1.0" encoding="UTF-8"?>
+<constraint-mappings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/mapping validation-mapping-1.0.xsd"
+    xmlns="http://jboss.org/xml/ns/javax/validation/mapping">
+    <default-package>org.apache.camel.component.bean.validator</default-package>
+    
+    <bean class="CarWithoutAnnotations" ignore-annotations="true">
+        <field name="manufacturer">
+            <constraint annotation="javax.validation.constraints.NotNull" />
+        </field>
+        
+        <field name="licensePlate">
+            <constraint annotation="javax.validation.constraints.NotNull" />
+            
+            <constraint annotation="javax.validation.constraints.Size">
+                <groups>
+                    <value>org.apache.camel.component.bean.validator.OptionalChecks</value>
+                </groups>
+                <element name="min">5</element>
+                <element name="max">14</element>
+            </constraint>
+        </field>
+    </bean>
+</constraint-mappings>
+----------------------------------------------------------------------------------------------------
+
+[[BeanValidator-SeeAlso]]
+See Also
+^^^^^^^^
+
+* link:configuring-camel.html[Configuring Camel]
+* link:component.html[Component]
+* link:endpoint.html[Endpoint]
+* link:getting-started.html[Getting Started]
+

http://git-wip-us.apache.org/repos/asf/camel/blob/1d20e331/docs/user-manual/en/SUMMARY.md
----------------------------------------------------------------------
diff --git a/docs/user-manual/en/SUMMARY.md b/docs/user-manual/en/SUMMARY.md
index 8f0cef5..7fced91 100644
--- a/docs/user-manual/en/SUMMARY.md
+++ b/docs/user-manual/en/SUMMARY.md
@@ -93,6 +93,7 @@
 	* [Base64](base64.adoc)
 	* [BeanIO](beanio.adoc)
 	* [Beanstalk](beanstalk.adoc)
+	* [Bean-validator](bean-validator.adoc)
 	* [CDI](cdi.adoc)
 	* [JMS](jms.adoc)
 	* [Metrics](metrics.adoc)