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/06/04 21:39:54 UTC

svn commit: r1131477 - in /camel/trunk: camel-core/src/main/java/org/apache/camel/processor/ camel-core/src/test/java/org/apache/camel/model/ components/camel-spring/src/test/java/org/apache/camel/spring/processor/intercept/

Author: davsclaus
Date: Sat Jun  4 19:39:54 2011
New Revision: 1131477

URL: http://svn.apache.org/viewvc?rev=1131477&view=rev
Log:
CAMEL-4053: Fixed parent/child relationship on model, before custom InterceptStrategy is wrapped with the model as parameter.

Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DefaultChannel.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/model/ModelSanityCheckerTest.java
    camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/intercept/SpringParentChildInterceptStrategyTest.java

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DefaultChannel.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DefaultChannel.java?rev=1131477&r1=1131476&r2=1131477&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DefaultChannel.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DefaultChannel.java Sat Jun  4 19:39:54 2011
@@ -169,6 +169,16 @@ public class DefaultChannel extends Serv
         // so if a child is set then use it, if not then its the original output used
         ProcessorDefinition<?> targetOutputDef = childDefinition != null ? childDefinition : outputDefinition;
 
+        // fix parent/child relationship. This will be the case of the routes has been
+        // defined using XML DSL or end user may have manually assembled a route from the model.
+        // Background note: parent/child relationship is assembled on-the-fly when using Java DSL (fluent builders)
+        // where as when using XML DSL (JAXB) then it fixed after, but if people are using custom interceptors
+        // then we need to fix the parent/child relationship beforehand, and thus we can do it here
+        // ideally we need the design time route -> runtime route to be a 2-phase pass (scheduled work for Camel 3.0)
+        if (childDefinition != null && outputDefinition != childDefinition) {
+            childDefinition.setParent(outputDefinition);
+        }
+
         // first wrap the output with the managed strategy if any
         InterceptStrategy managed = routeContext.getManagedInterceptStrategy();
         if (managed != null) {

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/model/ModelSanityCheckerTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/model/ModelSanityCheckerTest.java?rev=1131477&r1=1131476&r2=1131477&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/model/ModelSanityCheckerTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/model/ModelSanityCheckerTest.java Sat Jun  4 19:39:54 2011
@@ -90,6 +90,11 @@ public class ModelSanityCheckerTest exte
             for (Method method : clazz.getDeclaredMethods()) {
                 LOG.debug("Class {} has method {}", clazz.getName(), method.getName());
 
+                // special for OptionalIdentifiedDefinition as it has setter, so we should skip it
+                if (clazz.getCanonicalName().equals(OptionalIdentifiedDefinition.class.getCanonicalName())) {
+                    continue;
+                }
+
                 // does the method have a jaxb annotation?
                 boolean attribute = method.getAnnotation(XmlAttribute.class) != null;
                 boolean element = method.getAnnotation(XmlElement.class) != null;

Modified: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/intercept/SpringParentChildInterceptStrategyTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/intercept/SpringParentChildInterceptStrategyTest.java?rev=1131477&r1=1131476&r2=1131477&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/intercept/SpringParentChildInterceptStrategyTest.java (original)
+++ camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/intercept/SpringParentChildInterceptStrategyTest.java Sat Jun  4 19:39:54 2011
@@ -21,26 +21,8 @@ import org.apache.camel.processor.interc
 
 import static org.apache.camel.spring.processor.SpringTestHelper.createSpringCamelContext;
 
-/**
- *
- */
 public class SpringParentChildInterceptStrategyTest extends ParentChildInterceptStrategyTest {
 
-    public void testParentChild() throws Exception {
-        getMockEndpoint("mock:done").expectedMessageCount(1);
-        getMockEndpoint("mock:a").expectedMessageCount(1);
-        getMockEndpoint("mock:b").expectedMessageCount(1);
-        getMockEndpoint("mock:c").expectedMessageCount(1);
-        getMockEndpoint("mock:d").expectedMessageCount(0);
-        getMockEndpoint("mock:e").expectedMessageCount(0);
-
-        template.sendBody("direct:start", "Hello Camel");
-
-        assertMockEndpointsSatisfied();
-
-        assertEquals(7, LIST.size());
-    }
-
     protected CamelContext createCamelContext() throws Exception {
         return createSpringCamelContext(this, "org/apache/camel/spring/processor/intercept/SpringParentChildInterceptStrategyTest.xml");
     }