Author: ningjiang Date: Sat Mar 27 05:06:19 2010 New Revision: 928146 URL: http://svn.apache.org/viewvc?rev=928146&view=rev Log: CAMEL-1799 Now errorHandle can be placed inside the camelContext
Modified: camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/ErrorHandlerDefintion.java camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/handler/ErrorHandlerDefintionParserTest.java camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/handler/ErrorHandlerDefinitionParser.xml Modified: camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java?rev=928146&r1=928145&r2=928146&view=diff ============================================================================== --- camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java (original) +++ camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java Sat Mar 27 05:06:19 2010 @@ -138,7 +138,8 @@ public class CamelContextFactoryBean ext @XmlElement(name = "template", type = CamelProducerTemplateFactoryBean.class, required = false), @XmlElement(name = "consumerTemplate", type = CamelConsumerTemplateFactoryBean.class, required = false), @XmlElement(name = "proxy", type = CamelProxyFactoryDefinition.class, required = false), - @XmlElement(name = "export", type = CamelServiceExporterDefinition.class, required = false)}) + @XmlElement(name = "export", type = CamelServiceExporterDefinition.class, required = false), + @XmlElement(name = "errorHandler", type = ErrorHandlerDefintion.class, required = false)}) private List beans; @XmlElement(name = "routeBuilder", required = false) private List<RouteBuilderDefinition> builderRefs = new ArrayList<RouteBuilderDefinition>(); Modified: camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/ErrorHandlerDefintion.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/ErrorHandlerDefintion.java?rev=928146&r1=928145&r2=928146&view=diff ============================================================================== --- camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/ErrorHandlerDefintion.java (original) +++ camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/ErrorHandlerDefintion.java Sat Mar 27 05:06:19 2010 @@ -44,7 +44,7 @@ public class ErrorHandlerDefintion exten @XmlAttribute(required = false) private LoggingLevel level; @XmlAttribute(required = false) - private Boolean handled = true; + private Boolean handled; @XmlAttribute(required = false) private Boolean useOriginalMessage; @XmlElement(name = "redeliveryPolicy", required = false) Modified: camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java?rev=928146&r1=928145&r2=928146&view=diff ============================================================================== --- camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java (original) +++ camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java Sat Mar 27 05:06:19 2010 @@ -100,8 +100,10 @@ public class CamelNamespaceHandler exten // jmx agent and property placeholder cannot be used outside of the camel context addBeanDefinitionParser("jmxAgent", CamelJMXAgentDefinition.class, false); addBeanDefinitionParser("propertyPlaceholder", CamelPropertyPlaceholderDefinition.class, false); - // errorhandler should not be the sub element of camelContext - registerParser("errorHandler", new ErrorHandlerDefinitionParser()); + // errorhandler could be the sub element of camelContext + BeanDefinitionParser parser = new ErrorHandlerDefinitionParser(); + registerParser("errorHandler", parser); + parserMap.put("errorHandler", parser); // camel context boolean osgi = false; @@ -262,7 +264,10 @@ public class CamelNamespaceHandler exten || localName.equals("proxy") || localName.equals("export")) { // set the camel context definition.getPropertyValues().addPropertyValue("camelContext", new RuntimeBeanReference(contextId)); - } + } + if (localName.equals("errorHandler")) { + builder.addPropertyValue("errorHandlerRef", id); + } } } } Modified: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/handler/ErrorHandlerDefintionParserTest.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/handler/ErrorHandlerDefintionParserTest.java?rev=928146&r1=928145&r2=928146&view=diff ============================================================================== --- camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/handler/ErrorHandlerDefintionParserTest.java (original) +++ camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/handler/ErrorHandlerDefintionParserTest.java Sat Mar 27 05:06:19 2010 @@ -27,6 +27,7 @@ import org.apache.camel.processor.Defaul import org.apache.camel.processor.RedeliveryPolicy; import org.apache.camel.processor.exceptionpolicy.DefaultExceptionPolicyStrategy; import org.apache.camel.processor.exceptionpolicy.ExceptionPolicyStrategy; +import org.apache.camel.spring.CamelContextFactoryBean; import org.apache.camel.spring.spi.TransactionErrorHandlerBuilder; import org.springframework.context.support.ClassPathXmlApplicationContext; @@ -83,6 +84,12 @@ public class ErrorHandlerDefintionParser assertEquals("Wrong redeliveryDelay", 1000, policy.getRedeliveryDelay()); assertEquals("Wrong logStackTrace", true, policy.isLogHandled()); } + + public void testErrorHandlerInsideCamelContext() { + CamelContextFactoryBean factoryBean = (CamelContextFactoryBean)ctx.getBean("&camel"); + assertNotNull(factoryBean); + assertEquals("Wrong ErrorHandlerRef", "noErrorHandler", factoryBean.getErrorHandlerRef()); + } } Modified: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/handler/ErrorHandlerDefinitionParser.xml URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/handler/ErrorHandlerDefinitionParser.xml?rev=928146&r1=928145&r2=928146&view=diff ============================================================================== --- camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/handler/ErrorHandlerDefinitionParser.xml (original) +++ camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/handler/ErrorHandlerDefinitionParser.xml Sat Mar 27 05:06:19 2010 @@ -71,9 +71,14 @@ <bean id="PROPAGATION_REQUIRED" class="org.springframework.transaction.support.TransactionTemplate"> <property name="transactionManager" ref="txManager"/> </bean> + + <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring"> + <camel:errorHandler id="noErrorHandler" type="NoErrorHandler"/> </camelContext> + + <!-- END SNIPPET: example -->