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 -->


Reply via email to