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 2008/12/16 19:39:45 UTC
svn commit: r727113 - in /activemq/camel/trunk/camel-core/src:
main/java/org/apache/camel/ main/java/org/apache/camel/builder/
main/java/org/apache/camel/impl/
test/java/org/apache/camel/processor/onexception/
Author: davsclaus
Date: Tue Dec 16 10:39:45 2008
New Revision: 727113
URL: http://svn.apache.org/viewvc?rev=727113&view=rev
Log:
CAMEL-1188: added unit test (already fixed). Polished javadoc. The new # uri option lookup should not throw exception if not found, this is handled by the component later (to support lenient properties)
Added:
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionFromChoiceTest.java (contents, props changed)
- copied, changed from r726956, activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionRouteTest.java
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/ProducerTemplate.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/ProducerTemplate.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/ProducerTemplate.java?rev=727113&r1=727112&r2=727113&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/ProducerTemplate.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/ProducerTemplate.java Tue Dec 16 10:39:45 2008
@@ -35,6 +35,10 @@
* <li>Either <tt>IN</tt> or <tt>OUT</tt> body according to the message exchange pattern. If the pattern is
* Out capable then the <tt>OUT</tt> body is returned, otherwise <tt>IN</tt>.
* </ul>
+ * <p/>
+ * <b>Important note on usage:</b> See this
+ * <a href="http://activemq.apache.org/camel/why-does-camel-use-too-many-threads-with-producertemplate.html">FAQ entry</a>
+ * before using.
*
* @version $Revision$
*/
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java?rev=727113&r1=727112&r2=727113&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java Tue Dec 16 10:39:45 2008
@@ -82,6 +82,9 @@
return onNewPredicate(PredicateBuilder.isInstanceOf(expression, type));
}
+ /**
+ * @deprecated use {@link #regex(String)}
+ */
public Predicate matchesRegex(String regex) {
return onNewPredicate(PredicateBuilder.regex(expression, regex));
}
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java?rev=727113&r1=727112&r2=727113&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java Tue Dec 16 10:39:45 2008
@@ -184,10 +184,13 @@
/**
* Sets the bean properties on the given bean
+ *
+ * @param bean the bean
+ * @param parameters properties to set
*/
protected void setProperties(Object bean, Map parameters) throws Exception {
// set reference properties first as they use # syntax that fools the regular properties setter
- setReferenceProperties(bean, parameters);
+ setReferenceProperties(bean, parameters);
IntrospectionSupport.setProperties(getCamelContext().getTypeConverter(), bean, parameters);
}
@@ -213,8 +216,6 @@
}
// must remove as its a valid option and we could configure it
it.remove();
- } else {
- throw new IllegalArgumentException("Property: " + name + " not found on bean: " + bean + " of type: " + bean.getClass().getName());
}
}
}
Copied: activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionFromChoiceTest.java (from r726956, activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionRouteTest.java)
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionFromChoiceTest.java?p2=activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionFromChoiceTest.java&p1=activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionRouteTest.java&r1=726956&r2=727113&rev=727113&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionRouteTest.java (original)
+++ activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionFromChoiceTest.java Tue Dec 16 10:39:45 2008
@@ -17,23 +17,24 @@
package org.apache.camel.processor.onexception;
import org.apache.camel.ContextTestSupport;
-import org.apache.camel.RuntimeCamelException;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.impl.JndiRegistry;
/**
- * Unit test inspired by user forum.
+ * Unit test for CAMEL-1188
*/
-public class OnExceptionRouteTest extends ContextTestSupport {
+public class OnExceptionFromChoiceTest extends ContextTestSupport {
- private MyOwnHandlerBean myOwnHandlerBean;
private MyServiceBean myServiceBean;
- public void testNoError() throws Exception {
+ public void testNoErrorWhen() throws Exception {
getMockEndpoint("mock:error").expectedMessageCount(0);
+ getMockEndpoint("mock:func").expectedMessageCount(0);
+ getMockEndpoint("mock:tech").expectedMessageCount(0);
+ getMockEndpoint("mock:otherwise").expectedMessageCount(0);
- MockEndpoint mock = getMockEndpoint("mock:result");
+ MockEndpoint mock = getMockEndpoint("mock:when");
mock.expectedMessageCount(1);
template.sendBody("direct:start", "<order><type>myType</type><user>James</user></order>");
@@ -43,50 +44,34 @@
public void testFunctionalError() throws Exception {
getMockEndpoint("mock:error").expectedMessageCount(0);
+ getMockEndpoint("mock:tech").expectedMessageCount(0);
+ getMockEndpoint("mock:when").expectedMessageCount(0);
+ getMockEndpoint("mock:otherwise").expectedMessageCount(0);
- MockEndpoint mock = getMockEndpoint("mock:result");
- mock.expectedMessageCount(0);
+ MockEndpoint mock = getMockEndpoint("mock:func");
+ mock.expectedMessageCount(1);
template.sendBody("direct:start", "<order><type>myType</type><user>Func</user></order>");
assertMockEndpointsSatisfied();
- assertEquals("<order><type>myType</type><user>Func</user></order>", myOwnHandlerBean.getPayload());
}
public void testTechnicalError() throws Exception {
- getMockEndpoint("mock:error").expectedMessageCount(1);
-
- MockEndpoint mock = getMockEndpoint("mock:result");
- mock.expectedMessageCount(0);
-
- template.sendBody("direct:start", "<order><type>myType</type><user>Tech</user></order>");
-
- assertMockEndpointsSatisfied();
- // should not handle it
- assertNull(myOwnHandlerBean.getPayload());
- }
-
- public void testErrorWhileHandlingException() throws Exception {
getMockEndpoint("mock:error").expectedMessageCount(0);
+ getMockEndpoint("mock:func").expectedMessageCount(0);
+ getMockEndpoint("mock:when").expectedMessageCount(0);
+ getMockEndpoint("mock:otherwise").expectedMessageCount(0);
- MockEndpoint mock = getMockEndpoint("mock:result");
- mock.expectedMessageCount(0);
+ MockEndpoint mock = getMockEndpoint("mock:tech");
+ mock.expectedMessageCount(1);
- try {
- template.sendBody("direct:start", "<order><type>myType</type><user>FuncError</user></order>");
- fail("Should throw a RuntimeCamelException");
- } catch (RuntimeCamelException e) {
- assertEquals("Damm something did not work", e.getCause().getMessage());
- }
+ template.sendBody("direct:start", "<order><type>myType</type><user>Tech</user></order>");
assertMockEndpointsSatisfied();
- // should not handle it
- assertNull(myOwnHandlerBean.getPayload());
}
@Override
protected void setUp() throws Exception {
- myOwnHandlerBean = new MyOwnHandlerBean();
myServiceBean = new MyServiceBean();
super.setUp();
}
@@ -94,7 +79,6 @@
@Override
protected JndiRegistry createRegistry() throws Exception {
JndiRegistry jndi = super.createRegistry();
- jndi.bind("myOwnHandler", myOwnHandlerBean);
jndi.bind("myServiceBean", myServiceBean);
return jndi;
}
@@ -104,29 +88,19 @@
return new RouteBuilder() {
@Override
public void configure() throws Exception {
- // default should errors go to mock:error
errorHandler(deadLetterChannel("mock:error"));
-
- // START SNIPPET: e1
- // if a MyTechnicalException is thrown we will not try to redeliver and we mark it as handled
- // so the caller does not get a failure
- // since we have no to then the exchange will continue to be routed to the normal error handler
- // destination that is mock:error as defined above
- onException(MyTechnicalException.class).maximumRedeliveries(0).handled(true);
-
- // if a MyFunctionalException is thrown we do not want Camel to redelivery but handle it our self using
- // our bean myOwnHandler, then the exchange is not routed to the default error (mock:error)
- onException(MyFunctionalException.class).maximumRedeliveries(0).handled(true).to("bean:myOwnHandler");
-
- // here we route message to our service bean
- from("direct:start").choice()
- .when().xpath("//type = 'myType'")
- .to("bean:myServiceBean")
- // END SNIPPET: e1
- .to("mock:result");
+
+ onException(MyTechnicalException.class).maximumRedeliveries(0).handled(true).to("mock:tech");
+ onException(MyFunctionalException.class).maximumRedeliveries(0).handled(true).to("mock:func");
+
+ from("direct:start")
+ .choice()
+ .when(bean("myServiceBean").isEqualTo("James")).to("mock:when")
+ .otherwise()
+ .to("mock:otherwise");
}
};
}
-}
+}
\ No newline at end of file
Propchange: activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionFromChoiceTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionFromChoiceTest.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Propchange: activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionFromChoiceTest.java
------------------------------------------------------------------------------
svn:mergeinfo =