camel-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From build...@apache.org
Subject svn commit: r931423 - in /websites/production/camel/content: book-component-appendix.html book-in-one-page.html cache/main.pageCache properties.html using-propertyplaceholder.html
Date Tue, 02 Dec 2014 21:20:53 GMT
Author: buildbot
Date: Tue Dec  2 21:20:53 2014
New Revision: 931423

Log:
Production update by buildbot for camel

Modified:
    websites/production/camel/content/book-component-appendix.html
    websites/production/camel/content/book-in-one-page.html
    websites/production/camel/content/cache/main.pageCache
    websites/production/camel/content/properties.html
    websites/production/camel/content/using-propertyplaceholder.html

Modified: websites/production/camel/content/book-component-appendix.html
==============================================================================
--- websites/production/camel/content/book-component-appendix.html (original)
+++ websites/production/camel/content/book-component-appendix.html Tue Dec  2 21:20:53 2014
@@ -1529,11 +1529,11 @@ template.send("direct:alias-verify&
                     </div>
     </div>
 <p>The <strong>cxf:</strong> component provides integration with <a
shape="rect" href="http://cxf.apache.org">Apache CXF</a> for connecting to JAX-WS
services hosted in CXF.</p><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1417537054744 {padding: 0px;}
-div.rbtoc1417537054744 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1417537054744 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1417555091218 {padding: 0px;}
+div.rbtoc1417555091218 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1417555091218 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1417537054744">
+/*]]>*/</style></p><div class="toc-macro rbtoc1417555091218">
 <ul class="toc-indentation"><li><a shape="rect" href="#CXF-CXFComponent">CXF
Component</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#CXF-URIformat">URI
format</a></li><li><a shape="rect" href="#CXF-Options">Options</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#CXF-Thedescriptionsofthedataformats">The
descriptions of the dataformats</a>
@@ -9817,7 +9817,7 @@ properties:key[?options]
                             <p>From Camel 2.10 onwards, you can bridge the Spring property
placeholder with Camel, see further below for more details.</p>
                     </div>
     </div>
-<p>The property placeholder is generally in use when doing:</p><ul class="alternate"><li>lookup
or creating endpoints</li><li>lookup of beans in the <a shape="rect" href="registry.html">Registry</a></li><li>additional
supported in Spring XML (see below in examples)</li><li>using Blueprint PropertyPlaceholder
with Camel <a shape="rect" href="properties.html">Properties</a> component</li><li>using
<code>@PropertyInject</code> to inject a property in a POJO</li><li><strong>Camel
2.14.1</strong> Using default value if a property does not exists</li></ul><h3
id="BookComponentAppendix-Syntax">Syntax</h3><p>The syntax to use Camel's property
placeholder is to use {{<code>key</code>}} for example {{<code>file.uri</code>}}
where <code>file.uri</code> is the property key.<br clear="none"> You can
use property placeholders in parts of the endpoint URI's which for example you can use placeholders
for parameters in the URIs.</p><p>From&#160;<strong>Camel 2.14.1</strong>
onwards you can specify a
  default value to use if a property with the key does not exists, eg&#160;<code>file.url:/some/path</code>
where the default value is the text after the colon (eg /some/path).</p>    <div
class="aui-message hint shadowed information-macro">
+<p>The property placeholder is generally in use when doing:</p><ul class="alternate"><li>lookup
or creating endpoints</li><li>lookup of beans in the <a shape="rect" href="registry.html">Registry</a></li><li>additional
supported in Spring XML (see below in examples)</li><li>using Blueprint PropertyPlaceholder
with Camel <a shape="rect" href="properties.html">Properties</a> component</li><li>using
<code>@PropertyInject</code> to inject a property in a POJO</li><li><strong>Camel
2.14.1</strong> Using default value if a property does not exists</li><li><strong>Camel
2.14.1</strong> Using custom functions, which can be plugged into the property component.</li></ul><h3
id="BookComponentAppendix-Syntax">Syntax</h3><p>The syntax to use Camel's property
placeholder is to use {{<code>key</code>}} for example {{<code>file.uri</code>}}
where <code>file.uri</code> is the property key.<br clear="none"> You can
use property placeholders in parts of the endpoint URI's which for example you can use 
 placeholders for parameters in the URIs.</p><p>From&#160;<strong>Camel
2.14.1</strong> onwards you can specify a default value to use if a property with the
key does not exists, eg&#160;<code>file.url:/some/path</code> where the default
value is the text after the colon (eg /some/path).</p>    <div class="aui-message
hint shadowed information-macro">
                             <span class="aui-icon icon-hint">Icon</span>
                 <div class="message-content">
                             <p>Do not use colon in the property key. The colon is used
as a separator token when you are providing a default value, which is supported from <strong>Camel
2.14.1</strong> onwards.</p>
@@ -10343,7 +10343,41 @@ protected Properties useOverrideProperti
 <script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
   @PropertyInject(value = &quot;myTimeout&quot;, defaultValue = &quot;5000&quot;)
     private int timeout;
 ]]></script>
-</div></div><h2 id="BookComponentAppendix-SeeAlso.49">See Also</h2><ul
class="alternate"><li><a shape="rect" href="properties.html">Properties</a>
component</li></ul>
+</div></div><h3 id="BookComponentAppendix-Usingcustomfunctions">Using custom
functions</h3><p><strong>Available as of Camel 2.14.1</strong></p><p>The
<a shape="rect" href="properties.html">Properties</a> component allow to plugin
3rd party functions which can be used during&#160;parsing of the property placeholders.
These functions are then able to do custom logic to resolve the placeholders, such as looking
up in databases, do custom computations, or whatnot. The name of the function becomes the
prefix used in the placeholder. This is best illustrated in the example code 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[
 &lt;bean id=&quot;beerFunction&quot; class=&quot;MyBeerFunction&quot;/&gt;
+
+  &lt;camelContext xmlns=&quot;http://camel.apache.org/schema/blueprint&quot;&gt;
+    &lt;propertyPlaceholder id=&quot;properties&quot; location=&quot;none&quot;
ignoreMissingLocation=&quot;true&quot;&gt;
+      &lt;propertiesFunction ref=&quot;beerFunction&quot;/&gt;
+    &lt;/propertyPlaceholder&gt;
+
+    &lt;route&gt;
+      &lt;from uri=&quot;direct:start&quot;/&gt;
+      &lt;to uri=&quot;{{beer:FOO}}&quot;/&gt;
+      &lt;to uri=&quot;{{beer:BAR}}&quot;/&gt;
+    &lt;/route&gt;
+  &lt;/camelContext&gt;]]></script>
+</div></div><p>Here we have a Camel XML route where we have defined the
&lt;propertyPlaceholder&gt; to use a custom function, which we refer to be the bean
id - eg the beerFunction. As the beer function uses "beer" as its name, then the placeholder
syntax can trigger the beer function by starting with beer:value.</p><p>The implementation
of the function is only two methods 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[
   public static final class MyBeerFunction implements PropertiesFunction {
+
+        @Override
+        public String getName() {
+            return &quot;beer&quot;;
+        }
+
+        @Override
+        public String apply(String remainder) {
+            return &quot;mock:&quot; + remainder.toLowerCase();
+        }
+    }
+
+]]></script>
+</div></div><p>The function must implement the&#160;<code>org.apache.camel.component.properties.PropertiesFunction</code>
interface. The method&#160;<code>getName</code> is &#160;the name of the
function, eg beer. And the&#160;<code>apply</code> method is where we implement
the custom logic to do. As the sample code is from an unit test, it just returns a value to
refer to a mock endpoint.</p><p>To register a custom function from Java code is
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[
       PropertiesComponent pc = context.getComponent(&quot;properties&quot;, PropertiesComponent.class);
+        pc.addFunction(new MyBeerFunction());
+
+]]></script>
+</div></div><p>&#160;</p><h2 id="BookComponentAppendix-SeeAlso.49">See
Also</h2><ul class="alternate"><li><a shape="rect" href="properties.html">Properties</a>
component</li></ul>
 
 <h3 id="BookComponentAppendix-SeeAlso.50">See Also</h3>
 <ul><li><a shape="rect" href="configuring-camel.html">Configuring Camel</a></li><li><a
shape="rect" href="component.html">Component</a></li><li><a shape="rect"
href="endpoint.html">Endpoint</a></li><li><a shape="rect" href="getting-started.html">Getting
Started</a></li></ul>

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 Tue Dec  2 21:20:53 2014
@@ -4120,11 +4120,11 @@ While not actual tutorials you might fin
                     </div>
     </div>
 <h2 id="BookInOnePage-Preface">Preface</h2><p>This tutorial aims to guide
the reader through the stages of creating a project which uses Camel to facilitate the routing
of messages from a JMS queue to a <a shape="rect" class="external-link" href="http://www.springramework.org"
rel="nofollow">Spring</a> service. The route works in a synchronous fashion returning
a response to the client.</p><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1417540666765 {padding: 0px;}
-div.rbtoc1417540666765 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1417540666765 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1417555134488 {padding: 0px;}
+div.rbtoc1417555134488 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1417555134488 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1417540666765">
+/*]]>*/</style></p><div class="toc-macro rbtoc1417555134488">
 <ul class="toc-indentation"><li><a shape="rect" href="#Tutorial-JmsRemoting-TutorialonSpringRemotingwithJMS">Tutorial
on Spring Remoting with JMS</a></li><li><a shape="rect" href="#Tutorial-JmsRemoting-Preface">Preface</a></li><li><a
shape="rect" href="#Tutorial-JmsRemoting-Prerequisites">Prerequisites</a></li><li><a
shape="rect" href="#Tutorial-JmsRemoting-Distribution">Distribution</a></li><li><a
shape="rect" href="#Tutorial-JmsRemoting-About">About</a></li><li><a
shape="rect" href="#Tutorial-JmsRemoting-CreatetheCamelProject">Create the Camel Project</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#Tutorial-JmsRemoting-UpdatethePOMwithDependencies">Update
the POM with Dependencies</a></li></ul>
 </li><li><a shape="rect" href="#Tutorial-JmsRemoting-WritingtheServer">Writing
the Server</a>
@@ -6310,11 +6310,11 @@ So we completed the last piece in the pi
 
 
 <style type="text/css">/*<![CDATA[*/
-div.rbtoc1417540669329 {padding: 0px;}
-div.rbtoc1417540669329 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1417540669329 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1417555136730 {padding: 0px;}
+div.rbtoc1417555136730 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1417555136730 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style><div class="toc-macro rbtoc1417540669329">
+/*]]>*/</style><div class="toc-macro rbtoc1417555136730">
 <ul class="toc-indentation"><li><a shape="rect" href="#Tutorial-AXIS-Camel-TutorialusingAxis1.4withApacheCamel">Tutorial
using Axis 1.4 with Apache Camel</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#Tutorial-AXIS-Camel-Prerequisites">Prerequisites</a></li><li><a
shape="rect" href="#Tutorial-AXIS-Camel-Distribution">Distribution</a></li><li><a
shape="rect" href="#Tutorial-AXIS-Camel-Introduction">Introduction</a></li><li><a
shape="rect" href="#Tutorial-AXIS-Camel-SettinguptheprojecttorunAxis">Setting up the project
to run Axis</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#Tutorial-AXIS-Camel-Maven2">Maven
2</a></li><li><a shape="rect" href="#Tutorial-AXIS-Camel-wsdl">wsdl</a></li><li><a
shape="rect" href="#Tutorial-AXIS-Camel-ConfiguringAxis">Configuring Axis</a></li><li><a
shape="rect" href="#Tutorial-AXIS-Camel-RunningtheExample">Running the Example</a></li></ul>
@@ -19350,11 +19350,11 @@ template.send(&quot;direct:alias-verify&
                     </div>
     </div>
 <p>The <strong>cxf:</strong> component provides integration with <a
shape="rect" href="http://cxf.apache.org">Apache CXF</a> for connecting to JAX-WS
services hosted in CXF.</p><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1417540696641 {padding: 0px;}
-div.rbtoc1417540696641 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1417540696641 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1417555165996 {padding: 0px;}
+div.rbtoc1417555165996 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1417555165996 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1417540696641">
+/*]]>*/</style></p><div class="toc-macro rbtoc1417555165996">
 <ul class="toc-indentation"><li><a shape="rect" href="#CXF-CXFComponent">CXF
Component</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#CXF-URIformat">URI
format</a></li><li><a shape="rect" href="#CXF-Options">Options</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#CXF-Thedescriptionsofthedataformats">The
descriptions of the dataformats</a>
@@ -27638,7 +27638,7 @@ properties:key[?options]
                             <p>From Camel 2.10 onwards, you can bridge the Spring property
placeholder with Camel, see further below for more details.</p>
                     </div>
     </div>
-<p>The property placeholder is generally in use when doing:</p><ul class="alternate"><li>lookup
or creating endpoints</li><li>lookup of beans in the <a shape="rect" href="registry.html">Registry</a></li><li>additional
supported in Spring XML (see below in examples)</li><li>using Blueprint PropertyPlaceholder
with Camel <a shape="rect" href="properties.html">Properties</a> component</li><li>using
<code>@PropertyInject</code> to inject a property in a POJO</li><li><strong>Camel
2.14.1</strong> Using default value if a property does not exists</li></ul><h3
id="BookInOnePage-Syntax.1">Syntax</h3><p>The syntax to use Camel's property
placeholder is to use {{<code>key</code>}} for example {{<code>file.uri</code>}}
where <code>file.uri</code> is the property key.<br clear="none"> You can
use property placeholders in parts of the endpoint URI's which for example you can use placeholders
for parameters in the URIs.</p><p>From&#160;<strong>Camel 2.14.1</strong>
onwards you can specify a defau
 lt value to use if a property with the key does not exists, eg&#160;<code>file.url:/some/path</code>
where the default value is the text after the colon (eg /some/path).</p>    <div
class="aui-message hint shadowed information-macro">
+<p>The property placeholder is generally in use when doing:</p><ul class="alternate"><li>lookup
or creating endpoints</li><li>lookup of beans in the <a shape="rect" href="registry.html">Registry</a></li><li>additional
supported in Spring XML (see below in examples)</li><li>using Blueprint PropertyPlaceholder
with Camel <a shape="rect" href="properties.html">Properties</a> component</li><li>using
<code>@PropertyInject</code> to inject a property in a POJO</li><li><strong>Camel
2.14.1</strong> Using default value if a property does not exists</li><li><strong>Camel
2.14.1</strong> Using custom functions, which can be plugged into the property component.</li></ul><h3
id="BookInOnePage-Syntax.1">Syntax</h3><p>The syntax to use Camel's property
placeholder is to use {{<code>key</code>}} for example {{<code>file.uri</code>}}
where <code>file.uri</code> is the property key.<br clear="none"> You can
use property placeholders in parts of the endpoint URI's which for example you can use placeh
 olders for parameters in the URIs.</p><p>From&#160;<strong>Camel 2.14.1</strong>
onwards you can specify a default value to use if a property with the key does not exists,
eg&#160;<code>file.url:/some/path</code> where the default value is the text
after the colon (eg /some/path).</p>    <div class="aui-message hint shadowed information-macro">
                             <span class="aui-icon icon-hint">Icon</span>
                 <div class="message-content">
                             <p>Do not use colon in the property key. The colon is used
as a separator token when you are providing a default value, which is supported from <strong>Camel
2.14.1</strong> onwards.</p>
@@ -28164,7 +28164,41 @@ protected Properties useOverrideProperti
 <script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
   @PropertyInject(value = &quot;myTimeout&quot;, defaultValue = &quot;5000&quot;)
     private int timeout;
 ]]></script>
-</div></div><h2 id="BookInOnePage-SeeAlso.69">See Also</h2><ul
class="alternate"><li><a shape="rect" href="properties.html">Properties</a>
component</li></ul>
+</div></div><h3 id="BookInOnePage-Usingcustomfunctions">Using custom functions</h3><p><strong>Available
as of Camel 2.14.1</strong></p><p>The <a shape="rect" href="properties.html">Properties</a>
component allow to plugin 3rd party functions which can be used during&#160;parsing of
the property placeholders. These functions are then able to do custom logic to resolve the
placeholders, such as looking up in databases, do custom computations, or whatnot. The name
of the function becomes the prefix used in the placeholder. This is best illustrated in the
example code 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[
 &lt;bean id=&quot;beerFunction&quot; class=&quot;MyBeerFunction&quot;/&gt;
+
+  &lt;camelContext xmlns=&quot;http://camel.apache.org/schema/blueprint&quot;&gt;
+    &lt;propertyPlaceholder id=&quot;properties&quot; location=&quot;none&quot;
ignoreMissingLocation=&quot;true&quot;&gt;
+      &lt;propertiesFunction ref=&quot;beerFunction&quot;/&gt;
+    &lt;/propertyPlaceholder&gt;
+
+    &lt;route&gt;
+      &lt;from uri=&quot;direct:start&quot;/&gt;
+      &lt;to uri=&quot;{{beer:FOO}}&quot;/&gt;
+      &lt;to uri=&quot;{{beer:BAR}}&quot;/&gt;
+    &lt;/route&gt;
+  &lt;/camelContext&gt;]]></script>
+</div></div><p>Here we have a Camel XML route where we have defined the
&lt;propertyPlaceholder&gt; to use a custom function, which we refer to be the bean
id - eg the beerFunction. As the beer function uses "beer" as its name, then the placeholder
syntax can trigger the beer function by starting with beer:value.</p><p>The implementation
of the function is only two methods 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[
   public static final class MyBeerFunction implements PropertiesFunction {
+
+        @Override
+        public String getName() {
+            return &quot;beer&quot;;
+        }
+
+        @Override
+        public String apply(String remainder) {
+            return &quot;mock:&quot; + remainder.toLowerCase();
+        }
+    }
+
+]]></script>
+</div></div><p>The function must implement the&#160;<code>org.apache.camel.component.properties.PropertiesFunction</code>
interface. The method&#160;<code>getName</code> is &#160;the name of the
function, eg beer. And the&#160;<code>apply</code> method is where we implement
the custom logic to do. As the sample code is from an unit test, it just returns a value to
refer to a mock endpoint.</p><p>To register a custom function from Java code is
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[
       PropertiesComponent pc = context.getComponent(&quot;properties&quot;, PropertiesComponent.class);
+        pc.addFunction(new MyBeerFunction());
+
+]]></script>
+</div></div><p>&#160;</p><h2 id="BookInOnePage-SeeAlso.69">See
Also</h2><ul class="alternate"><li><a shape="rect" href="properties.html">Properties</a>
component</li></ul>
 
 <h3 id="BookInOnePage-SeeAlso.70">See Also</h3>
 <ul><li><a shape="rect" href="configuring-camel.html">Configuring Camel</a></li><li><a
shape="rect" href="component.html">Component</a></li><li><a shape="rect"
href="endpoint.html">Endpoint</a></li><li><a shape="rect" href="getting-started.html">Getting
Started</a></li></ul>

Modified: websites/production/camel/content/cache/main.pageCache
==============================================================================
Binary files - no diff available.

Modified: websites/production/camel/content/properties.html
==============================================================================
--- websites/production/camel/content/properties.html (original)
+++ websites/production/camel/content/properties.html Tue Dec  2 21:20:53 2014
@@ -121,7 +121,7 @@ properties:key[?options]
                             <p>From Camel 2.10 onwards, you can bridge the Spring property
placeholder with Camel, see further below for more details.</p>
                     </div>
     </div>
-<p>The property placeholder is generally in use when doing:</p><ul class="alternate"><li>lookup
or creating endpoints</li><li>lookup of beans in the <a shape="rect" href="registry.html">Registry</a></li><li>additional
supported in Spring XML (see below in examples)</li><li>using Blueprint PropertyPlaceholder
with Camel <a shape="rect" href="properties.html">Properties</a> component</li><li>using
<code>@PropertyInject</code> to inject a property in a POJO</li><li><strong>Camel
2.14.1</strong> Using default value if a property does not exists</li></ul><h3
id="Properties-Syntax">Syntax</h3><p>The syntax to use Camel's property placeholder
is to use {{<code>key</code>}} for example {{<code>file.uri</code>}}
where <code>file.uri</code> is the property key.<br clear="none"> You can
use property placeholders in parts of the endpoint URI's which for example you can use placeholders
for parameters in the URIs.</p><p>From&#160;<strong>Camel 2.14.1</strong>
onwards you can specify a default va
 lue to use if a property with the key does not exists, eg&#160;<code>file.url:/some/path</code>
where the default value is the text after the colon (eg /some/path).</p>    <div
class="aui-message hint shadowed information-macro">
+<p>The property placeholder is generally in use when doing:</p><ul class="alternate"><li>lookup
or creating endpoints</li><li>lookup of beans in the <a shape="rect" href="registry.html">Registry</a></li><li>additional
supported in Spring XML (see below in examples)</li><li>using Blueprint PropertyPlaceholder
with Camel <a shape="rect" href="properties.html">Properties</a> component</li><li>using
<code>@PropertyInject</code> to inject a property in a POJO</li><li><strong>Camel
2.14.1</strong> Using default value if a property does not exists</li><li><strong>Camel
2.14.1</strong> Using custom functions, which can be plugged into the property component.</li></ul><h3
id="Properties-Syntax">Syntax</h3><p>The syntax to use Camel's property placeholder
is to use {{<code>key</code>}} for example {{<code>file.uri</code>}}
where <code>file.uri</code> is the property key.<br clear="none"> You can
use property placeholders in parts of the endpoint URI's which for example you can use placeholder
 s for parameters in the URIs.</p><p>From&#160;<strong>Camel 2.14.1</strong>
onwards you can specify a default value to use if a property with the key does not exists,
eg&#160;<code>file.url:/some/path</code> where the default value is the text
after the colon (eg /some/path).</p>    <div class="aui-message hint shadowed information-macro">
                             <span class="aui-icon icon-hint">Icon</span>
                 <div class="message-content">
                             <p>Do not use colon in the property key. The colon is used
as a separator token when you are providing a default value, which is supported from <strong>Camel
2.14.1</strong> onwards.</p>
@@ -647,7 +647,41 @@ protected Properties useOverrideProperti
 <script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
   @PropertyInject(value = &quot;myTimeout&quot;, defaultValue = &quot;5000&quot;)
     private int timeout;
 ]]></script>
-</div></div><h2 id="Properties-SeeAlso">See Also</h2><ul class="alternate"><li><a
shape="rect" href="properties.html">Properties</a> component</li></ul>
+</div></div><h3 id="Properties-Usingcustomfunctions">Using custom functions</h3><p><strong>Available
as of Camel 2.14.1</strong></p><p>The <a shape="rect" href="properties.html">Properties</a>
component allow to plugin 3rd party functions which can be used during&#160;parsing of
the property placeholders. These functions are then able to do custom logic to resolve the
placeholders, such as looking up in databases, do custom computations, or whatnot. The name
of the function becomes the prefix used in the placeholder. This is best illustrated in the
example code 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[
 &lt;bean id=&quot;beerFunction&quot; class=&quot;MyBeerFunction&quot;/&gt;
+
+  &lt;camelContext xmlns=&quot;http://camel.apache.org/schema/blueprint&quot;&gt;
+    &lt;propertyPlaceholder id=&quot;properties&quot; location=&quot;none&quot;
ignoreMissingLocation=&quot;true&quot;&gt;
+      &lt;propertiesFunction ref=&quot;beerFunction&quot;/&gt;
+    &lt;/propertyPlaceholder&gt;
+
+    &lt;route&gt;
+      &lt;from uri=&quot;direct:start&quot;/&gt;
+      &lt;to uri=&quot;{{beer:FOO}}&quot;/&gt;
+      &lt;to uri=&quot;{{beer:BAR}}&quot;/&gt;
+    &lt;/route&gt;
+  &lt;/camelContext&gt;]]></script>
+</div></div><p>Here we have a Camel XML route where we have defined the
&lt;propertyPlaceholder&gt; to use a custom function, which we refer to be the bean
id - eg the beerFunction. As the beer function uses "beer" as its name, then the placeholder
syntax can trigger the beer function by starting with beer:value.</p><p>The implementation
of the function is only two methods 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[
   public static final class MyBeerFunction implements PropertiesFunction {
+
+        @Override
+        public String getName() {
+            return &quot;beer&quot;;
+        }
+
+        @Override
+        public String apply(String remainder) {
+            return &quot;mock:&quot; + remainder.toLowerCase();
+        }
+    }
+
+]]></script>
+</div></div><p>The function must implement the&#160;<code>org.apache.camel.component.properties.PropertiesFunction</code>
interface. The method&#160;<code>getName</code> is &#160;the name of the
function, eg beer. And the&#160;<code>apply</code> method is where we implement
the custom logic to do. As the sample code is from an unit test, it just returns a value to
refer to a mock endpoint.</p><p>To register a custom function from Java code is
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[
       PropertiesComponent pc = context.getComponent(&quot;properties&quot;, PropertiesComponent.class);
+        pc.addFunction(new MyBeerFunction());
+
+]]></script>
+</div></div><p>&#160;</p><h2 id="Properties-SeeAlso">See
Also</h2><ul class="alternate"><li><a shape="rect" href="properties.html">Properties</a>
component</li></ul>
 
 <h3 id="Properties-SeeAlso.1">See Also</h3>
 <ul><li><a shape="rect" href="configuring-camel.html">Configuring Camel</a></li><li><a
shape="rect" href="component.html">Component</a></li><li><a shape="rect"
href="endpoint.html">Endpoint</a></li><li><a shape="rect" href="getting-started.html">Getting
Started</a></li></ul>

Modified: websites/production/camel/content/using-propertyplaceholder.html
==============================================================================
--- websites/production/camel/content/using-propertyplaceholder.html (original)
+++ websites/production/camel/content/using-propertyplaceholder.html Tue Dec  2 21:20:53 2014
@@ -93,7 +93,7 @@
                             <p>From Camel 2.10 onwards, you can bridge the Spring property
placeholder with Camel, see further below for more details.</p>
                     </div>
     </div>
-<p>The property placeholder is generally in use when doing:</p><ul class="alternate"><li>lookup
or creating endpoints</li><li>lookup of beans in the <a shape="rect" href="registry.html">Registry</a></li><li>additional
supported in Spring XML (see below in examples)</li><li>using Blueprint PropertyPlaceholder
with Camel <a shape="rect" href="properties.html">Properties</a> component</li><li>using
<code>@PropertyInject</code> to inject a property in a POJO</li><li><strong>Camel
2.14.1</strong> Using default value if a property does not exists</li></ul><h3
id="UsingPropertyPlaceholder-Syntax">Syntax</h3><p>The syntax to use Camel's
property placeholder is to use {{<code>key</code>}} for example {{<code>file.uri</code>}}
where <code>file.uri</code> is the property key.<br clear="none"> You can
use property placeholders in parts of the endpoint URI's which for example you can use placeholders
for parameters in the URIs.</p><p>From&#160;<strong>Camel 2.14.1</strong>
onwards you can specif
 y a default value to use if a property with the key does not exists, eg&#160;<code>file.url:/some/path</code>
where the default value is the text after the colon (eg /some/path).</p>    <div
class="aui-message hint shadowed information-macro">
+<p>The property placeholder is generally in use when doing:</p><ul class="alternate"><li>lookup
or creating endpoints</li><li>lookup of beans in the <a shape="rect" href="registry.html">Registry</a></li><li>additional
supported in Spring XML (see below in examples)</li><li>using Blueprint PropertyPlaceholder
with Camel <a shape="rect" href="properties.html">Properties</a> component</li><li>using
<code>@PropertyInject</code> to inject a property in a POJO</li><li><strong>Camel
2.14.1</strong> Using default value if a property does not exists</li><li><strong>Camel
2.14.1</strong> Using custom functions, which can be plugged into the property component.</li></ul><h3
id="UsingPropertyPlaceholder-Syntax">Syntax</h3><p>The syntax to use Camel's
property placeholder is to use {{<code>key</code>}} for example {{<code>file.uri</code>}}
where <code>file.uri</code> is the property key.<br clear="none"> You can
use property placeholders in parts of the endpoint URI's which for example you can u
 se placeholders for parameters in the URIs.</p><p>From&#160;<strong>Camel
2.14.1</strong> onwards you can specify a default value to use if a property with the
key does not exists, eg&#160;<code>file.url:/some/path</code> where the default
value is the text after the colon (eg /some/path).</p>    <div class="aui-message
hint shadowed information-macro">
                             <span class="aui-icon icon-hint">Icon</span>
                 <div class="message-content">
                             <p>Do not use colon in the property key. The colon is used
as a separator token when you are providing a default value, which is supported from <strong>Camel
2.14.1</strong> onwards.</p>
@@ -619,7 +619,41 @@ protected Properties useOverrideProperti
 <script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
   @PropertyInject(value = &quot;myTimeout&quot;, defaultValue = &quot;5000&quot;)
     private int timeout;
 ]]></script>
-</div></div><h2 id="UsingPropertyPlaceholder-SeeAlso">See Also</h2><ul
class="alternate"><li><a shape="rect" href="properties.html">Properties</a>
component</li></ul></div>
+</div></div><h3 id="UsingPropertyPlaceholder-Usingcustomfunctions">Using
custom functions</h3><p><strong>Available as of Camel 2.14.1</strong></p><p>The
<a shape="rect" href="properties.html">Properties</a> component allow to plugin
3rd party functions which can be used during&#160;parsing of the property placeholders.
These functions are then able to do custom logic to resolve the placeholders, such as looking
up in databases, do custom computations, or whatnot. The name of the function becomes the
prefix used in the placeholder. This is best illustrated in the example code 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[
 &lt;bean id=&quot;beerFunction&quot; class=&quot;MyBeerFunction&quot;/&gt;
+
+  &lt;camelContext xmlns=&quot;http://camel.apache.org/schema/blueprint&quot;&gt;
+    &lt;propertyPlaceholder id=&quot;properties&quot; location=&quot;none&quot;
ignoreMissingLocation=&quot;true&quot;&gt;
+      &lt;propertiesFunction ref=&quot;beerFunction&quot;/&gt;
+    &lt;/propertyPlaceholder&gt;
+
+    &lt;route&gt;
+      &lt;from uri=&quot;direct:start&quot;/&gt;
+      &lt;to uri=&quot;{{beer:FOO}}&quot;/&gt;
+      &lt;to uri=&quot;{{beer:BAR}}&quot;/&gt;
+    &lt;/route&gt;
+  &lt;/camelContext&gt;]]></script>
+</div></div><p>Here we have a Camel XML route where we have defined the
&lt;propertyPlaceholder&gt; to use a custom function, which we refer to be the bean
id - eg the beerFunction. As the beer function uses "beer" as its name, then the placeholder
syntax can trigger the beer function by starting with beer:value.</p><p>The implementation
of the function is only two methods 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[
   public static final class MyBeerFunction implements PropertiesFunction {
+
+        @Override
+        public String getName() {
+            return &quot;beer&quot;;
+        }
+
+        @Override
+        public String apply(String remainder) {
+            return &quot;mock:&quot; + remainder.toLowerCase();
+        }
+    }
+
+]]></script>
+</div></div><p>The function must implement the&#160;<code>org.apache.camel.component.properties.PropertiesFunction</code>
interface. The method&#160;<code>getName</code> is &#160;the name of the
function, eg beer. And the&#160;<code>apply</code> method is where we implement
the custom logic to do. As the sample code is from an unit test, it just returns a value to
refer to a mock endpoint.</p><p>To register a custom function from Java code is
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[
       PropertiesComponent pc = context.getComponent(&quot;properties&quot;, PropertiesComponent.class);
+        pc.addFunction(new MyBeerFunction());
+
+]]></script>
+</div></div><p>&#160;</p><h2 id="UsingPropertyPlaceholder-SeeAlso">See
Also</h2><ul class="alternate"><li><a shape="rect" href="properties.html">Properties</a>
component</li></ul></div>
         </td>
         <td valign="top">
           <div class="navigation">



Mime
View raw message