You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2011/02/22 19:18:43 UTC

svn commit: r1073445 - in /camel/trunk: camel-core/src/main/java/org/apache/camel/model/ camel-core/src/main/java/org/apache/camel/model/config/ camel-core/src/test/java/org/apache/camel/processor/ camel-core/src/test/resources/org/apache/camel/model/ ...

Author: davsclaus
Date: Tue Feb 22 18:18:43 2011
New Revision: 1073445

URL: http://svn.apache.org/viewvc?rev=1073445&view=rev
Log:
CAMEL-3703: Resequencer in XML now configures the config in the top of the XML and not in the bottom.

Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/ExpressionNode.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/ResequenceDefinition.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/config/BatchResequencerConfig.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/config/StreamResequencerConfig.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ResequencerTest.java
    camel/trunk/camel-core/src/test/resources/org/apache/camel/model/resequencerBatch.xml
    camel/trunk/camel-core/src/test/resources/org/apache/camel/model/resequencerStream.xml
    camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/issues/JmsSpringResequencerTest-context.xml
    camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/issues/JmsSpringSimpleTXResequencerTest.xml
    camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/BatchResequencerAllowDuplicatesTest.xml
    camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/BatchResequencerJMSPriorityTest.xml
    camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/streamResequencer.xml

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/ExpressionNode.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ExpressionNode.java?rev=1073445&r1=1073444&r2=1073445&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/ExpressionNode.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/ExpressionNode.java Tue Feb 22 18:18:43 2011
@@ -39,9 +39,9 @@ import org.apache.camel.spi.RouteContext
 @XmlAccessorType(XmlAccessType.FIELD)
 public class ExpressionNode extends ProcessorDefinition<ExpressionNode> {
     @XmlElementRef
-    private ExpressionDefinition expression;
+    protected ExpressionDefinition expression;
     @XmlElementRef
-    private List<ProcessorDefinition> outputs = new ArrayList<ProcessorDefinition>();
+    protected List<ProcessorDefinition> outputs = new ArrayList<ProcessorDefinition>();
 
     public ExpressionNode() {
     }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java?rev=1073445&r1=1073444&r2=1073445&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java Tue Feb 22 18:18:43 2011
@@ -444,7 +444,7 @@ public abstract class ProcessorDefinitio
                 if (Constants.PLACEHOLDER_QNAME.equals(qname.getNamespaceURI())) {
                     String local = qname.getLocalPart();
                     Object value = definition.getOtherAttributes().get(key);
-                    if (value != null && value instanceof String ) {
+                    if (value != null && value instanceof String) {
                         // value must be enclosed with placeholder tokens
                         String s = (String) value;
                         if (!s.startsWith(PropertiesComponent.PREFIX_TOKEN)) {
@@ -464,7 +464,6 @@ public abstract class ProcessorDefinitio
             if (log.isTraceEnabled()) {
                 log.trace("There are " + properties.size() + " properties on: " + definition);
             }
-
             // lookup and resolve properties for String based properties
             for (Map.Entry entry : properties.entrySet()) {
                 // the name is always a String
@@ -1681,8 +1680,7 @@ public abstract class ProcessorDefinitio
     public ExpressionClause<ResequenceDefinition> resequence() {
         ResequenceDefinition answer = new ResequenceDefinition();
         addOutput(answer);
-        ExpressionClause<ResequenceDefinition> clause = new ExpressionClause<ResequenceDefinition>(answer);
-        return ExpressionClause.createAndSetExpression(answer);
+        return answer.createAndSetExpression();
     }
 
     /**

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/ResequenceDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ResequenceDefinition.java?rev=1073445&r1=1073444&r2=1073445&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/ResequenceDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/ResequenceDefinition.java Tue Feb 22 18:18:43 2011
@@ -16,15 +16,20 @@
  */
 package org.apache.camel.model;
 
+import java.util.ArrayList;
+import java.util.List;
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElementRef;
 import javax.xml.bind.annotation.XmlRootElement;
 
 import org.apache.camel.Expression;
 import org.apache.camel.Processor;
+import org.apache.camel.builder.ExpressionClause;
 import org.apache.camel.model.config.BatchResequencerConfig;
 import org.apache.camel.model.config.StreamResequencerConfig;
+import org.apache.camel.model.language.ExpressionDefinition;
 import org.apache.camel.processor.Resequencer;
 import org.apache.camel.processor.StreamResequencer;
 import org.apache.camel.processor.resequencer.ExpressionResultComparator;
@@ -38,11 +43,18 @@ import org.apache.camel.util.ObjectHelpe
  */
 @XmlRootElement(name = "resequence")
 @XmlAccessorType(XmlAccessType.FIELD)
-public class ResequenceDefinition extends ExpressionNode {
+public class ResequenceDefinition extends ProcessorDefinition<ResequenceDefinition> {
+
+    // TODO: extend OutputDefinition, and use propOrder to control the ordering if possible
+
     @XmlElement(name = "batch-config", required = false)
     private BatchResequencerConfig batchConfig;
     @XmlElement(name = "stream-config", required = false)
     private StreamResequencerConfig streamConfig;
+    @XmlElementRef
+    private ExpressionDefinition expression;
+    @XmlElementRef
+    private List<ProcessorDefinition> outputs = new ArrayList<ProcessorDefinition>();
 
     public ResequenceDefinition() {
     }
@@ -52,6 +64,11 @@ public class ResequenceDefinition extend
         return "resequence";
     }
 
+    @Override
+    public List<ProcessorDefinition> getOutputs() {
+        return outputs;
+    }
+
     // Fluent API
     // -------------------------------------------------------------------------
     /**
@@ -196,6 +213,12 @@ public class ResequenceDefinition extend
         return this;
     }
 
+    public ExpressionClause<ResequenceDefinition> createAndSetExpression() {
+        ExpressionClause<ResequenceDefinition> clause = new ExpressionClause<ResequenceDefinition>(this);
+        this.setExpression(clause);
+        return clause;
+    }
+
     @Override
     public String toString() {
         return "Resequencer[" + getExpression() + " -> " + getOutputs() + "]";
@@ -203,7 +226,11 @@ public class ResequenceDefinition extend
 
     @Override
     public String getLabel() {
-        return "Resequencer[" + super.getLabel() + "]";
+        String s = "";
+        if (getExpression() != null) {
+            s = getExpression().getLabel();
+        }
+        return "Resequencer[" + s + "]";
     }
 
     public BatchResequencerConfig getBatchConfig() {
@@ -222,6 +249,14 @@ public class ResequenceDefinition extend
         this.streamConfig = streamConfig;
     }
 
+    public ExpressionDefinition getExpression() {
+        return expression;
+    }
+
+    public void setExpression(ExpressionDefinition expression) {
+        this.expression = expression;
+    }
+
     @Override
     public Processor createProcessor(RouteContext routeContext) throws Exception {
         if (streamConfig != null) {

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/config/BatchResequencerConfig.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/config/BatchResequencerConfig.java?rev=1073445&r1=1073444&r2=1073445&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/config/BatchResequencerConfig.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/config/BatchResequencerConfig.java Tue Feb 22 18:18:43 2011
@@ -25,7 +25,7 @@ import javax.xml.bind.annotation.XmlRoot
  * Defines the configuration parameters for the batch-processing
  * {@link org.apache.camel.processor.Resequencer}. Usage example:
  */
-@XmlRootElement(name = "batch-config")
+@XmlRootElement
 @XmlAccessorType(XmlAccessType.FIELD)
 public class BatchResequencerConfig {
 

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/config/StreamResequencerConfig.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/config/StreamResequencerConfig.java?rev=1073445&r1=1073444&r2=1073445&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/config/StreamResequencerConfig.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/config/StreamResequencerConfig.java Tue Feb 22 18:18:43 2011
@@ -30,7 +30,7 @@ import org.apache.camel.processor.resequ
  *
  * @version 
  */
-@XmlRootElement(name = "stream-config")
+@XmlRootElement
 @XmlAccessorType(XmlAccessType.FIELD)
 public class StreamResequencerConfig {
 

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ResequencerTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ResequencerTest.java?rev=1073445&r1=1073444&r2=1073445&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ResequencerTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ResequencerTest.java Tue Feb 22 18:18:43 2011
@@ -60,7 +60,7 @@ public class ResequencerTest extends Con
             public void configure() {
                 // START SNIPPET: example
                 from("direct:start")
-                    .resequence(body())
+                    .resequence().body()
                     .to("mock:result");
                 // END SNIPPET: example
             }

Modified: camel/trunk/camel-core/src/test/resources/org/apache/camel/model/resequencerBatch.xml
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/resources/org/apache/camel/model/resequencerBatch.xml?rev=1073445&r1=1073444&r2=1073445&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/resources/org/apache/camel/model/resequencerBatch.xml (original)
+++ camel/trunk/camel-core/src/test/resources/org/apache/camel/model/resequencerBatch.xml Tue Feb 22 18:18:43 2011
@@ -19,12 +19,12 @@
     <route>
     	<from uri="direct:start" />
     	<resequence>
+            <!--
+                batch-config can be ommitted for default resequence settings
+            -->
+            <batch-config batchTimeout="2000" batchSize="500"/>
     		<simple>body</simple>
     		<to uri="mock:result" />
-    	    <!-- 
-    	        batch-config can be ommitted for default resequence settings
-    	    -->
-    	    <batch-config batchTimeout="2000" batchSize="500"/>
     	</resequence>
     </route>
 </routes>

Modified: camel/trunk/camel-core/src/test/resources/org/apache/camel/model/resequencerStream.xml
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/resources/org/apache/camel/model/resequencerStream.xml?rev=1073445&r1=1073444&r2=1073445&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/resources/org/apache/camel/model/resequencerStream.xml (original)
+++ camel/trunk/camel-core/src/test/resources/org/apache/camel/model/resequencerStream.xml Tue Feb 22 18:18:43 2011
@@ -19,9 +19,9 @@
     <route>
     	<from uri="direct:start" />
     	<resequence>
+            <stream-config timeout="2000"/> <!-- Use default capacity -->
     		<simple>in.header.seqnum</simple>
     		<to uri="mock:result" />
-    	    <stream-config timeout="2000"/> <!-- Use default capacity -->
     	</resequence>
     </route>
 </routes>

Modified: camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/issues/JmsSpringResequencerTest-context.xml
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/issues/JmsSpringResequencerTest-context.xml?rev=1073445&r1=1073444&r2=1073445&view=diff
==============================================================================
--- camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/issues/JmsSpringResequencerTest-context.xml (original)
+++ camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/issues/JmsSpringResequencerTest-context.xml Tue Feb 22 18:18:43 2011
@@ -23,22 +23,22 @@ http://camel.apache.org/schema/spring ht
        
     <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
         <jmxAgent id="agent" disabled="true" />
+
         <route>
            <from uri="activemq:queue:in1"/>           
   		   <resequence>  		        
+                <batch-config batchSize="100" batchTimeout="10000"/>
     			<simple>body</simple>
     			<to uri="mock:result"/>
-    			<batch-config batchSize="100" batchTimeout="10000"/>    			
   			</resequence>
-  			
 		</route>
 		
 		<route>
            <from uri="activemq:queue:in2"/>           
   		   <resequence>  		        
-    			<simple>header.num</simple>    			
+                <stream-config timeout="2000"/>
+    			<simple>header.num</simple>
     			<to uri="mock:result"/>
-    			<stream-config timeout="2000"/>
   			</resequence>
 		</route>          
         

Modified: camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/issues/JmsSpringSimpleTXResequencerTest.xml
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/issues/JmsSpringSimpleTXResequencerTest.xml?rev=1073445&r1=1073444&r2=1073445&view=diff
==============================================================================
--- camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/issues/JmsSpringSimpleTXResequencerTest.xml (original)
+++ camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/issues/JmsSpringSimpleTXResequencerTest.xml Tue Feb 22 18:18:43 2011
@@ -26,9 +26,9 @@ http://camel.apache.org/schema/spring ht
         <route>
             <from uri="activemq:queue:in"/>
             <resequence>
+                <stream-config capacity="100" timeout="5000"/>
                 <simple>body</simple>
                 <to uri="activemq:queue:out"/>
-                <stream-config capacity="100" timeout="5000"/>
             </resequence>
         </route>
 

Modified: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/BatchResequencerAllowDuplicatesTest.xml
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/BatchResequencerAllowDuplicatesTest.xml?rev=1073445&r1=1073444&r2=1073445&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/BatchResequencerAllowDuplicatesTest.xml (original)
+++ camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/BatchResequencerAllowDuplicatesTest.xml Tue Feb 22 18:18:43 2011
@@ -27,9 +27,9 @@
         <route>
             <from uri="direct:start"/>
             <resequence>
+                <batch-config allowDuplicates="true"/>
                 <header>id</header>
                 <to uri="mock:result"/>
-                <batch-config allowDuplicates="true"/>
             </resequence>
         </route>
     </camelContext>

Modified: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/BatchResequencerJMSPriorityTest.xml
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/BatchResequencerJMSPriorityTest.xml?rev=1073445&r1=1073444&r2=1073445&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/BatchResequencerJMSPriorityTest.xml (original)
+++ camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/BatchResequencerJMSPriorityTest.xml Tue Feb 22 18:18:43 2011
@@ -26,14 +26,12 @@
     <camelContext xmlns="http://camel.apache.org/schema/spring">
         <route>
             <from uri="direct:start"/>
+            <!-- sort by JMSPriority by allowing duplicates (message can have same JMSPriority)
+                 and use reverse ordering so 9 is first output (most important), and 0 is last -->
             <resequence>
+                <batch-config allowDuplicates="true" reverse="true"/>
                 <header>JMSPriority</header>
                 <to uri="mock:result"/>
-<!--
-                // sort by JMSPriority by allowing duplicates (message can have same JMSPriority)
-                // and use reverse ordering so 9 is first output (most important), and 0 is last
--->
-                <batch-config allowDuplicates="true" reverse="true"/>
             </resequence>
         </route>
     </camelContext>

Modified: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/streamResequencer.xml
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/streamResequencer.xml?rev=1073445&r1=1073444&r2=1073445&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/streamResequencer.xml (original)
+++ camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/streamResequencer.xml Tue Feb 22 18:18:43 2011
@@ -27,9 +27,9 @@
     <route>
       <from uri="direct:start"/>
       <resequence>
+        <stream-config/>
         <simple>in.header.seqnum</simple>
         <to uri="mock:result" />
-        <stream-config />
       </resequence>
     </route>
   </camelContext>