camel-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From build...@apache.org
Subject svn commit: r1017260 [31/40] - in /websites/production/camel/content: ./ cache/
Date Fri, 25 Aug 2017 08:22:03 GMT
Modified: websites/production/camel/content/scripting-languages-context.html
==============================================================================
--- websites/production/camel/content/scripting-languages-context.html (original)
+++ websites/production/camel/content/scripting-languages-context.html Fri Aug 25 08:22:01 2017
@@ -36,17 +36,6 @@
     <![endif]-->
 
 
-  <link href='//camel.apache.org/styles/highlighter/styles/shCoreCamel.css' rel='stylesheet' type='text/css' />
-  <link href='//camel.apache.org/styles/highlighter/styles/shThemeCamel.css' rel='stylesheet' type='text/css' />
-  <script src='//camel.apache.org/styles/highlighter/scripts/shCore.js' type='text/javascript'></script>
-  <script src='//camel.apache.org/styles/highlighter/scripts/shBrushJava.js' type='text/javascript'></script>
-  <script src='//camel.apache.org/styles/highlighter/scripts/shBrushXml.js' type='text/javascript'></script>
-  <script src='//camel.apache.org/styles/highlighter/scripts/shBrushPlain.js' type='text/javascript'></script>
-  
-  <script type="text/javascript">
-  SyntaxHighlighter.defaults['toolbar'] = false;
-  SyntaxHighlighter.all();
-  </script>
 
     <title>
     Apache Camel: Scripting Languages Context
@@ -86,46 +75,19 @@
 	<tbody>
         <tr>
         <td valign="top" width="100%">
-<div class="wiki-content maincontent"><h3 id="ScriptingLanguagesContext-ScriptContextOptions"><code>ScriptContext</code> Options</h3><p>&#160;</p><div class="confluence-information-macro confluence-information-macro-information"><span class="aui-icon aui-icon-small aui-iconfont-info confluence-information-macro-icon"></span><div class="confluence-information-macro-body">The&#160;<code>JSR-223</code> scripting language's&#160;<strong><code>ScriptContext</code></strong> is pre-configured with the following attributes all set at <strong><code>ENGINE_SCOPE</code></strong>.</div></div><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Attribute</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Type</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Value</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><span><code>camelContext</code><br clear="none"></span></p></td><td colspan="1" ro
 wspan="1" class="confluenceTd"><p><code>org.apache.camel.CamelContext</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The Camel Context.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>context</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>org.apache.camel.CamelContext</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The Camel Context (cannot be used in groovy).</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>exchange</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>org.apache.camel.Exchange</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The current Exchange.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>properties</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>org.apache.camel.builder.script.PropertiesFunction</code></p></td><td colspan="1" rowspan="1" class="confluence
 Td"><p><strong>Camel 2.9:</strong> Function with a <strong><code>resolve</code></strong> method to make it easier to use Camels <a shape="rect" href="properties.html">Properties</a> component from scripts. See further below for example.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>request</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>org.apache.camel.Message</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The&#160;<strong><code>IN</code></strong> message.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>response</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>org.apache.camel.Message</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Deprecated</strong>: The&#160;<strong><code>OUT</code></strong> message. The&#160;<strong><code>OUT</code></strong> message is&#160;<strong><code>null</code></strong> by default. Use the <strong><code>IN<
 /code></strong> message instead.</p></td></tr></tbody></table></div><p>See <a shape="rect" href="scripting-languages.html">Scripting Languages</a> for the list of languages with explicit DSL support.</p><h3 id="ScriptingLanguagesContext-PassingAdditionalArgumentstotheScriptingEngine">Passing Additional Arguments to the&#160;<code>ScriptingEngine</code></h3><p><strong>Available from Camel 2.8</strong></p><p>You can provide additional arguments to the <strong><code>ScriptingEngine</code></strong> using a header on the Camel message with the key <strong><code>CamelScriptArguments</code></strong>.</p><p>Example:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
-public void testArgumentsExample() throws Exception {
-    getMockEndpoint(&quot;mock:result&quot;).expectedMessageCount(0);
-    getMockEndpoint(&quot;mock:unmatched&quot;).expectedMessageCount(1);
-
-    // additional arguments to ScriptEngine
-    Map&lt;String, Object&gt; arguments = new HashMap&lt;String, Object&gt;();
-    arguments.put(&quot;foo&quot;, &quot;bar&quot;);
-    arguments.put(&quot;baz&quot;, 7);
-
-    // those additional arguments is provided as a header on the Camel Message
-    template.sendBodyAndHeader(&quot;direct:start&quot;, &quot;hello&quot;, ScriptBuilder.ARGUMENTS, arguments);
-
-    assertMockEndpointsSatisfied();
-}
-]]></script>
-</div></div><h3 id="ScriptingLanguagesContext-UsingPropertiesFunction">Using Properties Function</h3><p><strong>Available from Camel 2.9</strong></p><p>If you need to use the <a shape="rect" href="properties.html">Properties</a> component from a script to lookup property placeholders, then its a bit cumbersome to do so. For example, to set a header name&#160;<strong><code>myHeader</code></strong> with a value from a property placeholder, whose key is taken from a header named <strong><code>foo</code></strong>.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[.setHeader(&quot;myHeader&quot;).groovy(&quot;context.resolvePropertyPlaceholders(&#39;{{&#39; + request.headers.get(&#39;foo&#39;) + &#39;}}&#39;)&quot;)
-]]></script>
-</div></div><p>From <strong>Camel 2.9</strong>: you can now use the properties function and the same example is simpler:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[.setHeader(&quot;myHeader&quot;).groovy(&quot;properties.resolve(request.headers.get(&#39;foo&#39;))&quot;)
-]]></script>
-</div></div><h3 id="ScriptingLanguagesContext-LoadingScriptFromExternalResource">Loading Script From External Resource</h3><p><strong>Available from Camel 2.11</strong></p><p>You can externalize the script and have Camel load it from a resource such as <strong><code>classpath:</code></strong>, <strong><code>file:</code></strong>, or <strong><code>http:</code></strong>. This is done using the following syntax: <strong><code>resource:scheme:location</code></strong> e.g. to refer to a file on the classpath you can do:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[.setHeader(&quot;myHeader&quot;).groovy(&quot;resource:classpath:mygroovy.groovy&quot;)
-]]></script>
-</div></div><h3 id="ScriptingLanguagesContext-HowtoGettheResultfromMultipleStatementsScript">How to Get the Result from Multiple Statements Script</h3><p><strong>Available from Camel 2.14</strong></p><p>The script engine's eval method returns a&#160;<strong><code>null</code></strong> when it runs a multi-statement script. However, Camel can look up the value of a script's result by using the key <strong><code>result</code></strong> from the value set. When writing a multi-statement script set the value of the&#160;<strong><code>result</code></strong> variable as the script return value.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: text; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[bar = &quot;baz&quot;;
+<div class="wiki-content maincontent"><h3 id="ScriptingLanguagesContext-ScriptContextOptions"><code>ScriptContext</code> Options</h3><p>&#160;</p><rich-text-body>The&#160;<code>JSR-223</code> scripting language's&#160;<strong><code>ScriptContext</code></strong> is pre-configured with the following attributes all set at <strong><code>ENGINE_SCOPE</code></strong>.</rich-text-body><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Attribute</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Type</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Value</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><span><code>camelContext</code><br clear="none"></span></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>org.apache.camel.CamelContext</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The Camel Context.</p></td></tr><tr><td colspan="1" rowspan="1" class
 ="confluenceTd"><p><code>context</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>org.apache.camel.CamelContext</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The Camel Context (cannot be used in groovy).</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>exchange</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>org.apache.camel.Exchange</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The current Exchange.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>properties</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>org.apache.camel.builder.script.PropertiesFunction</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.9:</strong> Function with a <strong><code>resolve</code></strong> method to make it easier to use Camels <a shape="rect" href="properties.html">Properties</a> component from scripts. 
 See further below for example.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>request</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>org.apache.camel.Message</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The&#160;<strong><code>IN</code></strong> message.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>response</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>org.apache.camel.Message</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Deprecated</strong>: The&#160;<strong><code>OUT</code></strong> message. The&#160;<strong><code>OUT</code></strong> message is&#160;<strong><code>null</code></strong> by default. Use the <strong><code>IN</code></strong> message instead.</p></td></tr></tbody></table></div><p>See <a shape="rect" href="scripting-languages.html">Scripting Languages</a> for the list of languages with explicit DSL support.</p><h3
  id="ScriptingLanguagesContext-PassingAdditionalArgumentstotheScriptingEngine">Passing Additional Arguments to the&#160;<code>ScriptingEngine</code></h3><p><strong>Available from Camel 2.8</strong></p><p>You can provide additional arguments to the <strong><code>ScriptingEngine</code></strong> using a header on the Camel message with the key <strong><code>CamelScriptArguments</code></strong>.</p><p>Example:<plain-text-body>{snippet:id=e1|lang=java|url=camel/trunk/components/camel-script/src/test/java/org/apache/camel/builder/script/JavaScriptExpressionTest.java}</plain-text-body></p><h3 id="ScriptingLanguagesContext-UsingPropertiesFunction">Using Properties Function</h3><p><strong>Available from Camel 2.9</strong></p><p>If you need to use the <a shape="rect" href="properties.html">Properties</a> component from a script to lookup property placeholders, then its a bit cumbersome to do so. For example, to set a header name&#160;<strong><code>myHeader</code></strong> with a value from a 
 property placeholder, whose key is taken from a header named <strong><code>foo</code></strong>.</p><plain-text-body>.setHeader("myHeader").groovy("context.resolvePropertyPlaceholders('{{' + request.headers.get('foo') + '}}')")
+</plain-text-body><p>From <strong>Camel 2.9</strong>: you can now use the properties function and the same example is simpler:</p><parameter ac:name="language">java</parameter><plain-text-body>.setHeader("myHeader").groovy("properties.resolve(request.headers.get('foo'))")
+</plain-text-body><h3 id="ScriptingLanguagesContext-LoadingScriptFromExternalResource">Loading Script From External Resource</h3><p><strong>Available from Camel 2.11</strong></p><p>You can externalize the script and have Camel load it from a resource such as <strong><code>classpath:</code></strong>, <strong><code>file:</code></strong>, or <strong><code>http:</code></strong>. This is done using the following syntax: <strong><code>resource:scheme:location</code></strong> e.g. to refer to a file on the classpath you can do:</p><parameter ac:name="language">java</parameter><plain-text-body>.setHeader("myHeader").groovy("resource:classpath:mygroovy.groovy")
+</plain-text-body><h3 id="ScriptingLanguagesContext-HowtoGettheResultfromMultipleStatementsScript">How to Get the Result from Multiple Statements Script</h3><p><strong>Available from Camel 2.14</strong></p><p>The script engine's eval method returns a&#160;<strong><code>null</code></strong> when it runs a multi-statement script. However, Camel can look up the value of a script's result by using the key <strong><code>result</code></strong> from the value set. When writing a multi-statement script set the value of the&#160;<strong><code>result</code></strong> variable as the script return value.</p><parameter ac:name="language">text</parameter><plain-text-body>bar = "baz";
 # some other statements ... 
 # camel take the result value as the script evaluation result
 result = body * 2 + 1
-]]></script>
-</div></div><p>&#160;</p><h3 id="ScriptingLanguagesContext-Dependencies">Dependencies</h3><p>To use scripting languages in your camel routes you need to add the a dependency on <strong><code>camel-script</code></strong> which integrates the JSR-223 scripting engine.</p><p>If you use maven you could just add the following to your <strong><code>pom.xml</code></strong>, substituting the version number for the latest &amp; greatest release (see <a shape="rect" href="download.html">the download page for the latest versions</a>).</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[&lt;dependency&gt;
+</plain-text-body><p>&#160;</p><h3 id="ScriptingLanguagesContext-Dependencies">Dependencies</h3><p>To use scripting languages in your camel routes you need to add the a dependency on <strong><code>camel-script</code></strong> which integrates the JSR-223 scripting engine.</p><p>If you use maven you could just add the following to your <strong><code>pom.xml</code></strong>, substituting the version number for the latest &amp; greatest release (see <a shape="rect" href="download.html">the download page for the latest versions</a>).</p><parameter ac:name="">xml</parameter><plain-text-body>&lt;dependency&gt;
   &lt;groupId&gt;org.apache.camel&lt;/groupId&gt;
   &lt;artifactId&gt;camel-script&lt;/artifactId&gt;
   &lt;version&gt;x.x.x&lt;/version&gt;
 &lt;/dependency&gt;
-]]></script>
-</div></div></div>
+</plain-text-body></div>
         </td>
         <td valign="top">
           <div class="navigation">

Modified: websites/production/camel/content/scripting-languages.html
==============================================================================
--- websites/production/camel/content/scripting-languages.html (original)
+++ websites/production/camel/content/scripting-languages.html Fri Aug 25 08:22:01 2017
@@ -36,17 +36,6 @@
     <![endif]-->
 
 
-  <link href='//camel.apache.org/styles/highlighter/styles/shCoreCamel.css' rel='stylesheet' type='text/css' />
-  <link href='//camel.apache.org/styles/highlighter/styles/shThemeCamel.css' rel='stylesheet' type='text/css' />
-  <script src='//camel.apache.org/styles/highlighter/scripts/shCore.js' type='text/javascript'></script>
-  <script src='//camel.apache.org/styles/highlighter/scripts/shBrushJava.js' type='text/javascript'></script>
-  <script src='//camel.apache.org/styles/highlighter/scripts/shBrushXml.js' type='text/javascript'></script>
-  <script src='//camel.apache.org/styles/highlighter/scripts/shBrushPlain.js' type='text/javascript'></script>
-  
-  <script type="text/javascript">
-  SyntaxHighlighter.defaults['toolbar'] = false;
-  SyntaxHighlighter.all();
-  </script>
 
     <title>
     Apache Camel: Scripting Languages
@@ -97,46 +86,19 @@
 
 <p>However any <a shape="rect" class="external-link" href="http://jcp.org/en/jsr/detail?id=223" rel="nofollow">JSR 223</a> scripting language can be used using the generic DSL methods.</p>
 
-<h3 id="ScriptingLanguages-ScriptContextOptions"><code>ScriptContext</code> Options</h3><p>&#160;</p><div class="confluence-information-macro confluence-information-macro-information"><span class="aui-icon aui-icon-small aui-iconfont-info confluence-information-macro-icon"></span><div class="confluence-information-macro-body">The&#160;<code>JSR-223</code> scripting language's&#160;<strong><code>ScriptContext</code></strong> is pre-configured with the following attributes all set at <strong><code>ENGINE_SCOPE</code></strong>.</div></div><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Attribute</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Type</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Value</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><span><code>camelContext</code><br clear="none"></span></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>org.a
 pache.camel.CamelContext</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The Camel Context.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>context</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>org.apache.camel.CamelContext</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The Camel Context (cannot be used in groovy).</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>exchange</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>org.apache.camel.Exchange</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The current Exchange.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>properties</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>org.apache.camel.builder.script.PropertiesFunction</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.9:</strong> Function w
 ith a <strong><code>resolve</code></strong> method to make it easier to use Camels <a shape="rect" href="properties.html">Properties</a> component from scripts. See further below for example.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>request</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>org.apache.camel.Message</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The&#160;<strong><code>IN</code></strong> message.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>response</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>org.apache.camel.Message</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Deprecated</strong>: The&#160;<strong><code>OUT</code></strong> message. The&#160;<strong><code>OUT</code></strong> message is&#160;<strong><code>null</code></strong> by default. Use the <strong><code>IN</code></strong> message instead.</p></td></tr
 ></tbody></table></div><p>See <a shape="rect" href="scripting-languages.html">Scripting Languages</a> for the list of languages with explicit DSL support.</p><h3 id="ScriptingLanguages-PassingAdditionalArgumentstotheScriptingEngine">Passing Additional Arguments to the&#160;<code>ScriptingEngine</code></h3><p><strong>Available from Camel 2.8</strong></p><p>You can provide additional arguments to the <strong><code>ScriptingEngine</code></strong> using a header on the Camel message with the key <strong><code>CamelScriptArguments</code></strong>.</p><p>Example:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
-public void testArgumentsExample() throws Exception {
-    getMockEndpoint(&quot;mock:result&quot;).expectedMessageCount(0);
-    getMockEndpoint(&quot;mock:unmatched&quot;).expectedMessageCount(1);
-
-    // additional arguments to ScriptEngine
-    Map&lt;String, Object&gt; arguments = new HashMap&lt;String, Object&gt;();
-    arguments.put(&quot;foo&quot;, &quot;bar&quot;);
-    arguments.put(&quot;baz&quot;, 7);
-
-    // those additional arguments is provided as a header on the Camel Message
-    template.sendBodyAndHeader(&quot;direct:start&quot;, &quot;hello&quot;, ScriptBuilder.ARGUMENTS, arguments);
-
-    assertMockEndpointsSatisfied();
-}
-]]></script>
-</div></div><h3 id="ScriptingLanguages-UsingPropertiesFunction">Using Properties Function</h3><p><strong>Available from Camel 2.9</strong></p><p>If you need to use the <a shape="rect" href="properties.html">Properties</a> component from a script to lookup property placeholders, then its a bit cumbersome to do so. For example, to set a header name&#160;<strong><code>myHeader</code></strong> with a value from a property placeholder, whose key is taken from a header named <strong><code>foo</code></strong>.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[.setHeader(&quot;myHeader&quot;).groovy(&quot;context.resolvePropertyPlaceholders(&#39;{{&#39; + request.headers.get(&#39;foo&#39;) + &#39;}}&#39;)&quot;)
-]]></script>
-</div></div><p>From <strong>Camel 2.9</strong>: you can now use the properties function and the same example is simpler:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[.setHeader(&quot;myHeader&quot;).groovy(&quot;properties.resolve(request.headers.get(&#39;foo&#39;))&quot;)
-]]></script>
-</div></div><h3 id="ScriptingLanguages-LoadingScriptFromExternalResource">Loading Script From External Resource</h3><p><strong>Available from Camel 2.11</strong></p><p>You can externalize the script and have Camel load it from a resource such as <strong><code>classpath:</code></strong>, <strong><code>file:</code></strong>, or <strong><code>http:</code></strong>. This is done using the following syntax: <strong><code>resource:scheme:location</code></strong> e.g. to refer to a file on the classpath you can do:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[.setHeader(&quot;myHeader&quot;).groovy(&quot;resource:classpath:mygroovy.groovy&quot;)
-]]></script>
-</div></div><h3 id="ScriptingLanguages-HowtoGettheResultfromMultipleStatementsScript">How to Get the Result from Multiple Statements Script</h3><p><strong>Available from Camel 2.14</strong></p><p>The script engine's eval method returns a&#160;<strong><code>null</code></strong> when it runs a multi-statement script. However, Camel can look up the value of a script's result by using the key <strong><code>result</code></strong> from the value set. When writing a multi-statement script set the value of the&#160;<strong><code>result</code></strong> variable as the script return value.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: text; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[bar = &quot;baz&quot;;
+<h3 id="ScriptingLanguages-ScriptContextOptions"><code>ScriptContext</code> Options</h3><p>&#160;</p><rich-text-body>The&#160;<code>JSR-223</code> scripting language's&#160;<strong><code>ScriptContext</code></strong> is pre-configured with the following attributes all set at <strong><code>ENGINE_SCOPE</code></strong>.</rich-text-body><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Attribute</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Type</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Value</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><span><code>camelContext</code><br clear="none"></span></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>org.apache.camel.CamelContext</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The Camel Context.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>context</code></p></
 td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>org.apache.camel.CamelContext</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The Camel Context (cannot be used in groovy).</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>exchange</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>org.apache.camel.Exchange</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The current Exchange.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>properties</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>org.apache.camel.builder.script.PropertiesFunction</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.9:</strong> Function with a <strong><code>resolve</code></strong> method to make it easier to use Camels <a shape="rect" href="properties.html">Properties</a> component from scripts. See further below for example.</p></td></tr><
 tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>request</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>org.apache.camel.Message</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The&#160;<strong><code>IN</code></strong> message.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>response</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>org.apache.camel.Message</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Deprecated</strong>: The&#160;<strong><code>OUT</code></strong> message. The&#160;<strong><code>OUT</code></strong> message is&#160;<strong><code>null</code></strong> by default. Use the <strong><code>IN</code></strong> message instead.</p></td></tr></tbody></table></div><p>See <a shape="rect" href="scripting-languages.html">Scripting Languages</a> for the list of languages with explicit DSL support.</p><h3 id="ScriptingLanguages-PassingAdditionalArgu
 mentstotheScriptingEngine">Passing Additional Arguments to the&#160;<code>ScriptingEngine</code></h3><p><strong>Available from Camel 2.8</strong></p><p>You can provide additional arguments to the <strong><code>ScriptingEngine</code></strong> using a header on the Camel message with the key <strong><code>CamelScriptArguments</code></strong>.</p><p>Example:<plain-text-body>{snippet:id=e1|lang=java|url=camel/trunk/components/camel-script/src/test/java/org/apache/camel/builder/script/JavaScriptExpressionTest.java}</plain-text-body></p><h3 id="ScriptingLanguages-UsingPropertiesFunction">Using Properties Function</h3><p><strong>Available from Camel 2.9</strong></p><p>If you need to use the <a shape="rect" href="properties.html">Properties</a> component from a script to lookup property placeholders, then its a bit cumbersome to do so. For example, to set a header name&#160;<strong><code>myHeader</code></strong> with a value from a property placeholder, whose key is taken from a header name
 d <strong><code>foo</code></strong>.</p><plain-text-body>.setHeader("myHeader").groovy("context.resolvePropertyPlaceholders('{{' + request.headers.get('foo') + '}}')")
+</plain-text-body><p>From <strong>Camel 2.9</strong>: you can now use the properties function and the same example is simpler:</p><parameter ac:name="language">java</parameter><plain-text-body>.setHeader("myHeader").groovy("properties.resolve(request.headers.get('foo'))")
+</plain-text-body><h3 id="ScriptingLanguages-LoadingScriptFromExternalResource">Loading Script From External Resource</h3><p><strong>Available from Camel 2.11</strong></p><p>You can externalize the script and have Camel load it from a resource such as <strong><code>classpath:</code></strong>, <strong><code>file:</code></strong>, or <strong><code>http:</code></strong>. This is done using the following syntax: <strong><code>resource:scheme:location</code></strong> e.g. to refer to a file on the classpath you can do:</p><parameter ac:name="language">java</parameter><plain-text-body>.setHeader("myHeader").groovy("resource:classpath:mygroovy.groovy")
+</plain-text-body><h3 id="ScriptingLanguages-HowtoGettheResultfromMultipleStatementsScript">How to Get the Result from Multiple Statements Script</h3><p><strong>Available from Camel 2.14</strong></p><p>The script engine's eval method returns a&#160;<strong><code>null</code></strong> when it runs a multi-statement script. However, Camel can look up the value of a script's result by using the key <strong><code>result</code></strong> from the value set. When writing a multi-statement script set the value of the&#160;<strong><code>result</code></strong> variable as the script return value.</p><parameter ac:name="language">text</parameter><plain-text-body>bar = "baz";
 # some other statements ... 
 # camel take the result value as the script evaluation result
 result = body * 2 + 1
-]]></script>
-</div></div><p>&#160;</p><h3 id="ScriptingLanguages-Dependencies">Dependencies</h3><p>To use scripting languages in your camel routes you need to add the a dependency on <strong><code>camel-script</code></strong> which integrates the JSR-223 scripting engine.</p><p>If you use maven you could just add the following to your <strong><code>pom.xml</code></strong>, substituting the version number for the latest &amp; greatest release (see <a shape="rect" href="download.html">the download page for the latest versions</a>).</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[&lt;dependency&gt;
+</plain-text-body><p>&#160;</p><h3 id="ScriptingLanguages-Dependencies">Dependencies</h3><p>To use scripting languages in your camel routes you need to add the a dependency on <strong><code>camel-script</code></strong> which integrates the JSR-223 scripting engine.</p><p>If you use maven you could just add the following to your <strong><code>pom.xml</code></strong>, substituting the version number for the latest &amp; greatest release (see <a shape="rect" href="download.html">the download page for the latest versions</a>).</p><parameter ac:name="">xml</parameter><plain-text-body>&lt;dependency&gt;
   &lt;groupId&gt;org.apache.camel&lt;/groupId&gt;
   &lt;artifactId&gt;camel-script&lt;/artifactId&gt;
   &lt;version&gt;x.x.x&lt;/version&gt;
 &lt;/dependency&gt;
-]]></script>
-</div></div>
+</plain-text-body>
 
 <h2 id="ScriptingLanguages-SeeAlso">See Also</h2>
 

Modified: websites/production/camel/content/siteindex.html
==============================================================================
--- websites/production/camel/content/siteindex.html (original)
+++ websites/production/camel/content/siteindex.html Fri Aug 25 08:22:01 2017
@@ -1586,7 +1586,7 @@
              <div class="smalltext" style="margin: 0 0 0 36px">Includes This contains a number of reusable page fragments which are included in multiple real pages in the documentation.</div>
                              <span class="icon aui-icon aui-icon-small aui-iconfont-homepage" title="Home page">Home page:</span>                 <a shape="rect" href="index.html">Index</a>
         <br clear="none">
-             <div class="smalltext" style="margin: 0 0 0 36px">Download it Today! http://camel.apache.org/images/camel-box-small.png What is Camel News RSS Feed https://cwiki.apache.org/confluence/createrssfeed.action?types=blogpost&amp;spaces=CAMEL&amp;title=Apache+Camel+News&amp;sort=modified&amp;maxResults=10&amp;timeSpan=60&amp;showCont</div>
+             <div class="smalltext" style="margin: 0 0 0 36px">Since we're on a major migration process of this website, some component documents here are out of sync right now. In the meantime you may want to look at the asciidoc in the repository: https://github.com/apache/camel/blob/master/README.md https://github</div>
                              <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" title="Page">Page:</span>                 <a shape="rect" href="infinispan.html">Infinispan</a>
         <br clear="none">
              <div class="smalltext" style="margin: 0 0 0 36px">Infinispan Component Available as of Camel 2.13.0 This component allows you to interact with Infinispan http://infinispan.org/ distributed data grid / cache. Infinispan is an extremely scalable, highly available key/value data store and data grid platform</div>
@@ -2214,7 +2214,7 @@
              <div class="smalltext" style="margin: 0 0 0 36px">2017 CVE-2017-5643 - Apache Camel's Validation Component is vulnerable against SSRF via remote DTDs and XXE CVE-2017-3159 - Apache Camel's Snakeyaml unmarshalling operation is vulnerable to Remote Code Execution attacks 2016 CVE-2016-8749 - Apache Camel's</div>
                              <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" title="Page">Page:</span>                 <a shape="rect" href="seda.html">SEDA</a>
         <br clear="none">
-             <div class="smalltext" style="margin: 0 0 0 36px">SEDA Component The seda: component provides asynchronous SEDA http://www.eecs.harvard.edu/~mdw/proj/seda/ behavior, so that messages are exchanged on a BlockingQueue http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/BlockingQueue.html and consu</div>
+             <div class="smalltext" style="margin: 0 0 0 36px">SEDA Component The seda: component provides asynchronous SEDA https://en.wikipedia.org/wiki/Staged_event-driven_architecture behavior, so that messages are exchanged on a BlockingQueue and consumers are invoked in a separate thread from the producer. http</div>
                              <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" title="Page">Page:</span>                 <a shape="rect" href="selective-consumer.html">Selective Consumer</a>
         <br clear="none">
              <div class="smalltext" style="margin: 0 0 0 36px">Selective Consumer The Selective Consumer http://www.enterpriseintegrationpatterns.com/MessageSelector.html from the EIP patterns can be implemented in two ways http://www.enterpriseintegrationpatterns.com/img/MessageSelectorSolution.gif The first solutio</div>

Modified: websites/production/camel/content/spring-java-config-example.html
==============================================================================
--- websites/production/camel/content/spring-java-config-example.html (original)
+++ websites/production/camel/content/spring-java-config-example.html Fri Aug 25 08:22:01 2017
@@ -36,17 +36,6 @@
     <![endif]-->
 
 
-  <link href='//camel.apache.org/styles/highlighter/styles/shCoreCamel.css' rel='stylesheet' type='text/css' />
-  <link href='//camel.apache.org/styles/highlighter/styles/shThemeCamel.css' rel='stylesheet' type='text/css' />
-  <script src='//camel.apache.org/styles/highlighter/scripts/shCore.js' type='text/javascript'></script>
-  <script src='//camel.apache.org/styles/highlighter/scripts/shBrushJava.js' type='text/javascript'></script>
-  <script src='//camel.apache.org/styles/highlighter/scripts/shBrushXml.js' type='text/javascript'></script>
-  <script src='//camel.apache.org/styles/highlighter/scripts/shBrushPlain.js' type='text/javascript'></script>
-  
-  <script type="text/javascript">
-  SyntaxHighlighter.defaults['toolbar'] = false;
-  SyntaxHighlighter.all();
-  </script>
 
     <title>
     Apache Camel: Spring Java Config Example
@@ -86,12 +75,9 @@
 	<tbody>
         <tr>
         <td valign="top" width="100%">
-<div class="wiki-content maincontent"><h2 id="SpringJavaConfigExample-SpringJavaConfigExample">Spring Java Config Example</h2><div class="confluence-information-macro confluence-information-macro-information"><p class="title">Simple Jar runner</p><span class="aui-icon aui-icon-small aui-iconfont-info confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>Want to run your jar file and supply a list of packages / configuration classes and just see it run with Camel? Try <code>Main</code> from <code>org.apache.camel.spring</code> which even supports command-line flags.</p></div></div><p><span style="line-height: 1.4285715;">The spring java config example is a simple refactor of the </span><a shape="rect" href="spring-example.html">spring example</a><span style="line-height: 1.4285715;"> since Camel 2.0 to show how to use the </span><a shape="rect" class="external-link" href="http://www.springsource.org/javaconfig" rel="nofollow" style="line-height: 
 1.4285715;">Spring JavaConfig</a><span style="line-height: 1.4285715;"> approach to working with Camel. In this example we just write RouteBuilder implementations, then Camel will find it through your configuration.</span></p><p>&#160;</p><p><strong>NOTE</strong> From Camel 2.2.0, camel-example-spring-javaconfig can only work with Spring 3.x.</p><p>To run the example we use the <a shape="rect" href="camel-maven-plugin.html">Camel Maven Plugin</a>. For example from the source or binary distribution the following should work</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[cd examples/camel-example-spring-javaconfig
+<div class="wiki-content maincontent"><h2 id="SpringJavaConfigExample-SpringJavaConfigExample">Spring Java Config Example</h2><parameter ac:name="title">Simple Jar runner</parameter><rich-text-body><p>Want to run your jar file and supply a list of packages / configuration classes and just see it run with Camel? Try <code>Main</code> from <code>org.apache.camel.spring</code> which even supports command-line flags.</p></rich-text-body><p><span style="line-height: 1.4285715;">The spring java config example is a simple refactor of the </span><a shape="rect" href="spring-example.html">spring example</a><span style="line-height: 1.4285715;"> since Camel 2.0 to show how to use the </span><a shape="rect" class="external-link" href="http://www.springsource.org/javaconfig" rel="nofollow" style="line-height: 1.4285715;">Spring JavaConfig</a><span style="line-height: 1.4285715;"> approach to working with Camel. In this example we just write RouteBuilder implementations, then Camel will find it 
 through your configuration.</span></p><p>&#160;</p><p><strong>NOTE</strong> From Camel 2.2.0, camel-example-spring-javaconfig can only work with Spring 3.x.</p><p>To run the example we use the <a shape="rect" href="camel-maven-plugin.html">Camel Maven Plugin</a>. For example from the source or binary distribution the following should work</p><plain-text-body>cd examples/camel-example-spring-javaconfig
 mvn camel:run
-]]></script>
-</div></div><p>You need to add camel-spring-javaconfig dependency into pom.xml and also set the configure class or base package in the camel plugin configuration.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[    &lt;dependency&gt;
+</plain-text-body><p>You need to add camel-spring-javaconfig dependency into pom.xml and also set the configure class or base package in the camel plugin configuration.</p><plain-text-body>    &lt;dependency&gt;
       &lt;groupId&gt;org.apache.camel&lt;/groupId&gt;
       &lt;artifactId&gt;camel-spring&lt;/artifactId&gt;
     &lt;/dependency&gt;
@@ -100,20 +86,7 @@ mvn camel:run
       &lt;groupId&gt;org.apache.camel&lt;/groupId&gt;
       &lt;artifactId&gt;camel-spring-javaconfig&lt;/artifactId&gt;
     &lt;/dependency&gt;
-]]></script>
-</div></div><p>Here is the configuration for camel plugin.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
-
-&lt;!-- Allows the routes to be run via &#39;mvn exec:java&#39; --&gt;
-&lt;plugin&gt;
-  &lt;groupId&gt;org.codehaus.mojo&lt;/groupId&gt;
-  &lt;artifactId&gt;exec-maven-plugin&lt;/artifactId&gt;
-  &lt;configuration&gt;
-    &lt;mainClass&gt;org.apache.camel.example.spring.javaconfig.MyApplication&lt;/mainClass&gt;
-  &lt;/configuration&gt;
-&lt;/plugin&gt;
-]]></script>
-</div></div><p>What this does is boot up the Spring ApplicationContext defined in the file MyRouteConfig class on the classpath. This is a regular Java file which has the Spring JavaConfig annotation to configure a <a shape="rect" href="camelcontext.html">CamelContext</a>.</p><div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div><p>In the method of setupCamelContext(CamelContext camelContext), we setup the JMS component's connection factory and register the component into the camelcontext. You can override this method if you want to setup the another connection factory or start up a JMS broker here.</p><p>You can write the route rule with Java <a shape="rect" href="dsl.html">DSL</a> in the route() method.</p><p>This approach, of using Java code to write the routes in the <a shape="rect" href="dsl.html">DSL</a> and Spring will help your configure the Camel context as the <a shape="rect" href="spri
 ng-java-config-example.html">Spring Java Config Example</a> shows.</p></div>
+</plain-text-body><p>Here is the configuration for camel plugin.</p><plain-text-body>{snippet:id=example|lang=xml|url=camel/trunk/examples/camel-example-spring-javaconfig/pom.xml}</plain-text-body><p>What this does is boot up the Spring ApplicationContext defined in the file MyRouteConfig class on the classpath. This is a regular Java file which has the Spring JavaConfig annotation to configure a <a shape="rect" href="camelcontext.html">CamelContext</a>.</p><plain-text-body>{snippet:id=RouteConfig|lang=java|url=camel/trunk/examples/camel-example-spring-javaconfig/src/main/java/org/apache/camel/example/spring/javaconfig/MyRouteConfig.java}</plain-text-body><p>In the method of setupCamelContext(CamelContext camelContext), we setup the JMS component's connection factory and register the component into the camelcontext. You can override this method if you want to setup the another connection factory or start up a JMS broker here.</p><p>You can write the route rule with Java <a shape="re
 ct" href="dsl.html">DSL</a> in the route() method.</p><p>This approach, of using Java code to write the routes in the <a shape="rect" href="dsl.html">DSL</a> and Spring will help your configure the Camel context as the <a shape="rect" href="spring-java-config-example.html">Spring Java Config Example</a> shows.</p></div>
         </td>
         <td valign="top">
           <div class="navigation">

Modified: websites/production/camel/content/spring-security.html
==============================================================================
--- websites/production/camel/content/spring-security.html (original)
+++ websites/production/camel/content/spring-security.html Fri Aug 25 08:22:01 2017
@@ -36,17 +36,6 @@
     <![endif]-->
 
 
-  <link href='//camel.apache.org/styles/highlighter/styles/shCoreCamel.css' rel='stylesheet' type='text/css' />
-  <link href='//camel.apache.org/styles/highlighter/styles/shThemeCamel.css' rel='stylesheet' type='text/css' />
-  <script src='//camel.apache.org/styles/highlighter/scripts/shCore.js' type='text/javascript'></script>
-  <script src='//camel.apache.org/styles/highlighter/scripts/shBrushJava.js' type='text/javascript'></script>
-  <script src='//camel.apache.org/styles/highlighter/scripts/shBrushXml.js' type='text/javascript'></script>
-  <script src='//camel.apache.org/styles/highlighter/scripts/shBrushPlain.js' type='text/javascript'></script>
-  
-  <script type="text/javascript">
-  SyntaxHighlighter.defaults['toolbar'] = false;
-  SyntaxHighlighter.all();
-  </script>
 
     <title>
     Apache Camel: Spring Security
@@ -86,67 +75,7 @@
 	<tbody>
         <tr>
         <td valign="top" width="100%">
-<div class="wiki-content maincontent"><h2 id="SpringSecurity-SpringSecurity">Spring Security</h2><p><strong>Available as of Camel 2.3</strong></p><p>The <strong>camel-spring-security</strong> component provides role-based authorization for Camel routes. It leverages the authentication and user services provided by <a shape="rect" class="external-link" href="http://static.springsource.org/spring-security/site/index.html" rel="nofollow">Spring Security</a> (formerly Acegi Security) and adds a declarative, role-based policy system to control whether a route can be executed by a given principal.</p><p>If you are not familiar with the Spring Security authentication and authorization system, please review the current reference documentation on the SpringSource web site linked above.</p><h3 id="SpringSecurity-Creatingauthorizationpolicies">Creating authorization policies</h3><p>Access to a route is controlled by an instance of a <code>SpringSecurityAuthorizationPolicy</code> object. A poli
 cy object contains the name of the Spring Security authority (role) required to run a set of endpoints and references to Spring Security <code>AuthenticationManager</code> and <code>AccessDecisionManager</code> objects used to determine whether the current principal has been assigned that role. Policy objects may be configured as Spring beans or by using an <code>&lt;authorizationPolicy&gt;</code> element in Spring XML.</p><p>The <code>&lt;authorizationPolicy&gt;</code> element may contain the following attributes:</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Default Value</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>id</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class
 ="confluenceTd"><p>The unique Spring bean identifier which is used to reference the policy in routes (required)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>access</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The Spring Security authority name that is passed to the access decision manager (required)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>authenticationManager</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>authenticationManager</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The name of the Spring Security <code>AuthenticationManager</code> object in the context</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>accessDecisionManager</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>accessDecisionManager</code></p></td><td colspan
 ="1" rowspan="1" class="confluenceTd"><p>The name of the Spring Security <code>AccessDecisionManager</code> object in the context</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>authenticationAdapter</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>DefaultAuthenticationAdapter</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.4</strong> The name of a <strong>camel-spring-security</strong> <code>AuthenticationAdapter</code> object in the context that is used to convert a <code>javax.security.auth.Subject</code> into a Spring Security <code>Authentication</code> instance.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>useThreadSecurityContext</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>If a <code>javax.security.auth.Subject</code> cannot be found in the In message header under Exchange.AU
 THENTICATION, check the Spring Security <code>SecurityContextHolder</code> for an <code>Authentication</code> object.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>alwaysReauthenticate</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>If set to true, the <code>SpringSecurityAuthorizationPolicy</code> will always call <code>AuthenticationManager.authenticate()</code> each time the policy is accessed.</p></td></tr></tbody></table></div><h3 id="SpringSecurity-ControllingaccesstoCamelroutes">Controlling access to Camel routes</h3><p>A Spring Security <code>AuthenticationManager</code> and <code>AccessDecisionManager</code> are required to use this component. Here is an example of how to configure these objects in Spring XML using the Spring Security namespace:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
-&lt;beans xmlns=&quot;http://www.springframework.org/schema/beans&quot;
-       xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
-       xmlns:spring-security=&quot;http://www.springframework.org/schema/security&quot;
-       xsi:schemaLocation=&quot;http://www.springframework.org/schema/beans
-			http://www.springframework.org/schema/beans/spring-beans.xsd
-			http://www.springframework.org/schema/security
-			http://www.springframework.org/schema/security/spring-security.xsd&quot;&gt;
-
-    &lt;bean id=&quot;accessDecisionManager&quot; class=&quot;org.springframework.security.access.vote.AffirmativeBased&quot;&gt;
-      &lt;constructor-arg index=&quot;0&quot;&gt;
-        &lt;bean class=&quot;org.springframework.security.access.vote.RoleVoter&quot;/&gt;
-      &lt;/constructor-arg&gt;
-      &lt;property name=&quot;allowIfAllAbstainDecisions&quot; value=&quot;true&quot;/&gt;
-    &lt;/bean&gt;
-    
-    &lt;spring-security:authentication-manager alias=&quot;authenticationManager&quot;&gt;
-    	&lt;spring-security:authentication-provider user-service-ref=&quot;userDetailsService&quot;/&gt;
-    &lt;/spring-security:authentication-manager&gt;
-   
-    &lt;spring-security:user-service id=&quot;userDetailsService&quot;&gt;
-        &lt;spring-security:user name=&quot;jim&quot; password=&quot;jimspassword&quot; authorities=&quot;ROLE_USER, ROLE_ADMIN&quot;/&gt;
-        &lt;spring-security:user name=&quot;bob&quot; password=&quot;bobspassword&quot; authorities=&quot;ROLE_USER&quot;/&gt;
-    &lt;/spring-security:user-service&gt;
-
-&lt;/beans&gt;
-]]></script>
-</div></div><p>Now that the underlying security objects are set up, we can use them to configure an authorization policy and use that policy to control access to a route:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
-&lt;beans xmlns=&quot;http://www.springframework.org/schema/beans&quot;
-       xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
-       xmlns:spring-security=&quot;http://www.springframework.org/schema/security&quot;
-       xsi:schemaLocation=&quot;
-          http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
-          http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
-          http://camel.apache.org/schema/spring-security http://camel.apache.org/schema/spring-security/camel-spring-security.xsd
-          http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd&quot;&gt;
-
-    &lt;!-- import the spring security configuration  --&gt;
-    &lt;import resource=&quot;classpath:org/apache/camel/component/spring/security/commonSecurity.xml&quot;/&gt;
-
-    &lt;authorizationPolicy id=&quot;admin&quot; access=&quot;ROLE_ADMIN&quot;
-                         authenticationManager=&quot;authenticationManager&quot;
-                         accessDecisionManager=&quot;accessDecisionManager&quot;
-                         xmlns=&quot;http://camel.apache.org/schema/spring-security&quot;/&gt;
-
-    &lt;camelContext id=&quot;myCamelContext&quot; xmlns=&quot;http://camel.apache.org/schema/spring&quot;&gt;
-        &lt;route&gt;
-            &lt;from uri=&quot;direct:start&quot;/&gt;
-            &lt;!-- The exchange should be authenticated with the role of ADMIN before it is send to mock:endpoint --&gt;
-            &lt;policy ref=&quot;admin&quot;&gt;
-                &lt;to uri=&quot;mock:end&quot;/&gt;
-            &lt;/policy&gt;
-        &lt;/route&gt;
-    &lt;/camelContext&gt;
-
-&lt;/beans&gt;
-]]></script>
-</div></div><p>In this example, the endpoint <code>mock:end</code> will not be executed unless a Spring Security <code>Authentication</code> object that has been or can be authenticated and contains the <code>ROLE_ADMIN</code> authority can be located by the <em>admin</em> <code>SpringSecurityAuthorizationPolicy</code>.</p><h3 id="SpringSecurity-Authentication">Authentication</h3><p>The process of obtaining security credentials that are used for authorization is not specified by this component. You can write your own processors or components which get authentication information from the exchange depending on your needs. For example, you might create a processor that gets credentials from an HTTP request header originating in the <a shape="rect" href="jetty.html">Jetty</a> component. No matter how the credentials are collected, they need to be placed in the In message or the <code>SecurityContextHolder</code> so the Camel <a shape="rect" href="spring-security.html">Spring Security</a
 > component can access them:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[import javax.security.auth.Subject;
+<div class="wiki-content maincontent"><h2 id="SpringSecurity-SpringSecurity">Spring Security</h2><p><strong>Available as of Camel 2.3</strong></p><p>The <strong>camel-spring-security</strong> component provides role-based authorization for Camel routes. It leverages the authentication and user services provided by <a shape="rect" class="external-link" href="http://static.springsource.org/spring-security/site/index.html" rel="nofollow">Spring Security</a> (formerly Acegi Security) and adds a declarative, role-based policy system to control whether a route can be executed by a given principal.</p><p>If you are not familiar with the Spring Security authentication and authorization system, please review the current reference documentation on the SpringSource web site linked above.</p><h3 id="SpringSecurity-Creatingauthorizationpolicies">Creating authorization policies</h3><p>Access to a route is controlled by an instance of a <code>SpringSecurityAuthorizationPolicy</code> object. A poli
 cy object contains the name of the Spring Security authority (role) required to run a set of endpoints and references to Spring Security <code>AuthenticationManager</code> and <code>AccessDecisionManager</code> objects used to determine whether the current principal has been assigned that role. Policy objects may be configured as Spring beans or by using an <code>&lt;authorizationPolicy&gt;</code> element in Spring XML.</p><p>The <code>&lt;authorizationPolicy&gt;</code> element may contain the following attributes:</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Default Value</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>id</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class
 ="confluenceTd"><p>The unique Spring bean identifier which is used to reference the policy in routes (required)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>access</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The Spring Security authority name that is passed to the access decision manager (required)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>authenticationManager</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>authenticationManager</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The name of the Spring Security <code>AuthenticationManager</code> object in the context</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>accessDecisionManager</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>accessDecisionManager</code></p></td><td colspan
 ="1" rowspan="1" class="confluenceTd"><p>The name of the Spring Security <code>AccessDecisionManager</code> object in the context</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>authenticationAdapter</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>DefaultAuthenticationAdapter</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.4</strong> The name of a <strong>camel-spring-security</strong> <code>AuthenticationAdapter</code> object in the context that is used to convert a <code>javax.security.auth.Subject</code> into a Spring Security <code>Authentication</code> instance.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>useThreadSecurityContext</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>If a <code>javax.security.auth.Subject</code> cannot be found in the In message header under Exchange.AU
 THENTICATION, check the Spring Security <code>SecurityContextHolder</code> for an <code>Authentication</code> object.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>alwaysReauthenticate</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>If set to true, the <code>SpringSecurityAuthorizationPolicy</code> will always call <code>AuthenticationManager.authenticate()</code> each time the policy is accessed.</p></td></tr></tbody></table></div><h3 id="SpringSecurity-ControllingaccesstoCamelroutes">Controlling access to Camel routes</h3><p>A Spring Security <code>AuthenticationManager</code> and <code>AccessDecisionManager</code> are required to use this component. Here is an example of how to configure these objects in Spring XML using the Spring Security namespace:</p><plain-text-body>{snippet:id=example|lang=xml|url=camel/trunk/components/camel-spring-security/src/tes
 t/resources/org/apache/camel/component/spring/security/commonSecurity.xml}</plain-text-body><p>Now that the underlying security objects are set up, we can use them to configure an authorization policy and use that policy to control access to a route:</p><plain-text-body>{snippet:id=example|lang=xml|url=camel/trunk/components/camel-spring-security/src/test/resources/org/apache/camel/component/spring/security/SpringSecurityCamelContext.xml}</plain-text-body><p>In this example, the endpoint <code>mock:end</code> will not be executed unless a Spring Security <code>Authentication</code> object that has been or can be authenticated and contains the <code>ROLE_ADMIN</code> authority can be located by the <em>admin</em> <code>SpringSecurityAuthorizationPolicy</code>.</p><h3 id="SpringSecurity-Authentication">Authentication</h3><p>The process of obtaining security credentials that are used for authorization is not specified by this component. You can write your own processors or components w
 hich get authentication information from the exchange depending on your needs. For example, you might create a processor that gets credentials from an HTTP request header originating in the <a shape="rect" href="jetty.html">Jetty</a> component. No matter how the credentials are collected, they need to be placed in the In message or the <code>SecurityContextHolder</code> so the Camel <a shape="rect" href="spring-security.html">Spring Security</a> component can access them:</p><parameter ac:name="">java</parameter><plain-text-body>import javax.security.auth.Subject;
 import org.apache.camel.*;
 import org.apache.commons.codec.binary.Base64;
 import org.springframework.security.authentication.*;
@@ -156,8 +85,8 @@ public class MyAuthService implements Pr
     public void process(Exchange exchange) throws Exception {
         // get the username and password from the HTTP header
         // http://en.wikipedia.org/wiki/Basic_access_authentication
-        String userpass = new String(Base64.decodeBase64(exchange.getIn().getHeader(&quot;Authorization&quot;, String.class)));
-        String[] tokens = userpass.split(&quot;:&quot;);
+        String userpass = new String(Base64.decodeBase64(exchange.getIn().getHeader("Authorization", String.class)));
+        String[] tokens = userpass.split(":");
         
         // create an Authentication object
         UsernamePasswordAuthenticationToken authToken = new UsernamePasswordAuthenticationToken(tokens[0], tokens[1]);
@@ -173,36 +102,30 @@ public class MyAuthService implements Pr
         // SecurityContextHolder.getContext().setAuthentication(authToken);
     }
 }
-]]></script>
-</div></div><p>The <code>SpringSecurityAuthorizationPolicy</code> will automatically authenticate the <code>Authentication</code> object if necessary.</p><p>There are two issues to be aware of when using the <code>SecurityContextHolder</code> instead of or in addition to the <code>Exchange.AUTHENTICATION</code> header. First, the context holder uses a thread-local variable to hold the <code>Authentication</code> object. Any routes that cross thread boundaries, like <strong>seda</strong> or <strong>jms</strong>, will lose the <code>Authentication</code> object. Second, the Spring Security system appears to expect that an <code>Authentication</code> object in the context is already authenticated and has roles (see the Technical Overview <a shape="rect" class="external-link" href="http://static.springsource.org/spring-security/site/docs/3.0.x/reference/technical-overview.html#tech-intro-authentication" rel="nofollow">section 5.3.1</a> for more details).</p><p>The default behavior of <s
 trong>camel-spring-security</strong> is to look for a <code>Subject</code> in the <code>Exchange.AUTHENTICATION</code> header. This <code>Subject</code> must contain at least one principal, which must be a subclass of <code>org.springframework.security.core.Authentication</code>. You can customize the mapping of <code>Subject</code> to <code>Authentication</code> object by providing an implementation of the <code>org.apache.camel.component.spring.security.AuthenticationAdapter</code> to your <code>&lt;authorizationPolicy&gt;</code> bean. This can be useful if you are working with components that do not use Spring Security but do provide a <code>Subject</code>. At this time, only the <a shape="rect" href="cxf.html">CXF</a> component populates the <code>Exchange.AUTHENTICATION</code> header.</p><h3 id="SpringSecurity-Handlingauthenticationandauthorizationerrors">Handling authentication and authorization errors</h3><p>If authentication or authorization fails in the <code>SpringSecurity
 AuthorizationPolicy</code>, a <code>CamelAuthorizationException</code> will be thrown. This can be handled using Camel's standard exception handling methods, like the <a shape="rect" href="exception-clause.html">Exception Clause</a>. The <code>CamelAuthorizationException</code> will have a reference to the ID of the policy which threw the exception so you can handle errors based on the policy as well as the type of exception:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[&lt;onException&gt;
+</plain-text-body><p>The <code>SpringSecurityAuthorizationPolicy</code> will automatically authenticate the <code>Authentication</code> object if necessary.</p><p>There are two issues to be aware of when using the <code>SecurityContextHolder</code> instead of or in addition to the <code>Exchange.AUTHENTICATION</code> header. First, the context holder uses a thread-local variable to hold the <code>Authentication</code> object. Any routes that cross thread boundaries, like <strong>seda</strong> or <strong>jms</strong>, will lose the <code>Authentication</code> object. Second, the Spring Security system appears to expect that an <code>Authentication</code> object in the context is already authenticated and has roles (see the Technical Overview <a shape="rect" class="external-link" href="http://static.springsource.org/spring-security/site/docs/3.0.x/reference/technical-overview.html#tech-intro-authentication" rel="nofollow">section 5.3.1</a> for more details).</p><p>The default behavior
  of <strong>camel-spring-security</strong> is to look for a <code>Subject</code> in the <code>Exchange.AUTHENTICATION</code> header. This <code>Subject</code> must contain at least one principal, which must be a subclass of <code>org.springframework.security.core.Authentication</code>. You can customize the mapping of <code>Subject</code> to <code>Authentication</code> object by providing an implementation of the <code>org.apache.camel.component.spring.security.AuthenticationAdapter</code> to your <code>&lt;authorizationPolicy&gt;</code> bean. This can be useful if you are working with components that do not use Spring Security but do provide a <code>Subject</code>. At this time, only the <a shape="rect" href="cxf.html">CXF</a> component populates the <code>Exchange.AUTHENTICATION</code> header.</p><h3 id="SpringSecurity-Handlingauthenticationandauthorizationerrors">Handling authentication and authorization errors</h3><p>If authentication or authorization fails in the <code>SpringSe
 curityAuthorizationPolicy</code>, a <code>CamelAuthorizationException</code> will be thrown. This can be handled using Camel's standard exception handling methods, like the <a shape="rect" href="exception-clause.html">Exception Clause</a>. The <code>CamelAuthorizationException</code> will have a reference to the ID of the policy which threw the exception so you can handle errors based on the policy as well as the type of exception:</p><parameter ac:name="">xml</parameter><plain-text-body>&lt;onException&gt;
   &lt;exception&gt;org.springframework.security.authentication.AccessDeniedException&lt;/exception&gt;
   &lt;choice&gt;
     &lt;when&gt;
-      &lt;simple&gt;${exception.policyId} == &#39;user&#39;&lt;/simple&gt;
+      &lt;simple&gt;${exception.policyId} == 'user'&lt;/simple&gt;
       &lt;transform&gt;
         &lt;constant&gt;You do not have ROLE_USER access!&lt;/constant&gt;
       &lt;/transform&gt;
     &lt;/when&gt;
     &lt;when&gt;
-      &lt;simple&gt;${exception.policyId} == &#39;admin&#39;&lt;/simple&gt;
+      &lt;simple&gt;${exception.policyId} == 'admin'&lt;/simple&gt;
       &lt;transform&gt;
         &lt;constant&gt;You do not have ROLE_ADMIN access!&lt;/constant&gt;
       &lt;/transform&gt;
     &lt;/when&gt;
   &lt;/choice&gt;
 &lt;/onException&gt;
-]]></script>
-</div></div><h3 id="SpringSecurity-Dependencies">Dependencies</h3><p>Maven users will need to add the following dependency to their <code>pom.xml</code> for this component:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[ 
+</plain-text-body><h3 id="SpringSecurity-Dependencies">Dependencies</h3><p>Maven users will need to add the following dependency to their <code>pom.xml</code> for this component:</p><parameter ac:name="">xml</parameter><plain-text-body> 
 &lt;dependency&gt; 
   &lt;groupId&gt;org.apache.camel&lt;/groupId&gt; 
   &lt;artifactId&gt;camel-spring-security&lt;/artifactId&gt; 
   &lt;version&gt;2.4.0&lt;/version&gt; 
 &lt;/dependency&gt; 
-]]></script>
-</div></div><p>This dependency will also pull in <code>org.springframework.security:spring-security-core:3.0.3.RELEASE</code> and <code>org.springframework.security:spring-security-config:3.0.3.RELEASE</code>.</p><p></p><h3 id="SpringSecurity-SeeAlso">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><ul class="alternate"><li><a shape="rect" href="components.html">Components</a></li></ul></div>
+</plain-text-body><p>This dependency will also pull in <code>org.springframework.security:spring-security-core:3.0.3.RELEASE</code> and <code>org.springframework.security:spring-security-config:3.0.3.RELEASE</code>.</p><p><parameter ac:name=""><a shape="rect" href="endpoint-see-also.html">Endpoint See Also</a></parameter></p><ul class="alternate"><li><a shape="rect" href="components.html">Components</a></li></ul></div>
         </td>
         <td valign="top">
           <div class="navigation">



Mime
View raw message