You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by bu...@apache.org on 2013/01/18 03:18:42 UTC

svn commit: r847099 - in /websites/production/camel/content: cache/main.pageCache camel-27-roadmap.html camel-30-ideas.data/ camel-30-ideas.data/camel-survey-2010.pdf camel-30-ideas.html camel-30-roadmap.html design-notes.html

Author: buildbot
Date: Fri Jan 18 02:18:41 2013
New Revision: 847099

Log:
Production update by buildbot for camel

Added:
    websites/production/camel/content/camel-30-ideas.data/
    websites/production/camel/content/camel-30-ideas.data/camel-survey-2010.pdf   (with props)
    websites/production/camel/content/camel-30-ideas.html
Modified:
    websites/production/camel/content/cache/main.pageCache
    websites/production/camel/content/camel-27-roadmap.html
    websites/production/camel/content/camel-30-roadmap.html
    websites/production/camel/content/design-notes.html

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

Modified: websites/production/camel/content/camel-27-roadmap.html
==============================================================================
--- websites/production/camel/content/camel-27-roadmap.html (original)
+++ websites/production/camel/content/camel-27-roadmap.html Fri Jan 18 02:18:41 2013
@@ -78,7 +78,7 @@
 <div class="wiki-content maincontent"><h2><a shape="rect" name="Camel2.7-Roadmap-Camel2.7roadmap"></a>Camel 2.7 roadmap</h2>
 
 <p>This is a roadmap which details the overall and major goals for Camel 2.7. Fell free to discuss this at the Camel <a shape="rect" href="mailing-lists.html" title="Mailing Lists">Mailing Lists</a> if you have ideas or feedback.<br clear="none">
-The goals on this page was intended to be introduced in <a shape="rect" href="camel-30-roadmap.html" title="Camel 3.0 - Roadmap">Camel 3.0</a>. After discussing this on the <a shape="rect" class="external-link" href="http://camel.465427.n5.nabble.com/DISCUSS-Dropping-support-for-java-1-5-from-camel-2-7-0-onwards-tp3354712p3354712.html" rel="nofollow">Developer List</a> we decided to bring forward some of the goals for 3.0 to 2.7. Those goals is listed on this page:</p>
+The goals on this page was intended to be introduced in <a shape="rect" href="camel-30-ideas.html" title="Camel 3.0 - Ideas">Camel 3.0</a>. After discussing this on the <a shape="rect" class="external-link" href="http://camel.465427.n5.nabble.com/DISCUSS-Dropping-support-for-java-1-5-from-camel-2-7-0-onwards-tp3354712p3354712.html" rel="nofollow">Developer List</a> we decided to bring forward some of the goals for 3.0 to 2.7. Those goals is listed on this page:</p>
 
 <h4><a shape="rect" name="Camel2.7-Roadmap-JDK1.6"></a>JDK 1.6+ </h4>
 
@@ -119,7 +119,7 @@ And then we should use it in <tt>camel-i
 <p><b>Status: Done</b></p>
 
 <h2><a shape="rect" name="Camel2.7-Roadmap-SeeAlso"></a>See Also</h2>
-<p><a shape="rect" href="camel-30-roadmap.html" title="Camel 3.0 - Roadmap">Camel 3.0 - Roadmap</a></p></div>
+<p><a shape="rect" href="camel-30-ideas.html" title="Camel 3.0 - Ideas">Camel 3.0 - Ideas</a></p></div>
         </td>
         <td valign="top">
           <div class="navigation">

Added: websites/production/camel/content/camel-30-ideas.data/camel-survey-2010.pdf
==============================================================================
Binary file - no diff available.

Propchange: websites/production/camel/content/camel-30-ideas.data/camel-survey-2010.pdf
------------------------------------------------------------------------------
    svn:mime-type = application/pdf

Added: websites/production/camel/content/camel-30-ideas.html
==============================================================================
--- websites/production/camel/content/camel-30-ideas.html (added)
+++ websites/production/camel/content/camel-30-ideas.html Fri Jan 18 02:18:41 2013
@@ -0,0 +1,389 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<html>
+<head>
+    <link href="http://camel.apache.org/styles/site.css" rel="stylesheet" type="text/css">
+    <link href="http://camel.apache.org/styles/type-settings.css" rel="stylesheet" type="text/css">
+    <script src="http://camel.apache.org/styles/prototype.js" type="text/javascript"></script>
+    <script src="http://camel.apache.org/styles/rico.js" type="text/javascript"></script>    
+    <script src="http://camel.apache.org/styles/site.js" type="text/javascript"></script>
+
+    <meta http-equiv="Content-type" content="text/html;charset=UTF-8">
+
+    <style type="text/css">
+      .maincontent { overflow:hidden; }
+    </style>
+    <!--[if IE]>
+    <style type="text/css">
+      .maincontent { width:100%; }
+    </style>
+    <![endif]-->
+
+    <title>
+    Apache Camel: Camel 3.0 - Ideas
+    </title>
+</head>
+<body>
+<div class="white_box">
+<div class="header">
+  <div class="header_l">
+    <div class="header_r">
+    </div>
+  </div>
+</div>
+<div class="content">
+  <div class="content_l">
+    <div class="content_r">
+      <div>
+          <!-- Banner -->
+<div id="banner-content">
+	<div id="asf_logo">
+	<div id="activemq_logo" style="height:108px; background:transparent url(banner.data/apache-camel-7.png) no-repeat scroll left top;">
+            <a shape="rect" style="float:left; width:310px;display:block;text-indent:-5000px;text-decoration:none;line-height:140px; margin-top:20px; margin-left:18px;" href="http://camel.apache.org/">Camel</a>
+            <a shape="rect" style="float:right; width:180px;display:block;text-indent:-5000px;text-decoration:none;line-height:80px; margin-top:45px; margin-right:10px;" href="http://www.apache.org">Apache</a>
+	</div>
+        </div>
+</div>
+          <!-- Banner -->
+        <div class="top_red_bar">
+          <div id="site-breadcrumbs">
+                <!-- Breadcrumbs -->
+<a href="index.html">Apache Camel</a>&nbsp;&gt;&nbsp;<a href="developers.html">Developers</a>&nbsp;&gt;&nbsp;<a href="design-notes.html">Design Notes</a>&nbsp;&gt;&nbsp;<a href="camel-30-ideas.html">Camel 3.0 - Ideas</a>
+          </div>
+          <!-- Quicklinks -->
+<div id="site-quicklinks"><p><a shape="rect" href="download.html" title="Download">Download</a> | <a shape="rect" href="javadoc.html" title="JavaDoc">JavaDoc</a> | <a shape="rect" href="source.html" title="Source">Source</a> | <a shape="rect" href="discussion-forums.html" title="Discussion Forums">Forums</a> | <a shape="rect" href="support.html" title="Support">Support</a></p></div>
+          <!-- Quicklinks -->
+        </div>
+
+	<table border="0">
+	<tbody>
+        <tr>
+        <td valign="top" width="100%">
+<div class="wiki-content maincontent"><h2><a shape="rect" name="Camel3.0-Ideas-Camel3.0Ideas"></a>Camel 3.0 Ideas</h2>
+
+<div class="panelMacro"><table class="warningMacro"><colgroup span="1"><col span="1" width="24"><col span="1"></colgroup><tr><td colspan="1" rowspan="1" valign="top"><img align="middle" src="https://cwiki.apache.org/confluence/images/icons/emoticons/forbidden.gif" width="16" height="16" alt="" border="0"></td><td colspan="1" rowspan="1"><b>WIP</b><br clear="none"></td></tr></table></div>
+
+<p>This is a roadmap which details the overall and major goals for Camel 3.0. Fell free to discuss this at the Camel <a shape="rect" href="mailing-lists.html" title="Mailing Lists">Mailing Lists</a> if you have ideas or feedback.</p>
+
+<p>The Camel PMC conducted a <a shape="rect" href="camel-30-ideas.data/camel-survey-2010.pdf?version=1&amp;modificationDate=1291051405000">survey in Oct 2010</a> to get a better understanding of how Camel is used and what the priorities for Camel 3.0 should be.</p>
+
+<div class="panelMacro"><table class="warningMacro"><colgroup span="1"><col span="1" width="24"><col span="1"></colgroup><tr><td colspan="1" rowspan="1" valign="top"><img align="middle" src="https://cwiki.apache.org/confluence/images/icons/emoticons/forbidden.gif" width="16" height="16" alt="" border="0"></td><td colspan="1" rowspan="1"><b>Nothing is committed/confirmed</b><br clear="none">The items listed on this wiki page is just <b>ideas</b> for the roadmap. Anything is subject for change.<br clear="none">
+Speak up if you want to ensure a feature is on the roadmap, or if you have new ideas etc.
+
+<p>When development of Camel 3.0 starts we will update status here which items have been implemented in the source code, and which have been discarded/deferred etc.</p></td></tr></table></div>
+
+<h3><a shape="rect" name="Camel3.0-Ideas-ClearerArchitectureofCamelCore"></a>Clearer Architecture of Camel Core</h3>
+
+<p>Goals:</p>
+<ul><li>The camel components should know as little as possible about camel core</li><li>The classes needed to setup camel should be separate from the things needed at run time</li></ul>
+
+
+<p>So why should this be important? Currently components depend on camel-core as a whole and there are no further rules which classes the components should use and which classes should be private to core. Even classes from the impl package are needed. So this means that any refactoring we do in camel core could affect all components. As camel is growing steadily this can become quite problematic.</p>
+
+<p>Split camel-core into three parts:</p>
+
+<p>api, builder, impl</p>
+
+<p>These should be structured in a way that these big building blocks do not have cyclic dependencies. Any other cycles can be ignored in this step.</p>
+
+<p>Allowed depdencies ( "-&gt;" means may use, may depend on):</p>
+
+<ul><li>* -&gt; api</li><li>end user config code -&gt; builder</li><li>builder -&gt; impl</li></ul>
+
+
+<h4><a shape="rect" name="Camel3.0-Ideas-Definescopeandrulesforcamelcorepackages"></a>Define scope and rules for camel-core packages</h4>
+
+<p>In extension to the previous paragraph each camel package should have a clear scope that defines what to put in the package and what not. There should be rules that define what dependencies are allowed for classes in a package. The minimum goal is to guarantee that by following the rules dependency cycles can not happen. Additionally the rules should minimize dependencies between packages to achieve loose coupling between packages and high coherence inside a package.</p>
+
+<h4><a shape="rect" name="Camel3.0-Ideas-Routingengineoptimization"></a>Routing engine optimization</h4>
+
+<p>The internal routing engine should be optimized. See more details at <a shape="rect" href="camel-2x-speed-optimizations.html" title="Camel 2.x Speed optimizations">Camel 2.x Speed optimizations</a>.</p>
+
+<h3><a shape="rect" name="Camel3.0-Ideas-Moreflexibleroutesatruntime"></a>More flexible routes at runtime</h3>
+
+<p>When routes is added in Camel 2.x architecture, global cross cutting concerns such as error handlers, interceptors, onCompletion etc. is applied when the route is added. We need to separate this and have those applied during routing. The <tt>Channel</tt> needs to do this and therefore it must be more dynamic than its currently is. And we need to enlist the various global cross cutting concerns by their xxxDefintions in the CamelContext, so we can access them at any time. This allows end users also much more easily to add/remove interceptors, error handlers and whatnot at runtime. And it makes it much easier to add routes generated from JAXB or other sources, as we don't need to prepare or anyhow <em>mold</em> the <tt>RouteDefinition</tt> given. See ticket <a shape="rect" class="external-link" href="https://issues.apache.org/activemq/browse/CAMEL-3024">CAMEL-3024</a> for some details. </p>
+
+<h4><a shape="rect" name="Camel3.0-Ideas-RouteinitializationlogicforJavaDSLandXMLDSLs"></a>Route initialization logic for Java DSL and XML DSLs</h4>
+
+<p>The Java DSL does its route initialization slightly a bit different than the XML DSLs, due the nature of it, and the fact the fluent builders can do additional logic, which the JAXB model of XML DSLs does not. We should align the initialization logic so Java DSL and XML DSLs does the same thing. They setup the pure model at first. So the configure method in the RouteBuilder should setup the model as the XML DSL would do. Then the prepare route logic which follows could be the same in all cases. This would also allow us to ensure when people use multiple RouteBuilder classes in Java DSL, then context scoped onException, interceptors is applied for all RouteBuilders.</p>
+
+<h4><a shape="rect" name="Camel3.0-Ideas-AddOnException%2CInterceptor%2Cetc.toJAXBmodelforaCamelContextDefinition"></a>Add OnException, Interceptor, etc. to JAXB model for a CamelContextDefinition</h4>
+
+<p>Configuring context scoped onException, interceptors etc. is woven into the RouteDefinition as part of the route initialization logic. When we have a dynamic routing engine (see above) that can at runtime support this without the need for woven into the routes. Then we should also ensure the context scoped onException, interceptors etc. is available in a CamelContextDefinition. This ensures the models is always 100% kept as it was provided, and we can fully export the model to XML and other languages (having a supported render).</p>
+
+<h4><a shape="rect" name="Camel3.0-Ideas-Tightenuproutedefinitions"></a>Tighten up route definitions</h4>
+
+<p>Currently cross cutting concerns such as error handlers, interceptors, onCompletion etc. can be define anywhere in the route. We should tighten this up and only allow this to be configured in the start of the route. This also ensures when end users use code assistance in their route development, the IDE will not popup a big list which includes these cross cutting concerns. See also next note. (ProcessorDefinition will therefore be trimmed)</p>
+
+<h4><a shape="rect" name="Camel3.0-Ideas-Supportforasynchronoustransactions"></a>Support for asynchronous transactions</h4>
+
+<p>When using the asynchronous routing engine it would be desirable of transactional context could be propagated to the new threads.<br clear="none">
+This requires the TX manager supports suspend/resume on the TX. G.Nodet have worked a bit on this. See <a shape="rect" class="external-link" href="https://issues.apache.org/activemq/browse/CAMEL-2902">CAMEL-2902</a>. Also see <a shape="rect" class="external-link" href="https://issues.apache.org/activemq/browse/CAMEL-2729">CAMEL-2729</a>.</p>
+
+<p>With the <a shape="rect" href="asynchronous-routing-engine.html" title="Asynchronous Routing Engine">Asynchronous Routing Engine</a> it would be great if we could support asynchronous transaction as well. See <a shape="rect" class="external-link" href="https://issues.apache.org/activemq/browse/CAMEL-2729">CAMEL-2729</a> and <a shape="rect" class="external-link" href="https://issues.apache.org/activemq/browse/CAMEL-2902">CAMEL-2902</a></p>
+
+<h4><a shape="rect" name="Camel3.0-Ideas-Remove@deprecated"></a>Remove @deprecated</h4>
+
+<p>@deprecated features, methods, etc. is to be removed.</p>
+
+<h4><a shape="rect" name="Camel3.0-Ideas-Streamcaching"></a>Stream caching</h4>
+
+<p>We could add support for using <a shape="rect" href="hawtdb.html" title="HawtDB">HawtDB</a> as the persistent store for streams which overflow to disk store.</p>
+
+<h4><a shape="rect" name="Camel3.0-Ideas-EIP"></a>EIP</h4>
+
+<p>The <a shape="rect" href="resequencer.html" title="Resequencer">Resequencer</a> EIP currently doesn't support persistence, we could introduce this and let it leverage <a shape="rect" href="hawtdb.html" title="HawtDB">HawtDB</a> such as we did with the <a shape="rect" href="aggregator2.html" title="Aggregator2">Aggregator2</a> EIP.</p>
+
+<h4><a shape="rect" name="Camel3.0-Ideas-ScheduleinDSL"></a>Schedule in DSL</h4>
+
+<p>We could consider adding DSL syntax sugar for scheduling routes. For example currently you have to use <a shape="rect" href="quartz.html" title="Quartz">Quartz</a> or a <tt>ScheduledPollingConsumer</tt> which has the <tt>delay</tt> option. We could add DSL which has something like:</p>
+
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<pre class="code-java">
+schedule().every(5).minute().pollFrom(<span class="code-quote">"xxx"</span>).to(<span class="code-quote">"yyyy"</span>)
+</pre>
+</div></div>
+
+<p>The hard part is to come up with a good DSL syntax. We can look at <a shape="rect" href="bam.html" title="BAM">BAM</a> and see what we got there as well.</p>
+
+<p>The DSL should support both cron and non cron based, eg <a shape="rect" href="quartz.html" title="Quartz">Quartz</a>, <a shape="rect" href="spring.html" title="Spring">Spring</a> (spring 3 has cron) and regular JDK timers.</p>
+
+<h4><a shape="rect" name="Camel3.0-Ideas-Fixrouteswithmultipleinputs"></a>Fix routes with multiple inputs</h4>
+
+<p>The current implementation of routes with multiple inputs is to clone the route, which means you essentially got 2+ routes if a route has multiple inputs. However routes with multiple inputs is seldom used. The correct implementation is to only create one route but have multiple input consumers. This change will require a bit of change in current code as it relies on the <em>only 1 input consumer</em> on the route.</p>
+
+<h3><a shape="rect" name="Camel3.0-Ideas-UptodateScalaDSL"></a>Up-to-date Scala DSL</h3>
+<p><b>Done in Camel 2.11</b></p>
+
+<p>The Scala DSL is slightly out of date as we have improved the DSL a bit here and there. We should check the gap and ensure the Scala is up-to-date.</p>
+
+<h4><a shape="rect" name="Camel3.0-Ideas-AdvancedScalasupport"></a>Advanced Scala support</h4>
+
+<p>A proposal for advanced Scala support is <a shape="rect" class="external-link" href="https://github.com/krasserm/scalaz-camel/wiki" rel="nofollow">scalaz-camel</a> which is an alternative to Camel's existing Scala DSL.</p>
+
+<h4><a shape="rect" name="Camel3.0-Ideas-MoreEIPsas@annotations"></a>More EIPs as @annotations</h4>
+
+<p>Currently its only the <a shape="rect" href="routing-slip.html" title="Routing Slip">Routing Slip</a>, <a shape="rect" href="recipient-list.html" title="Recipient List">Recipient List</a> and <a shape="rect" href="dynamic-router.html" title="Dynamic Router">Dynamic Router</a> which are avail as @annotation as well. We could add more <a shape="rect" href="eip.html" title="EIP">EIP</a>s as annotations such as <a shape="rect" href="splitter.html" title="Splitter">Splitter</a>.<br clear="none">
+And also maybe annotations for <tt>AggregationStrategy</tt> to make this less Camel API dependent, so you can use a plain POJO for that.</p>
+
+<h4><a shape="rect" name="Camel3.0-Ideas-Unifiedstatistics"></a>Unified statistics</h4>
+
+<p>Currently the performance statistics is only avail when using JMX. We should allow those stats to be enabled regardless if JMX is enabled or not. Then we can use those stats from the web console. This also allows to expose those stats in the cloud where JMX is often not possible to be used.</p>
+
+<p>In the <tt>camel-jpa</tt> component we could offer JPA annotated entities with the performance status (just as we do for the tracer). Then end user can more easily use that if they want the stats to be persisted in a database using <a shape="rect" href="jpa.html" title="JPA">JPA</a>.</p>
+
+<h4><a shape="rect" name="Camel3.0-Ideas-SEDA%2FVMcomponentstoleverageasyncroutingengine"></a>SEDA/VM components to leverage async routing engine</h4>
+
+<p>This allows to use non blocking request-reply over <a shape="rect" href="seda.html" title="SEDA">SEDA</a> and <a shape="rect" href="vm.html" title="VM">VM</a>. The reason why we havent converted in 2.4 is it causes a bigger API breakage. </p>
+
+<h4><a shape="rect" name="Camel3.0-Ideas-camelosgitest"></a>camel-osgi-test</h4>
+
+<p>When testing your Camel apps with OSGi you may use PaxExam for that. We should create a test kit for osgi, like we have camel-test for regular junit testing. The test kit should make it easy for end users to have their apps tested with OSGi. We already have pieces in the <tt>tests/camel-itest-osgi</tt>. We just need to clean and shape it up so its ready for end users as well. And of course add documentation as well.<br clear="none">
+And then we should use it in <tt>camel-itest-osgi</tt> of course. See <a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/CAMEL-3777">CAMEL-3777</a>.</p>
+
+<h4><a shape="rect" name="Camel3.0-Ideas-REST"></a>REST</h4>
+<p>We already have REST support with <a shape="rect" href="cxfrs.html" title="CXFRS">CXFRS</a> and <a shape="rect" href="restlet.html" title="Restlet">Restlet</a> but it can be better. We should make sure those components is dead easy to use and you can invoke REST services in one line of code etc. And we should make more examples and tidy up the <a shape="rect" href="cxfrs.html" title="CXFRS">CXFRS</a> documentation.</p>
+
+<h4><a shape="rect" name="Camel3.0-Ideas-Moreloadtests"></a>More load tests</h4>
+<p>More load tests for frequently used Camel components (jetty, jms ...) and camel-core.</p>
+<ul><li>Ensure correct behaviour under load</li><li>Source for performance numbers (throughput etc).</li><li>Detection of memory leaks</li><li>Detection of performance decreases after refactorings</li><li>...</li></ul>
+
+
+<h4><a shape="rect" name="Camel3.0-Ideas-Fasterunittests"></a>Faster unit tests</h4>
+
+<p>Decreasing the total time for our complete build from more than 2 hours at present. This means in fact we have to decrease the time of our unit tests. At present, we have many unit test which starts Camel contexts and Camel routes to test data formats, components, endpoints, consumer ... This is not really necessary in most (or all) the cases.</p>
+
+<h4><a shape="rect" name="Camel3.0-Ideas-OSGienhancements"></a>OSGi enhancements</h4>
+<ul><li>create a single type converter registry available as OSGi service to all bundles serving as a single registry to lookup converters or to add/remove converters from custom bundles</li></ul>
+
+
+<h4><a shape="rect" name="Camel3.0-Ideas-Easiercommit%2Frollbackforcomponentdevelopers"></a>Easier commit/rollback for component developers</h4>
+
+<p>Maybe expose some interface having commit / rollback methods to make it easier for component developers to implement custom logic. Currently they may not know about <a shape="rect" href="oncompletion.html" title="OnCompletion">OnCompletion</a> and how to use <tt>UnitOfWork</tt> on Exchange to do this today.</p>
+
+<h4><a shape="rect" name="Camel3.0-Ideas-Unifyuri%2Fref"></a>Unify uri/ref</h4>
+
+<p>Instead of having both uri and ref for endpoints, we should unify this and only use uri. If people want to use ref, then they can do that using "ref:xx" as an uri. This would simplify code as we dont have to check for either one.</p>
+
+<h4><a shape="rect" name="Camel3.0-Ideas-LessSpringdependencies"></a>Less Spring dependencies</h4>
+<p><b>DONE in Camel 2.9</b></p>
+
+<p>In camel-core we use the Spring JMX annotations to more easily enlist our MBeans. We should move that logic to camel-spring. And introduce a Camel specific annotations to replace those. For example ActiveMQ does that. This allows us to use camel-core with JMX without any spring JARs at all. End users can still use the Spring JMX annotations in their custom code / components. They just need camel-spring on the classpath.</p>
+
+<p>Likewise we should move the ResourceEndpoint from camel-spring to camel-core. This ensures that resource loading on classpath works with Camel as we can leverage the ClassResolver. For example OSGi blueprint does not work with the Spring ResourceEndpoint. Also this ensures the components that uses ResourceEndpoint will no longer be dependent on Spring.</p>
+
+<p>Then we are down to have Spring JAR dependency in: camel-jms and camel-mail.</p>
+
+<h4><a shape="rect" name="Camel3.0-Ideas-IntroduceCamelJMXannotations"></a>Introduce Camel JMX annotations</h4>
+<p><b>DONE in Camel 2.9</b></p>
+
+<p>See above about less Spring dependency.</p>
+
+<h4><a shape="rect" name="Camel3.0-Ideas-RefactorUnitOfWork"></a>Refactor UnitOfWork</h4>
+
+<p>The implementation of DefaultUnitOfWork seems to have transformed itself into a to broad concern where unit of work is doing a bit more work than the transactional aspect that ties to its name.<br clear="none">
+Maybe this implementation should be named ExchangeContext and we can introduce a simpler UnitOfWork concept. This would also allow us to refactor the SubUnitOfWork into a general parent/child unit of work concept.<br clear="none">
+However this requires API changes and thus is best kept for Camel 3.0</p>
+
+<p>This is also needed by the refactor of the Message History EIP.</p>
+
+<h4><a shape="rect" name="Camel3.0-Ideas-ImprovementstoThreadPoolProfileforthreadmanagement"></a>Improvements to ThreadPoolProfile for thread management</h4>
+
+<p>We could move <tt>ThreadPoolProfile</tt> from <tt>org.apache.camel.spi</tt> to <tt>org.apache.camel</tt> and have it in the root package. </p>
+
+<h4><a shape="rect" name="Camel3.0-Ideas-TightenuponException"></a>Tighten up onException</h4>
+
+<p>We should consider tighten up the onException DSL a bit, for example to make it more clear that if you have processing steps in there, they only occur after the message has been exhausted. So maybe we need to have a onExhausted to make this clear</p>
+
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<pre class="code-java">
+onException(IOException.class).maximumRedeliveries(3)
+  .onExhausted().handled(<span class="code-keyword">true</span>).to(<span class="code-quote">"log:ignoreMe"</span>);
+</pre>
+</div></div>
+
+<p>So in this example its only after the 3 failed redeliveries, then its exhausted, and then we handle the message and route it to a log where we ignore the message.</p>
+
+<p>Also currently you can do this:</p>
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<pre class="code-java">
+onException(IOException.class).maximumRedeliveries(3)
+  .handled(<span class="code-keyword">true</span>);
+</pre>
+</div></div>
+
+<p>Which will handle the message and after this let the error handler deal with the message. See <a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/CAMEL-5069">CAMEL-5059</a>.<br clear="none">
+We should in this case use a NoopProcessor so the message is handled, but the regular error handler does not react. Then its consistent.<br clear="none">
+However we have not changed this in Camel 2.x to keep backwards compatibility.</p>
+
+<p>Likewise there has been ideas to move onRedeliverRef to &lt;redeliveryPolicy&gt; as currently its to be configured outside the policy.<br clear="none">
+It may make more sense to move onRedeliverRef to the policy to keep it together. </p>
+
+<h4><a shape="rect" name="Camel3.0-Ideas-AddcompositeEIPtocomposeanumberofEIPsintoasingleEIP"></a>Add composite EIP to compose a number of EIPs into a single EIP</h4>
+
+<p>It would be nice if we have a DSL to compose a number of child EIPs into a single EIP itself. eg a bit like &lt;pipeline&gt;. This would allow people to make it easier to group together a number of EIPs into a single "unit". This allows for example the error handler to redeliver to the composite EIP instead of at the point of failure within the group. There are use-cases where people want to do that. And today the solution is to split this into a new route, which you then disable error handler by setting it to no error handler. And then call the route using the direct endpoint. So instead if you could do &lt;composite&gt; ... stuff goes here &lt;/composite&gt; then that would be neater, as you dont have to split into multiple routes. I think there is an old JIRA ticket created about this a long time ago.</p>
+
+<h4><a shape="rect" name="Camel3.0-Ideas-MessageHistoryEIP"></a>Message History EIP</h4>
+
+<p>We should make this EIP easier to use for end users, but offering a better public API. And also have a pluggable message store, which filters that can filter what should be store. As well pluggable marshallers so people can marshal data from Exchange into a format the message store can store (BLOB, XML, JSon etc.).</p>
+
+<h4><a shape="rect" name="Camel3.0-Ideas-Lightweightwebconsole"></a>Light-weight web console</h4>
+
+<p>A new lighter web-console that is using HTML5 technology instead of scalate or other heavier frameworks.<br clear="none">
+And the console should support discovering all the Camel's in the JVM, so you don't have to co-bundle the web console with every Camel app.<br clear="none">
+This allows to install the web-console as a WAR or OSGi bundle in any container; having it find the Camel apps in the same JVM.</p>
+</div>
+        </td>
+        <td valign="top">
+          <div class="navigation">
+            <div class="navigation_top">
+                <!-- NavigationBar -->
+<div class="navigation_bottom" id="navigation_bottom"><h3><a shape="rect" name="Navigation-Overview"></a><a shape="rect" href="overview.html" title="Overview">Overview</a></h3>
+
+<ul class="alternate" type="square"><li><a shape="rect" href="index.html" title="Index">Home</a></li><li><a shape="rect" href="download.html" title="Download">Download</a></li><li><a shape="rect" href="getting-started.html" title="Getting Started">Getting Started</a></li><li><a shape="rect" href="faq.html" title="FAQ">FAQ</a></li></ul>
+
+
+<h3><a shape="rect" name="Navigation-Documentation"></a><a shape="rect" href="documentation.html" title="Documentation">Documentation</a></h3>
+
+<ul class="alternate" type="square"><li><a shape="rect" href="user-guide.html" title="User Guide">User Guide</a></li><li><a shape="rect" href="manual.html" title="Manual">Manual</a></li><li><a shape="rect" href="books.html" title="Books">Books</a></li><li><a shape="rect" href="tutorials.html" title="Tutorials">Tutorials</a></li><li><a shape="rect" href="examples.html" title="Examples">Examples</a></li><li><a shape="rect" href="cookbook.html" title="Cookbook">Cookbook</a></li><li><a shape="rect" href="architecture.html" title="Architecture">Architecture</a></li><li><a shape="rect" href="enterprise-integration-patterns.html" title="Enterprise Integration Patterns">Enterprise Integration Patterns</a></li><li><a shape="rect" href="dsl.html" title="DSL">DSL</a></li><li><a shape="rect" href="components.html" title="Components">Components</a></li><li><a shape="rect" href="data-format.html" title="Data Format">Data Format</a></li><li><a shape="rect" href="languages.html" title="Lang
 uages">Languages</a></li><li><a shape="rect" href="security.html" title="Security">Security</a></li></ul>
+
+
+<h3><a shape="rect" name="Navigation-Search"></a>Search</h3>
+
+
+<form enctype="application/x-www-form-urlencoded" method="get" id="cse-search-box" action="http://www.google.com/cse">
+  <div>
+    <input type="hidden" name="cx" value="007878419884033443453:m5nhvy4hmyq">
+    <input type="hidden" name="ie" value="UTF-8">
+    <input type="text" name="q" size="21">
+    <input type="submit" name="sa" value="Search">
+  </div>
+</form>
+<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=cse-search-box&amp;lang=en"></script>
+
+
+<h3><a shape="rect" name="Navigation-Community"></a><a shape="rect" href="community.html" title="Community">Community</a></h3>
+
+<ul class="alternate" type="square"><li><a shape="rect" href="support.html" title="Support">Support</a></li><li><a shape="rect" href="contributing.html" title="Contributing">Contributing</a></li><li><a shape="rect" href="discussion-forums.html" title="Discussion Forums">Discussion Forums</a></li><li><a shape="rect" href="mailing-lists.html" title="Mailing Lists">Mailing Lists</a></li><li><a shape="rect" href="user-stories.html" title="User Stories">User Stories</a></li><li><a shape="rect" href="news.html" title="News">News</a></li><li><a shape="rect" href="articles.html" title="Articles">Articles</a></li><li><a shape="rect" href="site.html" title="Site">Site</a></li><li><a shape="rect" href="team.html" title="Team">Team</a></li><li><a shape="rect" class="external-link" href="http://camel-extra.googlecode.com/" rel="nofollow">Camel Extra</a></li></ul>
+
+
+<h3><a shape="rect" name="Navigation-Developers"></a><a shape="rect" href="developers.html" title="Developers">Developers</a></h3>
+
+<ul class="alternate" type="square"><li><a shape="rect" href="developers.html" title="Developers">Developer Guide</a></li><li><a shape="rect" href="source.html" title="Source">Source</a></li><li><a shape="rect" href="building.html" title="Building">Building</a></li><li><a shape="rect" href="javadoc.html" title="JavaDoc">JavaDoc</a></li><li><a shape="rect" href="irc-room.html" title="IRC Room">IRC Room</a></li></ul>
+
+
+<h3><a shape="rect" name="Navigation-ApacheSoftwareFoundation"></a>Apache Software Foundation</h3>
+
+<ul class="alternate" type="square"><li><a shape="rect" class="external-link" href="http://www.apache.org/licenses/">License</a></li><li><a shape="rect" class="external-link" href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li><li><a shape="rect" class="external-link" href="http://www.apache.org/foundation/thanks.html">Thanks</a></li><li><a shape="rect" class="external-link" href="http://www.apache.org/security/">Security</a></li></ul>
+</div>
+                <!-- NavigationBar -->
+            </div>
+          </div>
+        </td>
+        </tr>
+	</tbody>
+        </table>
+
+
+        <div class="bottom_red_bar"></div>
+      </div>
+    </div>
+  </div>
+</div>
+<div class="black_box">
+<div class="footer">
+  <div class="footer_l">
+    <div class="footer_r">
+      <div>
+        <a href="$base/privacy-policy.html">Privacy Policy</a> -
+        (<a href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=23333649">edit page</a>)
+   	 (<a href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=23333649&amp;showComments=true&amp;showCommentArea=true#addcomment">add comment</a>)
+      </div>
+    </div>
+  </div>
+</div>
+</div>
+</div>
+<div class="design_attribution">
+&copy; 2004-2011 The Apache Software Foundation.
+<br>          
+Apache Camel, Camel, Apache, the Apache feather logo, and the Apache Camel project logo are trademarks of The Apache Software Foundation.  All other marks mentioned may be trademarks or registered trademarks of their respective owners.
+<br>
+<a href="http://hiramchirino.com">Graphic Design By Hiram</a>
+</div>
+
+<!-- Camel committers that would like access to the Analytics, send a note to private@camel.apache.org -->
+<script type="text/javascript">
+
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-25976253-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+
+</script>
+
+</body>
+</html>
+
+

Modified: websites/production/camel/content/camel-30-roadmap.html
==============================================================================
--- websites/production/camel/content/camel-30-roadmap.html (original)
+++ websites/production/camel/content/camel-30-roadmap.html Fri Jan 18 02:18:41 2013
@@ -75,217 +75,23 @@
 	<tbody>
         <tr>
         <td valign="top" width="100%">
-<div class="wiki-content maincontent"><h2><a shape="rect" name="Camel3.0-Roadmap-Camel3.0roadmap"></a>Camel 3.0 roadmap</h2>
+<div class="wiki-content maincontent"><h2><a shape="rect" name="Camel3.0-Roadmap-Camel3.0Roadmap"></a>Camel 3.0 Roadmap</h2>
 
-<p>This is a roadmap which details the overall and major goals for Camel 3.0. Fell free to discuss this at the Camel <a shape="rect" href="mailing-lists.html" title="Mailing Lists">Mailing Lists</a> if you have ideas or feedback.</p>
+<p>This page contains a summary of the <a shape="rect" href="camel-30-ideas.html" title="Camel 3.0 - Ideas">ideas</a> planned for the camel-3.0.0 release.</p>
 
-<p>The Camel PMC conducted a <a shape="rect" href="camel-30-roadmap.data/camel-survey-2010.pdf?version=1&amp;modificationDate=1291051405000">survey in Oct 2010</a> to get a better understanding of how Camel is used and what the priorities for Camel 3.0 should be.</p>
+<h3><a shape="rect" name="Camel3.0-Roadmap-Tasksforcamel2.x%28prepare%29"></a>Tasks for camel-2.x (prepare)</h3>
 
-<div class="panelMacro"><table class="warningMacro"><colgroup span="1"><col span="1" width="24"><col span="1"></colgroup><tr><td colspan="1" rowspan="1" valign="top"><img align="middle" src="https://cwiki.apache.org/confluence/images/icons/emoticons/forbidden.gif" width="16" height="16" alt="" border="0"></td><td colspan="1" rowspan="1"><b>Nothing is committed/confirmed</b><br clear="none">The items listed on this wiki page is just <b>ideas</b> for the roadmap. Anything is subject for change.<br clear="none">
-Speak up if you want to ensure a feature is on the roadmap, or if you have new ideas etc.
+<h4><a shape="rect" name="Camel3.0-Roadmap-Exampletask%28champion%29"></a>Example task (champion)</h4>
+<p>The Camel's hump is an ugly lump<br clear="none">
+Which well you may see at the Zoo;<br clear="none">
+But uglier yet is the hump we get<br clear="none">
+From having too little to do. <br clear="none">
+(References)<br clear="none">
+<a shape="rect" class="external-link" href="http://www.kipling.org.uk/poems_hump.htm" rel="nofollow">CAMEL-9001</a></p>
 
-<p>When development of Camel 3.0 starts we will update status here which items have been implemented in the source code, and which have been discarded/deferred etc.</p></td></tr></table></div>
+<h3><a shape="rect" name="Camel3.0-Roadmap-Tasksforcamel3.0.0%28execute%29"></a>Tasks for camel-3.0.0 (execute)</h3>
 
-<h3><a shape="rect" name="Camel3.0-Roadmap-ClearerArchitectureofCamelCore"></a>Clearer Architecture of Camel Core</h3>
-
-<p>Goals:</p>
-<ul><li>The camel components should know as little as possible about camel core</li><li>The classes needed to setup camel should be separate from the things needed at run time</li></ul>
-
-
-<p>So why should this be important? Currently components depend on camel-core as a whole and there are no further rules which classes the components should use and which classes should be private to core. Even classes from the impl package are needed. So this means that any refactoring we do in camel core could affect all components. As camel is growing steadily this can become quite problematic.</p>
-
-<p>Split camel-core into three parts:</p>
-
-<p>api, builder, impl</p>
-
-<p>These should be structured in a way that these big building blocks do not have cyclic dependencies. Any other cycles can be ignored in this step.</p>
-
-<p>Allowed depdencies ( "-&gt;" means may use, may depend on):</p>
-
-<ul><li>* -&gt; api</li><li>end user config code -&gt; builder</li><li>builder -&gt; impl</li></ul>
-
-
-<h4><a shape="rect" name="Camel3.0-Roadmap-Definescopeandrulesforcamelcorepackages"></a>Define scope and rules for camel-core packages</h4>
-
-<p>In extension to the previous paragraph each camel package should have a clear scope that defines what to put in the package and what not. There should be rules that define what dependencies are allowed for classes in a package. The minimum goal is to guarantee that by following the rules dependency cycles can not happen. Additionally the rules should minimize dependencies between packages to achieve loose coupling between packages and high coherence inside a package.</p>
-
-<h4><a shape="rect" name="Camel3.0-Roadmap-Routingengineoptimization"></a>Routing engine optimization</h4>
-
-<p>The internal routing engine should be optimized. See more details at <a shape="rect" href="camel-2x-speed-optimizations.html" title="Camel 2.x Speed optimizations">Camel 2.x Speed optimizations</a>.</p>
-
-<h3><a shape="rect" name="Camel3.0-Roadmap-Moreflexibleroutesatruntime"></a>More flexible routes at runtime</h3>
-
-<p>When routes is added in Camel 2.x architecture, global cross cutting concerns such as error handlers, interceptors, onCompletion etc. is applied when the route is added. We need to separate this and have those applied during routing. The <tt>Channel</tt> needs to do this and therefore it must be more dynamic than its currently is. And we need to enlist the various global cross cutting concerns by their xxxDefintions in the CamelContext, so we can access them at any time. This allows end users also much more easily to add/remove interceptors, error handlers and whatnot at runtime. And it makes it much easier to add routes generated from JAXB or other sources, as we don't need to prepare or anyhow <em>mold</em> the <tt>RouteDefinition</tt> given. See ticket <a shape="rect" class="external-link" href="https://issues.apache.org/activemq/browse/CAMEL-3024">CAMEL-3024</a> for some details. </p>
-
-<h4><a shape="rect" name="Camel3.0-Roadmap-RouteinitializationlogicforJavaDSLandXMLDSLs"></a>Route initialization logic for Java DSL and XML DSLs</h4>
-
-<p>The Java DSL does its route initialization slightly a bit different than the XML DSLs, due the nature of it, and the fact the fluent builders can do additional logic, which the JAXB model of XML DSLs does not. We should align the initialization logic so Java DSL and XML DSLs does the same thing. They setup the pure model at first. So the configure method in the RouteBuilder should setup the model as the XML DSL would do. Then the prepare route logic which follows could be the same in all cases. This would also allow us to ensure when people use multiple RouteBuilder classes in Java DSL, then context scoped onException, interceptors is applied for all RouteBuilders.</p>
-
-<h4><a shape="rect" name="Camel3.0-Roadmap-AddOnException%2CInterceptor%2Cetc.toJAXBmodelforaCamelContextDefinition"></a>Add OnException, Interceptor, etc. to JAXB model for a CamelContextDefinition</h4>
-
-<p>Configuring context scoped onException, interceptors etc. is woven into the RouteDefinition as part of the route initialization logic. When we have a dynamic routing engine (see above) that can at runtime support this without the need for woven into the routes. Then we should also ensure the context scoped onException, interceptors etc. is available in a CamelContextDefinition. This ensures the models is always 100% kept as it was provided, and we can fully export the model to XML and other languages (having a supported render).</p>
-
-<h4><a shape="rect" name="Camel3.0-Roadmap-Tightenuproutedefinitions"></a>Tighten up route definitions</h4>
-
-<p>Currently cross cutting concerns such as error handlers, interceptors, onCompletion etc. can be define anywhere in the route. We should tighten this up and only allow this to be configured in the start of the route. This also ensures when end users use code assistance in their route development, the IDE will not popup a big list which includes these cross cutting concerns. See also next note. (ProcessorDefinition will therefore be trimmed)</p>
-
-<h4><a shape="rect" name="Camel3.0-Roadmap-Supportforasynchronoustransactions"></a>Support for asynchronous transactions</h4>
-
-<p>When using the asynchronous routing engine it would be desirable of transactional context could be propagated to the new threads.<br clear="none">
-This requires the TX manager supports suspend/resume on the TX. G.Nodet have worked a bit on this. See <a shape="rect" class="external-link" href="https://issues.apache.org/activemq/browse/CAMEL-2902">CAMEL-2902</a>. Also see <a shape="rect" class="external-link" href="https://issues.apache.org/activemq/browse/CAMEL-2729">CAMEL-2729</a>.</p>
-
-<p>With the <a shape="rect" href="asynchronous-routing-engine.html" title="Asynchronous Routing Engine">Asynchronous Routing Engine</a> it would be great if we could support asynchronous transaction as well. See <a shape="rect" class="external-link" href="https://issues.apache.org/activemq/browse/CAMEL-2729">CAMEL-2729</a> and <a shape="rect" class="external-link" href="https://issues.apache.org/activemq/browse/CAMEL-2902">CAMEL-2902</a></p>
-
-<h4><a shape="rect" name="Camel3.0-Roadmap-Remove@deprecated"></a>Remove @deprecated</h4>
-
-<p>@deprecated features, methods, etc. is to be removed.</p>
-
-<h4><a shape="rect" name="Camel3.0-Roadmap-Streamcaching"></a>Stream caching</h4>
-
-<p>We could add support for using <a shape="rect" href="hawtdb.html" title="HawtDB">HawtDB</a> as the persistent store for streams which overflow to disk store.</p>
-
-<h4><a shape="rect" name="Camel3.0-Roadmap-EIP"></a>EIP</h4>
-
-<p>The <a shape="rect" href="resequencer.html" title="Resequencer">Resequencer</a> EIP currently doesn't support persistence, we could introduce this and let it leverage <a shape="rect" href="hawtdb.html" title="HawtDB">HawtDB</a> such as we did with the <a shape="rect" href="aggregator2.html" title="Aggregator2">Aggregator2</a> EIP.</p>
-
-<h4><a shape="rect" name="Camel3.0-Roadmap-ScheduleinDSL"></a>Schedule in DSL</h4>
-
-<p>We could consider adding DSL syntax sugar for scheduling routes. For example currently you have to use <a shape="rect" href="quartz.html" title="Quartz">Quartz</a> or a <tt>ScheduledPollingConsumer</tt> which has the <tt>delay</tt> option. We could add DSL which has something like:</p>
-
-<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
-<pre class="code-java">
-schedule().every(5).minute().pollFrom(<span class="code-quote">"xxx"</span>).to(<span class="code-quote">"yyyy"</span>)
-</pre>
-</div></div>
-
-<p>The hard part is to come up with a good DSL syntax. We can look at <a shape="rect" href="bam.html" title="BAM">BAM</a> and see what we got there as well.</p>
-
-<p>The DSL should support both cron and non cron based, eg <a shape="rect" href="quartz.html" title="Quartz">Quartz</a>, <a shape="rect" href="spring.html" title="Spring">Spring</a> (spring 3 has cron) and regular JDK timers.</p>
-
-<h4><a shape="rect" name="Camel3.0-Roadmap-Fixrouteswithmultipleinputs"></a>Fix routes with multiple inputs</h4>
-
-<p>The current implementation of routes with multiple inputs is to clone the route, which means you essentially got 2+ routes if a route has multiple inputs. However routes with multiple inputs is seldom used. The correct implementation is to only create one route but have multiple input consumers. This change will require a bit of change in current code as it relies on the <em>only 1 input consumer</em> on the route.</p>
-
-<h3><a shape="rect" name="Camel3.0-Roadmap-UptodateScalaDSL"></a>Up-to-date Scala DSL</h3>
-<p><b>Done in Camel 2.11</b></p>
-
-<p>The Scala DSL is slightly out of date as we have improved the DSL a bit here and there. We should check the gap and ensure the Scala is up-to-date.</p>
-
-<h4><a shape="rect" name="Camel3.0-Roadmap-AdvancedScalasupport"></a>Advanced Scala support</h4>
-
-<p>A proposal for advanced Scala support is <a shape="rect" class="external-link" href="https://github.com/krasserm/scalaz-camel/wiki" rel="nofollow">scalaz-camel</a> which is an alternative to Camel's existing Scala DSL.</p>
-
-<h4><a shape="rect" name="Camel3.0-Roadmap-MoreEIPsas@annotations"></a>More EIPs as @annotations</h4>
-
-<p>Currently its only the <a shape="rect" href="routing-slip.html" title="Routing Slip">Routing Slip</a>, <a shape="rect" href="recipient-list.html" title="Recipient List">Recipient List</a> and <a shape="rect" href="dynamic-router.html" title="Dynamic Router">Dynamic Router</a> which are avail as @annotation as well. We could add more <a shape="rect" href="eip.html" title="EIP">EIP</a>s as annotations such as <a shape="rect" href="splitter.html" title="Splitter">Splitter</a>.<br clear="none">
-And also maybe annotations for <tt>AggregationStrategy</tt> to make this less Camel API dependent, so you can use a plain POJO for that.</p>
-
-<h4><a shape="rect" name="Camel3.0-Roadmap-Unifiedstatistics"></a>Unified statistics</h4>
-
-<p>Currently the performance statistics is only avail when using JMX. We should allow those stats to be enabled regardless if JMX is enabled or not. Then we can use those stats from the web console. This also allows to expose those stats in the cloud where JMX is often not possible to be used.</p>
-
-<p>In the <tt>camel-jpa</tt> component we could offer JPA annotated entities with the performance status (just as we do for the tracer). Then end user can more easily use that if they want the stats to be persisted in a database using <a shape="rect" href="jpa.html" title="JPA">JPA</a>.</p>
-
-<h4><a shape="rect" name="Camel3.0-Roadmap-SEDA%2FVMcomponentstoleverageasyncroutingengine"></a>SEDA/VM components to leverage async routing engine</h4>
-
-<p>This allows to use non blocking request-reply over <a shape="rect" href="seda.html" title="SEDA">SEDA</a> and <a shape="rect" href="vm.html" title="VM">VM</a>. The reason why we havent converted in 2.4 is it causes a bigger API breakage. </p>
-
-<h4><a shape="rect" name="Camel3.0-Roadmap-camelosgitest"></a>camel-osgi-test</h4>
-
-<p>When testing your Camel apps with OSGi you may use PaxExam for that. We should create a test kit for osgi, like we have camel-test for regular junit testing. The test kit should make it easy for end users to have their apps tested with OSGi. We already have pieces in the <tt>tests/camel-itest-osgi</tt>. We just need to clean and shape it up so its ready for end users as well. And of course add documentation as well.<br clear="none">
-And then we should use it in <tt>camel-itest-osgi</tt> of course. See <a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/CAMEL-3777">CAMEL-3777</a>.</p>
-
-<h4><a shape="rect" name="Camel3.0-Roadmap-REST"></a>REST</h4>
-<p>We already have REST support with <a shape="rect" href="cxfrs.html" title="CXFRS">CXFRS</a> and <a shape="rect" href="restlet.html" title="Restlet">Restlet</a> but it can be better. We should make sure those components is dead easy to use and you can invoke REST services in one line of code etc. And we should make more examples and tidy up the <a shape="rect" href="cxfrs.html" title="CXFRS">CXFRS</a> documentation.</p>
-
-<h4><a shape="rect" name="Camel3.0-Roadmap-Moreloadtests"></a>More load tests</h4>
-<p>More load tests for frequently used Camel components (jetty, jms ...) and camel-core.</p>
-<ul><li>Ensure correct behaviour under load</li><li>Source for performance numbers (throughput etc).</li><li>Detection of memory leaks</li><li>Detection of performance decreases after refactorings</li><li>...</li></ul>
-
-
-<h4><a shape="rect" name="Camel3.0-Roadmap-Fasterunittests"></a>Faster unit tests</h4>
-
-<p>Decreasing the total time for our complete build from more than 2 hours at present. This means in fact we have to decrease the time of our unit tests. At present, we have many unit test which starts Camel contexts and Camel routes to test data formats, components, endpoints, consumer ... This is not really necessary in most (or all) the cases.</p>
-
-<h4><a shape="rect" name="Camel3.0-Roadmap-OSGienhancements"></a>OSGi enhancements</h4>
-<ul><li>create a single type converter registry available as OSGi service to all bundles serving as a single registry to lookup converters or to add/remove converters from custom bundles</li></ul>
-
-
-<h4><a shape="rect" name="Camel3.0-Roadmap-Easiercommit%2Frollbackforcomponentdevelopers"></a>Easier commit/rollback for component developers</h4>
-
-<p>Maybe expose some interface having commit / rollback methods to make it easier for component developers to implement custom logic. Currently they may not know about <a shape="rect" href="oncompletion.html" title="OnCompletion">OnCompletion</a> and how to use <tt>UnitOfWork</tt> on Exchange to do this today.</p>
-
-<h4><a shape="rect" name="Camel3.0-Roadmap-Unifyuri%2Fref"></a>Unify uri/ref</h4>
-
-<p>Instead of having both uri and ref for endpoints, we should unify this and only use uri. If people want to use ref, then they can do that using "ref:xx" as an uri. This would simplify code as we dont have to check for either one.</p>
-
-<h4><a shape="rect" name="Camel3.0-Roadmap-LessSpringdependencies"></a>Less Spring dependencies</h4>
-<p><b>DONE in Camel 2.9</b></p>
-
-<p>In camel-core we use the Spring JMX annotations to more easily enlist our MBeans. We should move that logic to camel-spring. And introduce a Camel specific annotations to replace those. For example ActiveMQ does that. This allows us to use camel-core with JMX without any spring JARs at all. End users can still use the Spring JMX annotations in their custom code / components. They just need camel-spring on the classpath.</p>
-
-<p>Likewise we should move the ResourceEndpoint from camel-spring to camel-core. This ensures that resource loading on classpath works with Camel as we can leverage the ClassResolver. For example OSGi blueprint does not work with the Spring ResourceEndpoint. Also this ensures the components that uses ResourceEndpoint will no longer be dependent on Spring.</p>
-
-<p>Then we are down to have Spring JAR dependency in: camel-jms and camel-mail.</p>
-
-<h4><a shape="rect" name="Camel3.0-Roadmap-IntroduceCamelJMXannotations"></a>Introduce Camel JMX annotations</h4>
-<p><b>DONE in Camel 2.9</b></p>
-
-<p>See above about less Spring dependency.</p>
-
-<h4><a shape="rect" name="Camel3.0-Roadmap-RefactorUnitOfWork"></a>Refactor UnitOfWork</h4>
-
-<p>The implementation of DefaultUnitOfWork seems to have transformed itself into a to broad concern where unit of work is doing a bit more work than the transactional aspect that ties to its name.<br clear="none">
-Maybe this implementation should be named ExchangeContext and we can introduce a simpler UnitOfWork concept. This would also allow us to refactor the SubUnitOfWork into a general parent/child unit of work concept.<br clear="none">
-However this requires API changes and thus is best kept for Camel 3.0</p>
-
-<p>This is also needed by the refactor of the Message History EIP.</p>
-
-<h4><a shape="rect" name="Camel3.0-Roadmap-ImprovementstoThreadPoolProfileforthreadmanagement"></a>Improvements to ThreadPoolProfile for thread management</h4>
-
-<p>We could move <tt>ThreadPoolProfile</tt> from <tt>org.apache.camel.spi</tt> to <tt>org.apache.camel</tt> and have it in the root package. </p>
-
-<h4><a shape="rect" name="Camel3.0-Roadmap-TightenuponException"></a>Tighten up onException</h4>
-
-<p>We should consider tighten up the onException DSL a bit, for example to make it more clear that if you have processing steps in there, they only occur after the message has been exhausted. So maybe we need to have a onExhausted to make this clear</p>
-
-<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
-<pre class="code-java">
-onException(IOException.class).maximumRedeliveries(3)
-  .onExhausted().handled(<span class="code-keyword">true</span>).to(<span class="code-quote">"log:ignoreMe"</span>);
-</pre>
-</div></div>
-
-<p>So in this example its only after the 3 failed redeliveries, then its exhausted, and then we handle the message and route it to a log where we ignore the message.</p>
-
-<p>Also currently you can do this:</p>
-<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
-<pre class="code-java">
-onException(IOException.class).maximumRedeliveries(3)
-  .handled(<span class="code-keyword">true</span>);
-</pre>
-</div></div>
-
-<p>Which will handle the message and after this let the error handler deal with the message. See <a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/CAMEL-5069">CAMEL-5059</a>.<br clear="none">
-We should in this case use a NoopProcessor so the message is handled, but the regular error handler does not react. Then its consistent.<br clear="none">
-However we have not changed this in Camel 2.x to keep backwards compatibility.</p>
-
-<p>Likewise there has been ideas to move onRedeliverRef to &lt;redeliveryPolicy&gt; as currently its to be configured outside the policy.<br clear="none">
-It may make more sense to move onRedeliverRef to the policy to keep it together. </p>
-
-<h4><a shape="rect" name="Camel3.0-Roadmap-AddcompositeEIPtocomposeanumberofEIPsintoasingleEIP"></a>Add composite EIP to compose a number of EIPs into a single EIP</h4>
-
-<p>It would be nice if we have a DSL to compose a number of child EIPs into a single EIP itself. eg a bit like &lt;pipeline&gt;. This would allow people to make it easier to group together a number of EIPs into a single "unit". This allows for example the error handler to redeliver to the composite EIP instead of at the point of failure within the group. There are use-cases where people want to do that. And today the solution is to split this into a new route, which you then disable error handler by setting it to no error handler. And then call the route using the direct endpoint. So instead if you could do &lt;composite&gt; ... stuff goes here &lt;/composite&gt; then that would be neater, as you dont have to split into multiple routes. I think there is an old JIRA ticket created about this a long time ago.</p>
-
-<h4><a shape="rect" name="Camel3.0-Roadmap-MessageHistoryEIP"></a>Message History EIP</h4>
-
-<p>We should make this EIP easier to use for end users, but offering a better public API. And also have a pluggable message store, which filters that can filter what should be store. As well pluggable marshallers so people can marshal data from Exchange into a format the message store can store (BLOB, XML, JSon etc.).</p>
-
-<h4><a shape="rect" name="Camel3.0-Roadmap-Lightweightwebconsole"></a>Light-weight web console</h4>
-
-<p>A new lighter web-console that is using HTML5 technology instead of scalate or other heavier frameworks.<br clear="none">
-And the console should support discovering all the Camel's in the JVM, so you don't have to co-bundle the web console with every Camel app.<br clear="none">
-This allows to install the web-console as a WAR or OSGi bundle in any container; having it find the Camel apps in the same JVM.</p>
+<h3><a shape="rect" name="Camel3.0-Roadmap-Tasksforcamel3.x%28finalize%29"></a>Tasks for camel-3.x (finalize)</h3>
 </div>
         </td>
         <td valign="top">
@@ -350,8 +156,8 @@ This allows to install the web-console a
     <div class="footer_r">
       <div>
         <a href="$base/privacy-policy.html">Privacy Policy</a> -
-        (<a href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=23333649">edit page</a>)
-   	 (<a href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=23333649&amp;showComments=true&amp;showCommentArea=true#addcomment">add comment</a>)
+        (<a href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=30749215">edit page</a>)
+   	 (<a href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=30749215&amp;showComments=true&amp;showCommentArea=true#addcomment">add comment</a>)
       </div>
     </div>
   </div>

Modified: websites/production/camel/content/design-notes.html
==============================================================================
--- websites/production/camel/content/design-notes.html (original)
+++ websites/production/camel/content/design-notes.html Fri Jan 18 02:18:41 2013
@@ -77,7 +77,7 @@
         <td valign="top" width="100%">
 <div class="wiki-content maincontent"><h2><a shape="rect" name="DesignNotes-ThefollowingsectioncontainsdesignnotesoftheApacheCamelcomponents"></a>The following section contains design notes of the Apache Camel components</h2>
 
-<ul><li><a shape="rect" href="camel-20-design.html" title="Camel 2.0 Design">Camel 2.0 Design</a></li><li><a shape="rect" href="camel-23-overhaul-of-aggregator-eip.html" title="Camel 2.3 - Overhaul of Aggregator EIP">Camel 2.3 - Overhaul of Aggregator EIP</a></li><li><a shape="rect" href="camel-23-threadpool-configuration.html" title="Camel 2.3 - ThreadPool Configuration">Camel 2.3 - ThreadPool Configuration</a></li><li><a shape="rect" href="camel-27-roadmap.html" title="Camel 2.7 - Roadmap">Camel 2.7 - Roadmap</a></li><li><a shape="rect" href="camel-29-jmx-and-reducing-spring-dependency.html" title="Camel 2.9 - JMX and reducing Spring dependency">Camel 2.9 - JMX and reducing Spring dependency</a></li><li><a shape="rect" href="camel-2x-debugger-api.html" title="Camel 2.x - Debugger API">Camel 2.x - Debugger API</a></li><li><a shape="rect" href="camel-2x-speed-optimizations.html" title="Camel 2.x Speed optimizations">Camel 2.x Speed optimizations</a></li><li><a shape="rect" h
 ref="camel-30-introduce-an-api-for-components.html" title="Camel 3.0 - Introduce an API for components">Camel 3.0 - Introduce an API for components</a></li><li><a shape="rect" href="camel-30-roadmap.html" title="Camel 3.0 - Roadmap">Camel 3.0 - Roadmap</a></li><li><a shape="rect" href="camel-cxf-design.html" title="Camel CXF Design">Camel CXF Design</a></li><li><a shape="rect" href="camel-security.html" title="Camel Security">Camel Security</a></li></ul></div>
+<ul><li><a shape="rect" href="camel-20-design.html" title="Camel 2.0 Design">Camel 2.0 Design</a></li><li><a shape="rect" href="camel-23-overhaul-of-aggregator-eip.html" title="Camel 2.3 - Overhaul of Aggregator EIP">Camel 2.3 - Overhaul of Aggregator EIP</a></li><li><a shape="rect" href="camel-23-threadpool-configuration.html" title="Camel 2.3 - ThreadPool Configuration">Camel 2.3 - ThreadPool Configuration</a></li><li><a shape="rect" href="camel-27-roadmap.html" title="Camel 2.7 - Roadmap">Camel 2.7 - Roadmap</a></li><li><a shape="rect" href="camel-29-jmx-and-reducing-spring-dependency.html" title="Camel 2.9 - JMX and reducing Spring dependency">Camel 2.9 - JMX and reducing Spring dependency</a></li><li><a shape="rect" href="camel-2x-debugger-api.html" title="Camel 2.x - Debugger API">Camel 2.x - Debugger API</a></li><li><a shape="rect" href="camel-2x-speed-optimizations.html" title="Camel 2.x Speed optimizations">Camel 2.x Speed optimizations</a></li><li><a shape="rect" h
 ref="camel-30-ideas.html" title="Camel 3.0 - Ideas">Camel 3.0 - Ideas</a></li><li><a shape="rect" href="camel-30-introduce-an-api-for-components.html" title="Camel 3.0 - Introduce an API for components">Camel 3.0 - Introduce an API for components</a></li><li><a shape="rect" href="camel-30-roadmap.html" title="Camel 3.0 - Roadmap">Camel 3.0 - Roadmap</a></li><li><a shape="rect" href="camel-cxf-design.html" title="Camel CXF Design">Camel CXF Design</a></li><li><a shape="rect" href="camel-security.html" title="Camel Security">Camel Security</a></li></ul></div>
         </td>
         <td valign="top">
           <div class="navigation">