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 2010/05/20 08:35:54 UTC
svn commit: r946538 - in /camel/trunk:
camel-core/src/main/java/org/apache/camel/model/
camel-core/src/main/java/org/apache/camel/processor/validation/
camel-core/src/main/resources/org/apache/camel/model/
camel-core/src/test/java/org/apache/camel/proc...
Author: davsclaus
Date: Thu May 20 06:35:54 2010
New Revision: 946538
URL: http://svn.apache.org/viewvc?rev=946538&view=rev
Log:
CAMEL-1537: Validate EIP. Polished patch a bit and added test to Spring XML.
Added:
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ValidateSimpleTest.java
- copied, changed from r946531, camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ValidateRegExpTest.java
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringValidateSimpleTest.java
- copied, changed from r946531, camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringConvertBodyTest.java
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/ValidateSimpleTest.xml
- copied, changed from r946531, camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/convertBody.xml
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/ValidateDefinition.java
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/validation/PredicateValidatingProcessor.java
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/validation/PredicateValidationException.java
camel/trunk/camel-core/src/main/resources/org/apache/camel/model/jaxb.index
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ValidateRegExpTest.java
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=946538&r1=946537&r2=946538&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 Thu May 20 06:35:54 2010
@@ -1112,19 +1112,47 @@ public abstract class ProcessorDefinitio
/**
* Creates a validation expression which only if it is <tt>true</tt> then the
- * exchange is forwarded to the destination. Otherwise a
- * PredicateExpValidationException is thrown.
+ * exchange is forwarded to the destination.
+ * Otherwise a {@link org.apache.camel.processor.validation.PredicateValidationException} is thrown.
*
- * @param builder the value builder
- * @return the validate definition
+ * @param expression the expression
+ * @return the builder
+ */
+ public ValidateDefinition validate(Expression expression) {
+ ValidateDefinition answer = new ValidateDefinition();
+ answer.setExpression(new ExpressionDefinition(expression));
+ addOutput(answer);
+ return answer;
+ }
+
+ /**
+ * Creates a validation expression which only if it is <tt>true</tt> then the
+ * exchange is forwarded to the destination.
+ * Otherwise a {@link org.apache.camel.processor.validation.PredicateValidationException} is thrown.
+ *
+ * @param predicate the predicate
+ * @return the builder
*/
- public ValidateDefinition validate(ValueBuilder builder) {
- ValidateDefinition validate = new ValidateDefinition(builder);
- addOutput(validate);
- return validate;
+ public ValidateDefinition validate(Predicate predicate) {
+ ValidateDefinition answer = new ValidateDefinition();
+ answer.setExpression(new ExpressionDefinition(predicate));
+ addOutput(answer);
+ return answer;
}
/**
+ * Creates a validation expression which only if it is <tt>true</tt> then the
+ * exchange is forwarded to the destination.
+ * Otherwise a {@link org.apache.camel.processor.validation.PredicateValidationException} is thrown.
+ *
+ * @return the builder
+ */
+ public ExpressionClause<ValidateDefinition> validate() {
+ ValidateDefinition answer = new ValidateDefinition();
+ addOutput(answer);
+ return ExpressionClause.createAndSetExpression(answer);
+ }
+ /**
* <a href="http://camel.apache.org/load-balancer.html">Load Balancer EIP:</a>
* Creates a loadbalance
*
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/ValidateDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ValidateDefinition.java?rev=946538&r1=946537&r2=946538&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/ValidateDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/ValidateDefinition.java Thu May 20 06:35:54 2010
@@ -16,18 +16,11 @@
*/
package org.apache.camel.model;
-import java.util.Comparator;
-
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;
import org.apache.camel.Processor;
-import org.apache.camel.builder.ExpressionClause;
-import org.apache.camel.builder.PredicateBuilder;
-import org.apache.camel.builder.ValueBuilder;
-import org.apache.camel.model.language.ExpressionDefinition;
import org.apache.camel.processor.validation.PredicateValidatingProcessor;
import org.apache.camel.spi.RouteContext;
@@ -39,27 +32,11 @@ import org.apache.camel.spi.RouteContext
@XmlRootElement(name = "validate")
@XmlAccessorType(XmlAccessType.FIELD)
public class ValidateDefinition extends ExpressionNode {
- @XmlAttribute(required = false)
- private String regexExpression;
-
+
public ValidateDefinition() {
- // TODO need to find a way to set the ValueBuilder from XML
super();
}
- public ValidateDefinition(ValueBuilder builder) {
- super(builder);
- }
-
- public void setRegexExpression(String regex) {
- this.regexExpression = regex;
- regex(regex);
- }
-
- public String getComparatorRef() {
- return regexExpression;
- }
-
@Override
public String toString() {
return "Validate[" + getExpression() + " -> " + getOutputs() + "]";
@@ -76,27 +53,5 @@ public class ValidateDefinition extends
Processor childProcessor = routeContext.createProcessor(this);
return new PredicateValidatingProcessor(getExpression().createPredicate(routeContext), childProcessor);
}
-
- // Fluent API
- //-------------------------------------------------------------------------
-
- /**
- * Sets the regular expression
- *
- * @param regex the regeular expression
- * @return the ValidateDefinition
- */
- public ValidateDefinition regex(String regex) {
- setExpression(new ExpressionDefinition(PredicateBuilder.regex(getExpression(), regex)));
- return this;
- }
-
-
- /**
- * Set the expression that this FilterType will use
- * @return the builder
- */
- public ExpressionClause<ValidateDefinition> expression() {
- return ExpressionClause.createAndSetExpression(this);
- }
+
}
\ No newline at end of file
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/validation/PredicateValidatingProcessor.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/validation/PredicateValidatingProcessor.java?rev=946538&r1=946537&r2=946538&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/validation/PredicateValidatingProcessor.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/validation/PredicateValidatingProcessor.java Thu May 20 06:35:54 2010
@@ -45,7 +45,7 @@ public class PredicateValidatingProcesso
boolean matches = predicate.matches(exchange);
if (LOG.isDebugEnabled()) {
- LOG.debug("Validation " + (matches ? "succeed " : "failed ") + "for " + exchange + " and Predicate[" + predicate + "]");
+ LOG.debug("Validation " + (matches ? "succeed " : "failed ") + "for " + exchange + " with Predicate[" + predicate + "]");
}
if (matches) {
@@ -57,11 +57,11 @@ public class PredicateValidatingProcesso
@Override
public String toString() {
- return "validate[if: " + predicate + " matches]";
+ return "validate[" + predicate + "]";
}
public String getTraceLabel() {
- return toString();
+ return "validate";
}
public Predicate getPredicate() {
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/validation/PredicateValidationException.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/validation/PredicateValidationException.java?rev=946538&r1=946537&r2=946538&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/validation/PredicateValidationException.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/validation/PredicateValidationException.java Thu May 20 06:35:54 2010
@@ -40,7 +40,6 @@ public class PredicateValidationExceptio
StringBuilder builder = new StringBuilder("Validation failed for Predicate[");
builder.append(predicate.toString());
builder.append("]");
-
return builder.toString();
}
Modified: camel/trunk/camel-core/src/main/resources/org/apache/camel/model/jaxb.index
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/resources/org/apache/camel/model/jaxb.index?rev=946538&r1=946537&r2=946538&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/resources/org/apache/camel/model/jaxb.index (original)
+++ camel/trunk/camel-core/src/main/resources/org/apache/camel/model/jaxb.index Thu May 20 06:35:54 2010
@@ -79,5 +79,6 @@ TransactedDefinition
TransformDefinition
TryDefinition
UnmarshalDefinition
+ValidateDefinition
WhenDefinition
WireTapDefinition
Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ValidateRegExpTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ValidateRegExpTest.java?rev=946538&r1=946537&r2=946538&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ValidateRegExpTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ValidateRegExpTest.java Thu May 20 06:35:54 2010
@@ -44,7 +44,7 @@ public class ValidateRegExpTest extends
template.sendBody(startEndpoint, "01.01.2010");
- resultEndpoint.assertIsSatisfied();
+ assertMockEndpointsSatisfied();
}
public void testSendNotMatchingMessage() throws Exception {
@@ -55,12 +55,12 @@ public class ValidateRegExpTest extends
fail("CamelExecutionException expected");
} catch (CamelExecutionException e) {
// expected
- assertTrue(e.getCause() instanceof PredicateValidationException);
- String message = ((PredicateValidationException) e.getCause()).getMessage();
- assertEquals("Validation failed for Predicate[{bodyAs[java.lang.String]}.matches('^\\d{2}\\.\\d{2}\\.\\d{4}$')]. Exchange[Message: 1.1.2010]", message);
+ assertIsInstanceOf(PredicateValidationException.class, e.getCause());
+ assertEquals("Validation failed for Predicate[bodyAs[java.lang.String].matches('^\\d{2}\\.\\d{2}\\.\\d{4}$')]."
+ + " Exchange[Message: 1.1.2010]", e.getCause().getMessage());
}
- resultEndpoint.assertIsSatisfied();
+ assertMockEndpointsSatisfied();
}
@@ -68,7 +68,7 @@ public class ValidateRegExpTest extends
return new RouteBuilder() {
public void configure() {
from("direct:start")
- .validate(body(String.class)).regex("^\\d{2}\\.\\d{2}\\.\\d{4}$")
+ .validate(body(String.class).regex("^\\d{2}\\.\\d{2}\\.\\d{4}$"))
.to("mock:result");
}
};
Copied: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ValidateSimpleTest.java (from r946531, camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ValidateRegExpTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ValidateSimpleTest.java?p2=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ValidateSimpleTest.java&p1=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ValidateRegExpTest.java&r1=946531&r2=946538&rev=946538&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ValidateRegExpTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ValidateSimpleTest.java Thu May 20 06:35:54 2010
@@ -26,15 +26,15 @@ import org.apache.camel.processor.valida
/**
* @version $Revision$
*/
-public class ValidateRegExpTest extends ContextTestSupport {
-
+public class ValidateSimpleTest extends ContextTestSupport {
+
private Endpoint startEndpoint;
private MockEndpoint resultEndpoint;
-
+
@Override
protected void setUp() throws Exception {
super.setUp();
-
+
startEndpoint = resolveMandatoryEndpoint("direct:start", Endpoint.class);
resultEndpoint = resolveMandatoryEndpoint("mock:result", MockEndpoint.class);
}
@@ -42,25 +42,25 @@ public class ValidateRegExpTest extends
public void testSendMatchingMessage() throws Exception {
resultEndpoint.expectedMessageCount(1);
- template.sendBody(startEndpoint, "01.01.2010");
-
- resultEndpoint.assertIsSatisfied();
+ template.sendBody(startEndpoint, "Hello Camel");
+
+ assertMockEndpointsSatisfied();
}
public void testSendNotMatchingMessage() throws Exception {
resultEndpoint.expectedMessageCount(0);
try {
- template.sendBody(startEndpoint, "1.1.2010");
+ template.sendBody(startEndpoint, "Bye World");
fail("CamelExecutionException expected");
} catch (CamelExecutionException e) {
// expected
- assertTrue(e.getCause() instanceof PredicateValidationException);
- String message = ((PredicateValidationException) e.getCause()).getMessage();
- assertEquals("Validation failed for Predicate[{bodyAs[java.lang.String]}.matches('^\\d{2}\\.\\d{2}\\.\\d{4}$')]. Exchange[Message: 1.1.2010]", message);
+ assertIsInstanceOf(PredicateValidationException.class, e.getCause());
+ assertEquals("Validation failed for Predicate[body contains Camel]."
+ + " Exchange[Message: Bye World]", e.getCause().getMessage());
}
- resultEndpoint.assertIsSatisfied();
+ assertMockEndpointsSatisfied();
}
@@ -68,7 +68,7 @@ public class ValidateRegExpTest extends
return new RouteBuilder() {
public void configure() {
from("direct:start")
- .validate(body(String.class)).regex("^\\d{2}\\.\\d{2}\\.\\d{4}$")
+ .validate().simple("${body} contains 'Camel'")
.to("mock:result");
}
};
Copied: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringValidateSimpleTest.java (from r946531, camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringConvertBodyTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringValidateSimpleTest.java?p2=camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringValidateSimpleTest.java&p1=camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringConvertBodyTest.java&r1=946531&r2=946538&rev=946538&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringConvertBodyTest.java (original)
+++ camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringValidateSimpleTest.java Thu May 20 06:35:54 2010
@@ -17,12 +17,13 @@
package org.apache.camel.spring.processor;
import org.apache.camel.CamelContext;
-import org.apache.camel.processor.ConvertBodyTest;
+import org.apache.camel.processor.ValidateSimpleTest;
+
import static org.apache.camel.spring.processor.SpringTestHelper.createSpringCamelContext;
-public class SpringConvertBodyTest extends ConvertBodyTest {
+public class SpringValidateSimpleTest extends ValidateSimpleTest {
+
protected CamelContext createCamelContext() throws Exception {
- return createSpringCamelContext(this,
- "org/apache/camel/spring/processor/convertBody.xml");
+ return createSpringCamelContext(this, "org/apache/camel/spring/processor/ValidateSimpleTest.xml");
}
-}
+}
\ No newline at end of file
Copied: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/ValidateSimpleTest.xml (from r946531, camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/convertBody.xml)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/ValidateSimpleTest.xml?p2=camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/ValidateSimpleTest.xml&p1=camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/convertBody.xml&r1=946531&r2=946538&rev=946538&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/convertBody.xml (original)
+++ camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/ValidateSimpleTest.xml Thu May 20 06:35:54 2010
@@ -22,49 +22,16 @@
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
">
- <!-- START SNIPPET: example -->
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="direct:start"/>
- <convertBodyTo type="java.lang.Integer"/>
- <to uri="mock:result"/>
- </route>
-
- <route errorHandlerRef="deadLetterErrorHandler">
- <from uri="direct:invalid"/>
- <convertBodyTo type="java.util.Date"/>
- <to uri="mock:result"/>
- </route>
-
- <route>
- <from uri="direct:charset"/>
- <convertBodyTo type="java.lang.byte[]" charset="iso-8859-1"/>
- <to uri="mock:result"/>
- </route>
-
- <route>
- <from uri="direct:charset2"/>
- <convertBodyTo type="java.lang.byte[]" charset="utf-16"/>
- <to uri="mock:result"/>
- </route>
-
- <route>
- <from uri="direct:charset3"/>
- <convertBodyTo type="java.lang.String" charset="utf-16"/>
+ <validate>
+ <simple>${body} contains 'Camel'</simple>
+ </validate>
<to uri="mock:result"/>
</route>
</camelContext>
- <bean id="deadLetterErrorHandler" class="org.apache.camel.builder.DeadLetterChannelBuilder">
- <property name="deadLetterUri" value="mock:dead"/>
- <property name="redeliveryPolicy" ref="redeliveryPolicy"/>
- <property name="handled" value="false"/>
- </bean>
-
- <bean id="redeliveryPolicy" class="org.apache.camel.processor.RedeliveryPolicy">
- <property name="maximumRedeliveries" value="0"/>
- </bean>
- <!-- END SNIPPET: example -->
</beans>