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>