Author: buildbot
Date: Sun Mar 31 12:23:32 2013
New Revision: 856701
Log:
Production update by buildbot for camel
Modified:
websites/production/camel/content/book-in-one-page.html
websites/production/camel/content/cache/main.pageCache
Modified: websites/production/camel/content/book-in-one-page.html
==============================================================================
--- websites/production/camel/content/book-in-one-page.html (original)
+++ websites/production/camel/content/book-in-one-page.html Sun Mar 31 12:23:32
2013
@@ -1221,7 +1221,7 @@ scalate:templateName
<pre class="code-xml">
unmarshal(edi)
</pre>
-</div></div> </td><td colspan="1" rowspan="1" class="confluenceTd"> GPL
</td><td colspan="1" rowspan="1" class="confluenceTd"> For working with EDI
parsing using the <a shape="rect" class="external-link"
href="http://milyn.codehaus.org/Smooks" rel="nofollow">Smooks library</a>. This
component is <b>deprecated</b> as Smooks now provides <a shape="rect"
class="external-link"
href="http://www.smooks.org/mediawiki/index.php?title=V1.5:Smooks_v1.5_User_Guide#Apache_Camel_Integration"
rel="nofollow">Camel integration out of the box</a> </td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"> <span class="error">[Spring
Neo4j]</span> / camel-spring-neo4j in <a shape="rect" class="external-link"
href="http://code.google.com/p/camel-extra/" rel="nofollow">camel-extra</a>
+</div></div> </td><td colspan="1" rowspan="1" class="confluenceTd"> GPL
</td><td colspan="1" rowspan="1" class="confluenceTd"> For working with EDI
parsing using the <a shape="rect" class="external-link"
href="http://milyn.codehaus.org/Smooks" rel="nofollow">Smooks library</a>. This
component is <b>deprecated</b> as Smooks now provides <a shape="rect"
class="external-link"
href="http://www.smooks.org/mediawiki/index.php?title=V1.5:Smooks_v1.5_User_Guide#Apache_Camel_Integration"
rel="nofollow">Camel integration out of the box</a> </td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"> <a shape="rect"
href="spring-neo4j.html" title="Spring Neo4j">Spring Neo4j</a> /
camel-spring-neo4j in <a shape="rect" class="external-link"
href="http://code.google.com/p/camel-extra/" rel="nofollow">camel-extra</a>
<div class="code panel" style="border-width: 1px;"><div class="codeContent
panelContent">
<pre class="code-xml">
spring-neo4j:http://hostname[:port]/database[?options]
@@ -12251,6 +12251,93 @@ from(<span class="code-quote">"direct:in
</div></div>
<p>The line above will exclude fields annotated with <tt>@ExcludeAge</tt> when
marshalling to JSON.</p>
+
+<h3><a shape="rect"
name="BookInOnePage-Configuringfieldnamingpolicy"></a>Configuring field naming
policy</h3>
+<p><b>Available as of Camel 2.11</b></p>
+
+<p>The GSON library supports specifying policies and strategies for mapping
from json to POJO fields. A common naming convention is to map json fields
using lower case with underscores. </p>
+
+<p>We may have this JSON string</p>
+<div class="code panel" style="border-width: 1px;"><div class="codeContent
panelContent">
+<pre class="code-java">
+{
+ <span class="code-quote">"id"</span> : 123,
+ <span class="code-quote">"first_name"</span> : <span
class="code-quote">"Donald"</span>
+ <span class="code-quote">"last_name"</span> : <span
class="code-quote">"Duck"</span>
+}
+</pre>
+</div></div>
+
+<p>Which we want to map to a POJO that has getter/setters as</p>
+<div class="code panel" style="border-width: 1px;"><div class="codeContent
panelContent">
+<pre class="code-java">
+<span class="code-keyword">public</span> class PersonPojo {
+
+ <span class="code-keyword">private</span> <span
class="code-object">int</span> id;
+ <span class="code-keyword">private</span> <span
class="code-object">String</span> firstName;
+ <span class="code-keyword">private</span> <span
class="code-object">String</span> lastName;
+
+ <span class="code-keyword">public</span> <span
class="code-object">int</span> getId() {
+ <span class="code-keyword">return</span> id;
+ }
+
+ <span class="code-keyword">public</span> void setId(<span
class="code-object">int</span> id) {
+ <span class="code-keyword">this</span>.id = id;
+ }
+
+ <span class="code-keyword">public</span> <span
class="code-object">String</span> getFirstName() {
+ <span class="code-keyword">return</span> firstName;
+ }
+
+ <span class="code-keyword">public</span> void setFirstName(<span
class="code-object">String</span> firstName) {
+ <span class="code-keyword">this</span>.firstName = firstName;
+ }
+
+ <span class="code-keyword">public</span> <span
class="code-object">String</span> getLastName() {
+ <span class="code-keyword">return</span> lastName;
+ }
+
+ <span class="code-keyword">public</span> void setLastName(<span
class="code-object">String</span> lastName) {
+ <span class="code-keyword">this</span>.lastName = lastName;
+ }
+}
+</pre>
+</div></div>
+
+<p>Then we can configure the
<tt>org.apache.camel.component.gson.GsonDataFormat</tt> in a Spring XML files
as shown below. Notice we use <tt>fieldNamingPolicy</tt> property to set the
field mapping. This property is an enum from GSon
<tt>com.google.gson.FieldNamingPolicy</tt> which has a number of pre defined
mappings. If you need full control you can use the property
<tt>FieldNamingStrategy</tt> and implement a custom
<tt>com.google.gson.FieldNamingStrategy</tt> where you can control the
mapping.</p>
+
+<div class="code panel" style="border-width: 1px;"><div class="codeContent
panelContent">
+<pre class="code-java">
+ <!-- define the gson data format, where we configure the data format
using the properties -->
+ <bean id=<span class="code-quote">"gson"</span> class=<span
class="code-quote">"org.apache.camel.component.gson.GsonDataFormat"</span>>
+ <!-- we want to unmarshal to person pojo -->
+ <property name=<span class="code-quote">"unmarshalType"</span>
value=<span
class="code-quote">"org.apache.camel.component.gson.PersonPojo"</span>/>
+ <!-- we want to map fields to use lower <span
class="code-keyword">case</span> and underscores -->
+ <property name=<span class="code-quote">"fieldNamingPolicy"</span>
value=<span class="code-quote">"LOWER_CASE_WITH_UNDERSCORES"</span>/>
+ </bean>
+</pre>
+</div></div>
+
+<p>And use it in Camel routes by referring to its bean id as shown:</p>
+<div class="code panel" style="border-width: 1px;"><div class="codeContent
panelContent">
+<pre class="code-java">
+ <camelContext xmlns=<span class="code-quote">"http:<span
class="code-comment">//camel.apache.org/schema/spring"</span>>
+</span>
+ <route>
+ <from uri=<span class="code-quote">"direct:inPojo"</span>/>
+ <marshal ref=<span class="code-quote">"gson"</span>/>
+ </route>
+
+ <route>
+ <from uri=<span class="code-quote">"direct:backPojo"</span>/>
+ <unmarshal ref=<span class="code-quote">"gson"</span>/>
+ </route>
+
+ </camelContext>
+</pre>
+</div></div>
+
+
<h3><a shape="rect"
name="BookInOnePage-DependenciesforXStream"></a>Dependencies for XStream</h3>
<p>To use JSON in your camel routes you need to add the a dependency on
<b>camel-xstream</b> which implements this data format. </p>
Modified: websites/production/camel/content/cache/main.pageCache
==============================================================================
Binary files - no diff available.