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/03/02 16:42:02 UTC
svn commit: r1076262 - in /camel/trunk/camel-core/src:
main/java/org/apache/camel/language/simple/SimpleLanguageSupport.java
test/java/org/apache/camel/language/SimpleTest.java
test/java/org/apache/camel/processor/CBRSimplePredicateEmptyBodyTest.java
Author: davsclaus
Date: Wed Mar 2 15:42:02 2011
New Revision: 1076262
URL: http://svn.apache.org/viewvc?rev=1076262&view=rev
Log:
CAMEL-3745: Improved error message in simple language for null instanceof checks
Added:
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/CBRSimplePredicateEmptyBodyTest.java
- copied, changed from r1076122, camel/trunk/camel-core/src/test/java/org/apache/camel/processor/CBRHeaderPredicateTest.java
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguageSupport.java
camel/trunk/camel-core/src/test/java/org/apache/camel/language/SimpleTest.java
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguageSupport.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguageSupport.java?rev=1076262&r1=1076261&r2=1076262&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguageSupport.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguageSupport.java Wed Mar 2 15:42:02 2011
@@ -244,6 +244,10 @@ public abstract class SimpleLanguageSupp
}
} else if (operator == IS || operator == NOT_IS) {
String name = right.evaluate(exchange, String.class);
+ if (name == null) {
+ throw new IllegalArgumentException("Syntax error in " + operatorText + " operator: " + expression
+ + " cannot be null. It must be a class type.");
+ }
Class<?> rightType = exchange.getContext().getClassResolver().resolveClass(name);
if (rightType == null) {
throw new IllegalArgumentException("Syntax error in " + operatorText + " operator: " + expression
Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/language/SimpleTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/language/SimpleTest.java?rev=1076262&r1=1076261&r2=1076262&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/language/SimpleTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/language/SimpleTest.java Wed Mar 2 15:42:02 2011
@@ -260,6 +260,32 @@ public class SimpleTest extends Language
}
}
+ public void testHeaderEmptyBody() throws Exception {
+ // set an empty body
+ exchange.getIn().setBody(null);
+
+ assertExpression("header.foo", "abc");
+ assertExpression("headers.foo", "abc");
+ assertExpression("in.header.foo", "abc");
+ assertExpression("in.headers.foo", "abc");
+ assertExpression("${header.foo}", "abc");
+ assertExpression("${headers.foo}", "abc");
+ assertExpression("${in.header.foo}", "abc");
+ assertExpression("${in.headers.foo}", "abc");
+ }
+
+ public void testIsInstanceOfEmptyBody() throws Exception {
+ // set an empty body
+ exchange.getIn().setBody(null);
+
+ try {
+ assertExpression("${body} is null", false);
+ fail("Should have thrown an exception");
+ } catch (IllegalArgumentException e) {
+ assertEquals("Syntax error in is operator: ${body} is null cannot be null. It must be a class type.", e.getMessage());
+ }
+ }
+
public void testHeaderAs() throws Exception {
assertExpression("${headerAs(foo,String)}", "abc");
Copied: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/CBRSimplePredicateEmptyBodyTest.java (from r1076122, camel/trunk/camel-core/src/test/java/org/apache/camel/processor/CBRHeaderPredicateTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/CBRSimplePredicateEmptyBodyTest.java?p2=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/CBRSimplePredicateEmptyBodyTest.java&p1=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/CBRHeaderPredicateTest.java&r1=1076122&r2=1076262&rev=1076262&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/CBRHeaderPredicateTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/CBRSimplePredicateEmptyBodyTest.java Wed Mar 2 15:42:02 2011
@@ -17,33 +17,21 @@
package org.apache.camel.processor;
import org.apache.camel.ContextTestSupport;
-import org.apache.camel.Exchange;
-import org.apache.camel.Message;
import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.JndiRegistry;
/**
* @version
*/
-public class CBRHeaderPredicateTest extends ContextTestSupport {
-
- @Override
- protected JndiRegistry createRegistry() throws Exception {
- JndiRegistry jndi = super.createRegistry();
- jndi.bind("cbrBean", new MyCBRBean());
- return jndi;
- }
+public class CBRSimplePredicateEmptyBodyTest extends ContextTestSupport {
public void testCBR() throws Exception {
- MockEndpoint foo = getMockEndpoint("mock:foo");
- foo.expectedBodiesReceived("Hello Foo");
+ getMockEndpoint("mock:unknown").expectedMessageCount(1);
+ getMockEndpoint("mock:unknown").message(0).header("name").isNull();
+ getMockEndpoint("mock:known").expectedMessageCount(1);
+ getMockEndpoint("mock:known").message(0).header("name").isEqualTo("Camel");
- MockEndpoint bar = getMockEndpoint("mock:bar");
- bar.expectedBodiesReceived("Hello Bar");
-
- template.sendBodyAndHeader("direct:start", "Hello Foo", "foo", "bar");
- template.sendBodyAndHeader("direct:start", "Hello Bar", "foo", "other");
+ template.sendBodyAndHeader("direct:start", null, "name", null);
+ template.sendBodyAndHeader("direct:start", null, "name", "Camel");
assertMockEndpointsSatisfied();
}
@@ -55,22 +43,14 @@ public class CBRHeaderPredicateTest exte
public void configure() throws Exception {
from("direct:start")
.choice()
- .when().method("cbrBean", "checkHeader")
- .to("mock:foo")
+ .when().simple("${header.name} == null")
+ .to("mock:unknown")
.otherwise()
- .to("mock:bar")
+ .to("mock:known")
.end();
}
};
}
- public static class MyCBRBean {
-
- public boolean checkHeader(Exchange exchange) {
- Message inMsg = exchange.getIn();
- String foo = (String) inMsg.getHeader("foo");
- return foo.equals("bar");
- }
- }
}