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">
+    &lt;!-- define the gson data format, where we configure the data format 
using the properties --&gt;
+    &lt;bean id=<span class="code-quote">"gson"</span> class=<span 
class="code-quote">"org.apache.camel.component.gson.GsonDataFormat"</span>&gt;
+        &lt;!-- we want to unmarshal to person pojo --&gt;
+        &lt;property name=<span class="code-quote">"unmarshalType"</span> 
value=<span 
class="code-quote">"org.apache.camel.component.gson.PersonPojo"</span>/&gt;
+        &lt;!-- we want to map fields to use lower <span 
class="code-keyword">case</span> and underscores --&gt;
+        &lt;property name=<span class="code-quote">"fieldNamingPolicy"</span> 
value=<span class="code-quote">"LOWER_CASE_WITH_UNDERSCORES"</span>/&gt;
+    &lt;/bean&gt;
+</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">
+   &lt;camelContext xmlns=<span class="code-quote">"http:<span 
class="code-comment">//camel.apache.org/schema/spring"</span>&gt;
+</span>
+        &lt;route&gt;
+            &lt;from uri=<span class="code-quote">"direct:inPojo"</span>/&gt;
+            &lt;marshal ref=<span class="code-quote">"gson"</span>/&gt;
+        &lt;/route&gt;
+
+        &lt;route&gt;
+            &lt;from uri=<span class="code-quote">"direct:backPojo"</span>/&gt;
+            &lt;unmarshal ref=<span class="code-quote">"gson"</span>/&gt;
+        &lt;/route&gt;
+
+    &lt;/camelContext&gt;
+</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.


Reply via email to