Author: davsclaus
Date: Thu Feb 3 15:47:43 2011
New Revision: 1066836
URL: http://svn.apache.org/viewvc?rev=1066836&view=rev
Log:
CAMEL-3610: Added transactionKey to MDC logging.
Added:
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/TransactionalClientDataSourceMDCTest.java
- copied, changed from r1066781,
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/TransactionalClientDataSourceTransactedTest.java
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/xml/DefaultTransformErrorHandler.java
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/MDCUnitOfWork.java
camel/trunk/camel-core/src/main/java/org/apache/camel/spi/UnitOfWork.java
camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyMinMaxThreadPoolTest.java
camel/trunk/components/camel-spring/src/test/resources/log4j.properties
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/xml/DefaultTransformErrorHandler.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/xml/DefaultTransformErrorHandler.java?rev=1066836&r1=1066835&r2=1066836&view=diff
==============================================================================
---
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/xml/DefaultTransformErrorHandler.java
(original)
+++
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/xml/DefaultTransformErrorHandler.java
Thu Feb 3 15:47:43 2011
@@ -19,15 +19,16 @@ package org.apache.camel.builder.xml;
import javax.xml.transform.ErrorListener;
import javax.xml.transform.TransformerException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.xml.sax.ErrorHandler;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-
-
+/**
+ * {@link ErrorHandler} and {@link ErrorListener} which will log warnings,
+ * and throws error and fatal as exception, which ensures those can be caught
by Camel and dealt-with.
+ */
public class DefaultTransformErrorHandler implements ErrorHandler,
ErrorListener {
private static final transient Logger LOG =
LoggerFactory.getLogger(DefaultTransformErrorHandler.class);
@@ -41,7 +42,6 @@ public class DefaultTransformErrorHandle
public void warning(SAXParseException exception) throws SAXException {
LOG.warn("parser warning", exception);
-
}
public void error(TransformerException exception) throws
TransformerException {
@@ -54,7 +54,6 @@ public class DefaultTransformErrorHandle
public void warning(TransformerException exception) throws
TransformerException {
LOG.warn("parser warning", exception);
-
}
}
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/MDCUnitOfWork.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/MDCUnitOfWork.java?rev=1066836&r1=1066835&r2=1066836&view=diff
==============================================================================
---
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/MDCUnitOfWork.java
(original)
+++
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/MDCUnitOfWork.java
Thu Feb 3 15:47:43 2011
@@ -32,6 +32,7 @@ public class MDCUnitOfWork extends Defau
public static final String MDC_EXCHANGE_ID = "exchangeId";
public static final String MDC_CORRELATION_ID = "correlationId";
public static final String MDC_ROUTE_ID = "routeId";
+ public static final String MDC_TRANSACTION_KEY = "transactionKey";
public MDCUnitOfWork(Exchange exchange) {
super(exchange);
@@ -53,8 +54,8 @@ public class MDCUnitOfWork extends Defau
@Override
public void pushRouteContext(RouteContext routeContext) {
- super.pushRouteContext(routeContext);
MDC.put(MDC_ROUTE_ID, routeContext.getRoute().getId());
+ super.pushRouteContext(routeContext);
}
@Override
@@ -64,6 +65,18 @@ public class MDCUnitOfWork extends Defau
}
@Override
+ public void beginTransactedBy(Object key) {
+ MDC.put(MDC_TRANSACTION_KEY, key.toString());
+ super.beginTransactedBy(key);
+ }
+
+ @Override
+ public void endTransactedBy(Object key) {
+ MDC.remove(MDC_TRANSACTION_KEY);
+ super.endTransactedBy(key);
+ }
+
+ @Override
public AsyncCallback beforeProcess(Processor processor, Exchange exchange,
AsyncCallback callback) {
return new MDCCallback(callback);
}
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/spi/UnitOfWork.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/UnitOfWork.java?rev=1066836&r1=1066835&r2=1066836&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/spi/UnitOfWork.java
(original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/spi/UnitOfWork.java
Thu Feb 3 15:47:43 2011
@@ -155,12 +155,12 @@ public interface UnitOfWork extends Serv
* @param processor the processor to be executed
* @param exchange the current exchange
* @param callback the callback
- * @return the callback to be used (can be wrapped)
+ * @return the callback to be used (can return a wrapped callback)
*/
AsyncCallback beforeProcess(Processor processor, Exchange exchange,
AsyncCallback callback);
/**
- * Strategy for optional work to be executed after the callback has been
processed.
+ * Strategy for optional work to be executed after the processing
*
* @param processor the processor executed
* @param exchange the current exchange
Modified:
camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyMinMaxThreadPoolTest.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyMinMaxThreadPoolTest.java?rev=1066836&r1=1066835&r2=1066836&view=diff
==============================================================================
---
camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyMinMaxThreadPoolTest.java
(original)
+++
camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyMinMaxThreadPoolTest.java
Thu Feb 3 15:47:43 2011
@@ -53,6 +53,7 @@ public class JettyMinMaxThreadPoolTest e
@Override
public void onDone(Exchange exchange) {
String body = exchange.getOut().getBody(String.class);
+ log.info("Got reply " + body);
replies.add(body);
latch.countDown();
}
@@ -66,6 +67,8 @@ public class JettyMinMaxThreadPoolTest e
// sort replies
Collections.sort(replies);
+ log.info("Sorted replies: " + replies.toArray());
+
for (int i = 0; i < 10; i++) {
assertEquals("Bye " + i, replies.get(i));
}
Copied:
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/TransactionalClientDataSourceMDCTest.java
(from r1066781,
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/TransactionalClientDataSourceTransactedTest.java)
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/TransactionalClientDataSourceMDCTest.java?p2=camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/TransactionalClientDataSourceMDCTest.java&p1=camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/TransactionalClientDataSourceTransactedTest.java&r1=1066781&r2=1066836&rev=1066836&view=diff
==============================================================================
---
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/TransactionalClientDataSourceTransactedTest.java
(original)
+++
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/TransactionalClientDataSourceMDCTest.java
Thu Feb 3 15:47:43 2011
@@ -16,33 +16,50 @@
*/
package org.apache.camel.spring.interceptor;
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.spring.SpringRouteBuilder;
+import org.slf4j.MDC;
/**
* Easier transaction configuration as we do not have to setup a transaction
error handler
*/
-public class TransactionalClientDataSourceTransactedTest extends
TransactionalClientDataSourceTest {
+public class TransactionalClientDataSourceMDCTest extends
TransactionalClientDataSourceTest {
protected RouteBuilder createRouteBuilder() throws Exception {
return new SpringRouteBuilder() {
public void configure() throws Exception {
- // START SNIPPET: e1
- from("direct:okay")
- // marks this route as transacted, and we dont pass in any
parameters so we
- // will auto lookup and use the Policy defined in the
spring XML file
+ context.setUseMDCLogging(true);
+
+ from("direct:okay").routeId("route-a")
.transacted()
+ .process(new Processor() {
+ public void process(Exchange exchange) throws
Exception {
+ assertEquals("route-a", MDC.get("routeId"));
+ assertEquals(exchange.getExchangeId(),
MDC.get("exchangeId"));
+ assertNotNull(MDC.get("transactionKey"));
+ }
+ })
+ .to("log:foo")
.setBody(constant("Tiger in
Action")).beanRef("bookService")
+ .to("log:bar")
.setBody(constant("Elephant in
Action")).beanRef("bookService");
// marks this route as transacted that will use the single
policy defined in the registry
- from("direct:fail")
- // marks this route as transacted, and we dont pass in any
parameters so we
- // will auto lookup and use the Policy defined in the
spring XML file
+ from("direct:fail").routeId("route-b")
.transacted()
+ .process(new Processor() {
+ public void process(Exchange exchange) throws
Exception {
+ assertEquals("route-b", MDC.get("routeId"));
+ assertEquals(exchange.getExchangeId(),
MDC.get("exchangeId"));
+ assertNotNull(MDC.get("transactionKey"));
+ }
+ })
+ .to("log:foo2")
.setBody(constant("Tiger in
Action")).beanRef("bookService")
+ .to("log:bar2")
.setBody(constant("Donkey in
Action")).beanRef("bookService");
- // END SNIPPET: e1
}
};
}
Modified:
camel/trunk/components/camel-spring/src/test/resources/log4j.properties
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/log4j.properties?rev=1066836&r1=1066835&r2=1066836&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/resources/log4j.properties
(original)
+++ camel/trunk/components/camel-spring/src/test/resources/log4j.properties Thu
Feb 3 15:47:43 2011
@@ -35,7 +35,7 @@ log4j.appender.out=org.apache.log4j.Cons
log4j.appender.out.layout=org.apache.log4j.PatternLayout
log4j.appender.out.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} -
%m%n
# MDC
-#log4j.appender.out.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} -
%-10.10X{exchangeId} - %-10.10X{correlationId} - %-10.10X{routeId} - %m%n
+#log4j.appender.out.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} -
%-10.10X{exchangeId} - %-10.10X{correlationId} - %-10.10X{transactionKey} -
%-10.10X{routeId} - %m%n
# File appender
log4j.appender.file=org.apache.log4j.FileAppender