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/11/07 14:25:21 UTC
svn commit: r1198724 - in /camel/trunk/camel-core/src:
main/java/org/apache/camel/processor/interceptor/DefaultTraceEventMessage.java
test/java/org/apache/camel/processor/interceptor/DefaultTraceEventMessageCausedByExceptionTest.java
Author: davsclaus
Date: Mon Nov 7 13:25:21 2011
New Revision: 1198724
URL: http://svn.apache.org/viewvc?rev=1198724&view=rev
Log:
CAMEL-4636: Caught exception is provided in the caused by exception field on trace event message.
Added:
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/DefaultTraceEventMessageCausedByExceptionTest.java
- copied, changed from r1198634, camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/DefaultTraceEventMessageTest.java
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultTraceEventMessage.java
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultTraceEventMessage.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultTraceEventMessage.java?rev=1198724&r1=1198723&r2=1198724&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultTraceEventMessage.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultTraceEventMessage.java Mon Nov 7 13:25:21 2011
@@ -80,12 +80,25 @@ public final class DefaultTraceEventMess
this.outBody = MessageHelper.extractBodyAsString(out);
this.outBodyType = MessageHelper.getBodyTypeName(out);
}
- this.causedByException = exchange.getException() != null ? exchange.getException().toString() : null;
+ this.causedByException = extractCausedByException(exchange);
}
// Implementation
//---------------------------------------------------------------
+ private static String extractCausedByException(Exchange exchange) {
+ Throwable cause = exchange.getException();
+ if (cause == null) {
+ cause = exchange.getProperty(Exchange.EXCEPTION_CAUGHT, Throwable.class);
+ }
+
+ if (cause != null) {
+ return cause.toString();
+ } else {
+ return null;
+ }
+ }
+
private static String extractShortExchangeId(Exchange exchange) {
return exchange.getExchangeId().substring(exchange.getExchangeId().indexOf("/") + 1);
}
Copied: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/DefaultTraceEventMessageCausedByExceptionTest.java (from r1198634, camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/DefaultTraceEventMessageTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/DefaultTraceEventMessageCausedByExceptionTest.java?p2=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/DefaultTraceEventMessageCausedByExceptionTest.java&p1=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/DefaultTraceEventMessageTest.java&r1=1198634&r2=1198724&rev=1198724&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/DefaultTraceEventMessageTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/DefaultTraceEventMessageCausedByExceptionTest.java Mon Nov 7 13:25:21 2011
@@ -16,109 +16,39 @@
*/
package org.apache.camel.processor.interceptor;
-import java.util.Date;
-
import org.apache.camel.ContextTestSupport;
-import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.Processor;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.DefaultExchange;
/**
* @version
*/
-public class DefaultTraceEventMessageTest extends ContextTestSupport {
+public class DefaultTraceEventMessageCausedByExceptionTest extends ContextTestSupport {
+
+ public void testCausedByException() throws Exception {
+ getMockEndpoint("mock:handled").expectedMessageCount(1);
- public void testDefaultTraceEventMessage() throws Exception {
- getMockEndpoint("mock:result").expectedMessageCount(1);
MockEndpoint traced = getMockEndpoint("mock:traced");
- traced.expectedMessageCount(2);
+ traced.expectedMessageCount(4);
- template.send("direct:start", new Processor() {
- public void process(Exchange exchange) throws Exception {
- exchange.setPattern(ExchangePattern.InOut);
- exchange.setProperty("foo", 123);
- exchange.getIn().setBody("Hello World");
- exchange.getIn().setHeader("bar", "456");
- exchange.getOut().setBody("Bye World");
- exchange.getOut().setHeader("cheese", 789);
- }
- });
+ template.sendBody("direct:start", "Hello World");
assertMockEndpointsSatisfied();
- DefaultTraceEventMessage em = traced.getReceivedExchanges().get(0).getIn().getBody(DefaultTraceEventMessage.class);
- assertNotNull(em);
- assertNotNull(em.getTimestamp());
- assertEquals("direct://start", em.getFromEndpointUri());
- assertEquals(null, em.getPreviousNode());
- assertEquals("mock://foo", em.getToNode());
- assertNotNull(em.getExchangeId());
- assertNotNull(em.getShortExchangeId());
- assertEquals("InOut", em.getExchangePattern());
- assertTrue(em.getProperties().contains("foo=123"));
- assertTrue(em.getProperties().contains("CamelToEndpoint=direct://start"));
- assertTrue(em.getProperties().contains("CamelCreatedTimestamp"));
- assertTrue(em.getHeaders().contains("bar=456"));
- assertEquals("Hello World", em.getBody());
- assertEquals("String", em.getBodyType());
- assertEquals("Bye World", em.getOutBody());
- assertEquals("String", em.getOutBodyType());
- assertEquals("{cheese=789}", em.getOutHeaders());
- }
-
- public void testDefaultTraceEventMessageOptions() throws Exception {
- Exchange exchange = new DefaultExchange(context);
- DefaultTraceEventMessage em = new DefaultTraceEventMessage(new Date(), null, exchange);
-
- em.setBody("Hello World");
- assertEquals("Hello World", em.getBody());
-
- em.setBodyType("String");
- assertEquals("String", em.getBodyType());
-
- em.setCausedByException("Damn");
- assertEquals("Damn", em.getCausedByException());
-
- em.setExchangeId("123");
- assertEquals("123", em.getExchangeId());
-
- em.setExchangePattern("InOnly");
- assertEquals("InOnly", em.getExchangePattern());
-
- em.setFromEndpointUri("direct://start");
- assertEquals("direct://start", em.getFromEndpointUri());
-
- em.setHeaders("{foo=123}");
- assertEquals("{foo=123}", em.getHeaders());
-
- em.setOutBody("123");
- assertEquals("123", em.getOutBody());
-
- em.setOutBodyType("Integer");
- assertEquals("Integer", em.getOutBodyType());
-
- em.setOutHeaders("{cheese=789}");
- assertEquals("{cheese=789}", em.getOutHeaders());
-
- em.setProperties("{foo=123}");
- assertEquals("{foo=123}", em.getProperties());
-
- em.setPreviousNode("A");
- assertEquals("A", em.getPreviousNode());
-
- em.setToNode("B");
- assertEquals("B", em.getToNode());
-
- em.setTimestamp(new Date());
- assertNotNull(em.getTimestamp());
-
- em.setShortExchangeId("123");
- assertEquals("123", em.getShortExchangeId());
-
- assertSame(exchange, em.getTracedExchange());
+ DefaultTraceEventMessage em1 = traced.getReceivedExchanges().get(0).getIn().getBody(DefaultTraceEventMessage.class);
+ DefaultTraceEventMessage em2 = traced.getReceivedExchanges().get(1).getIn().getBody(DefaultTraceEventMessage.class);
+ DefaultTraceEventMessage em3 = traced.getReceivedExchanges().get(2).getIn().getBody(DefaultTraceEventMessage.class);
+ DefaultTraceEventMessage em4 = traced.getReceivedExchanges().get(3).getIn().getBody(DefaultTraceEventMessage.class);
+
+ assertNotNull(em1);
+ assertNotNull(em2);
+ assertNotNull(em3);
+ assertNotNull(em4);
+
+ assertNull(em1.getCausedByException());
+ assertNull(em2.getCausedByException());
+ assertEquals("java.lang.IllegalArgumentException: Forced", em3.getCausedByException());
+ assertEquals("java.lang.IllegalArgumentException: Forced", em4.getCausedByException());
}
@Override
@@ -130,7 +60,11 @@ public class DefaultTraceEventMessageTes
tracer.setDestinationUri("mock:traced");
context.addInterceptStrategy(tracer);
- from("direct:start").to("mock:foo").to("mock:result");
+ onException(Exception.class)
+ .handled(true)
+ .to("mock:handled");
+
+ from("direct:start").to("mock:foo").throwException(new IllegalArgumentException("Forced"));
}
};
}