Author: davsclaus Date: Wed Feb 23 08:25:28 2011 New Revision: 1073634 URL: http://svn.apache.org/viewvc?rev=1073634&view=rev Log: CAMEL-3707: Sort EIP does not support outputs. And in XML DSL its configured its expression just as the other EIPs. Removed not wanted methods from Java DSL.
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java camel/trunk/camel-core/src/main/java/org/apache/camel/model/SortDefinition.java camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SortBodyTest.java camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/sortBodyTest.xml camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/sortExpressionTest.xml 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=1073634&r1=1073633&r2=1073634&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 Wed Feb 23 08:25:28 2011 @@ -2547,26 +2547,13 @@ public abstract class ProcessorDefinitio } /** - * Sorts the IN message body using the given comparator. - * The IN body mut be convertable to {@link List}. - * - * @param comparator the comparator to use for sorting - * @return the builder - */ - @SuppressWarnings("unchecked") - public Type sortBody(Comparator comparator) { - addOutput(new SortDefinition(body(), comparator)); - return (Type) this; - } - - /** - * Sorts the IN message body using a default sorting based on toString representation. - * The IN body mut be convertable to {@link List}. + * Sorts the expression using a default sorting based on toString representation. * + * @param expression the expression, must be convertable to {@link List} * @return the builder */ - public Type sortBody() { - return sortBody(null); + public Type sort(Expression expression) { + return sort(expression, null); } /** @@ -2583,13 +2570,14 @@ public abstract class ProcessorDefinitio } /** - * Sorts the expression using a default sorting based on toString representation. + * Sorts the expression * - * @param expression the expression, must be convertable to {@link List} * @return the builder */ - public Type sort(Expression expression) { - return sort(expression, null); + public ExpressionClause<SortDefinition> sort() { + SortDefinition answer = new SortDefinition(); + addOutput(answer); + return ExpressionClause.createAndSetExpression(answer); } /** Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/SortDefinition.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/SortDefinition.java?rev=1073634&r1=1073633&r2=1073634&view=diff ============================================================================== --- camel/trunk/camel-core/src/main/java/org/apache/camel/model/SortDefinition.java (original) +++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/SortDefinition.java Wed Feb 23 08:25:28 2011 @@ -16,21 +16,20 @@ */ package org.apache.camel.model; -import java.util.Collections; import java.util.Comparator; -import java.util.List; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlAttribute; -import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; import org.apache.camel.Expression; import org.apache.camel.Processor; +import org.apache.camel.model.language.ExpressionDefinition; import org.apache.camel.processor.SortProcessor; import org.apache.camel.spi.RouteContext; import org.apache.camel.util.ObjectHelper; + import static org.apache.camel.builder.ExpressionBuilder.bodyExpression; /** @@ -38,19 +37,17 @@ import static org.apache.camel.builder.E */ @XmlRootElement(name = "sort") @XmlAccessorType(XmlAccessType.FIELD) -public class SortDefinition extends OutputDefinition<SortDefinition> { +public class SortDefinition extends NoOutputExpressionNode { @XmlTransient private Comparator<Object> comparator; - @XmlAttribute(required = false) + @XmlAttribute private String comparatorRef; - @XmlElement(name = "expression", required = false) - private ExpressionSubElementDefinition expression; public SortDefinition() { } public SortDefinition(Expression expression) { - setExpression(expression); + setExpression(new ExpressionDefinition(expression)); } public SortDefinition(Expression expression, Comparator<Object> comparator) { @@ -86,24 +83,15 @@ public class SortDefinition extends Outp } // if no expression provided then default to body expression + Expression exp; if (getExpression() == null) { - setExpression(bodyExpression()); - } - - Expression exp = expression.getExpression(); - // fallback to the type when its been initialized from JAXB using camel-spring - if (exp == null) { - exp = expression.getExpressionType(); + exp = bodyExpression(); + } else { + exp = getExpression().createExpression(routeContext); } return new SortProcessor(exp, getComparator()); } - @Override - @SuppressWarnings("unchecked") - public List<ProcessorDefinition> getOutputs() { - return Collections.EMPTY_LIST; - } - public Comparator<Object> getComparator() { return comparator; } @@ -120,18 +108,6 @@ public class SortDefinition extends Outp this.comparatorRef = comparatorRef; } - public ExpressionSubElementDefinition getExpression() { - return expression; - } - - public void setExpression(Expression expression) { - this.expression = new ExpressionSubElementDefinition(expression); - } - - public void setExpression(ExpressionSubElementDefinition expression) { - this.expression = expression; - } - /** * Sets the comparator to use for sorting * Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SortBodyTest.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SortBodyTest.java?rev=1073634&r1=1073633&r2=1073634&view=diff ============================================================================== --- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SortBodyTest.java (original) +++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SortBodyTest.java Wed Feb 23 08:25:28 2011 @@ -43,7 +43,7 @@ public class SortBodyTest extends Contex return new RouteBuilder() { public void configure() { // START SNIPPET: e1 - from("direct:start").sortBody().to("mock:result"); + from("direct:start").sort().body().to("mock:result"); // END SNIPPET: e1 } }; Modified: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/sortBodyTest.xml URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/sortBodyTest.xml?rev=1073634&r1=1073633&r2=1073634&view=diff ============================================================================== --- camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/sortBodyTest.xml (original) +++ camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/sortBodyTest.xml Wed Feb 23 08:25:28 2011 @@ -26,8 +26,10 @@ <camelContext xmlns="http://camel.apache.org/schema/spring"> <route> <from uri="direct:start"/> - <!-- will default sort the body using a default comparator --> - <sort/> + <!-- will sort the body using a default comparator --> + <sort> + <simple>body</simple> + </sort> <to uri="mock:result"/> </route> </camelContext> Modified: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/sortExpressionTest.xml URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/sortExpressionTest.xml?rev=1073634&r1=1073633&r2=1073634&view=diff ============================================================================== --- camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/sortExpressionTest.xml (original) +++ camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/sortExpressionTest.xml Wed Feb 23 08:25:28 2011 @@ -28,9 +28,7 @@ <from uri="direct:start"/> <!-- will tokenize the body by comma and sort it --> <sort> - <expression> - <tokenize token=","/> - </expression> + <tokenize token=","/> </sort> <to uri="mock:result"/> </route> @@ -39,9 +37,7 @@ <from uri="direct:reverse"/> <!-- will tokenize the body by comma and sort it using the comparator --> <sort comparatorRef="myReverseComparator"> - <expression> - <tokenize token=","/> - </expression> + <tokenize token=","/> </sort> <to uri="mock:result"/> </route>