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");
-        }
-    }
 }