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