Author: janstey
Date: Thu Oct 30 07:15:53 2008
New Revision: 709164
URL: http://svn.apache.org/viewvc?rev=709164&view=rev
Log:
CAMEL-1036 - Adding retriesExhaustedLogLevel and retryAttemptedLogLevel methods
on onException.
Added:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/LoggingLevel.java
(with props)
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/ExceptionBuilderWithRetryLoggingLevelSetTest.java
(with props)
Removed:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LoggingLevel.java
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/LoggingErrorHandlerBuilder.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/LoggingExceptionHandler.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ExceptionType.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/RedeliveryPolicyType.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/RoutesType.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DeadLetterChannel.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Logger.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LoggingErrorHandler.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RedeliveryPolicy.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ThroughputLogger.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/Tracer.java
activemq/camel/trunk/camel-core/src/main/resources/org/apache/camel/model/jaxb.index
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelTest.java
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/FaultRetryRouteTest.java
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/FaultRouteTest.java
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/TracerConfigurationTest.java
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java?rev=709164&r1=709163&r2=709164&view=diff
==============================================================================
---
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java
(original)
+++
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java
Thu Oct 30 07:15:53 2008
@@ -23,7 +23,7 @@
import org.apache.camel.CamelContext;
import org.apache.camel.Endpoint;
import org.apache.camel.NoSuchEndpointException;
-import org.apache.camel.processor.LoggingLevel;
+import org.apache.camel.model.LoggingLevel;
import org.apache.camel.processor.SendProcessor;
import org.apache.camel.util.ObjectHelper;
import org.apache.commons.logging.Log;
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java?rev=709164&r1=709163&r2=709164&view=diff
==============================================================================
---
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java
(original)
+++
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java
Thu Oct 30 07:15:53 2008
@@ -18,10 +18,10 @@
import org.apache.camel.Expression;
import org.apache.camel.Processor;
+import org.apache.camel.model.LoggingLevel;
import org.apache.camel.processor.DeadLetterChannel;
import org.apache.camel.processor.ErrorHandlerSupport;
import org.apache.camel.processor.Logger;
-import org.apache.camel.processor.LoggingLevel;
import org.apache.camel.processor.RecipientList;
import org.apache.camel.processor.RedeliveryPolicy;
import org.apache.camel.processor.exceptionpolicy.ExceptionPolicyStrategy;
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/LoggingErrorHandlerBuilder.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/LoggingErrorHandlerBuilder.java?rev=709164&r1=709163&r2=709164&view=diff
==============================================================================
---
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/LoggingErrorHandlerBuilder.java
(original)
+++
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/LoggingErrorHandlerBuilder.java
Thu Oct 30 07:15:53 2008
@@ -17,9 +17,9 @@
package org.apache.camel.builder;
import org.apache.camel.Processor;
+import org.apache.camel.model.LoggingLevel;
import org.apache.camel.processor.Logger;
import org.apache.camel.processor.LoggingErrorHandler;
-import org.apache.camel.processor.LoggingLevel;
import org.apache.camel.spi.RouteContext;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java?rev=709164&r1=709163&r2=709164&view=diff
==============================================================================
---
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java
(original)
+++
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/RouteBuilder.java
Thu Oct 30 07:15:53 2008
@@ -134,7 +134,7 @@
* Adds an exception handler route for the given exception type
*/
public ExceptionType onException(Class exceptionType) {
- return routeCollection.exception(exceptionType);
+ return routeCollection.onException(exceptionType);
}
/**
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java?rev=709164&r1=709163&r2=709164&view=diff
==============================================================================
---
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
(original)
+++
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
Thu Oct 30 07:15:53 2008
@@ -23,8 +23,8 @@
import org.apache.camel.converter.ObjectConverter;
import org.apache.camel.impl.DefaultComponent;
import org.apache.camel.impl.ProcessorEndpoint;
+import org.apache.camel.model.LoggingLevel;
import org.apache.camel.processor.Logger;
-import org.apache.camel.processor.LoggingLevel;
import org.apache.camel.processor.ThroughputLogger;
import org.apache.camel.util.IntrospectionSupport;
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/LoggingExceptionHandler.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/LoggingExceptionHandler.java?rev=709164&r1=709163&r2=709164&view=diff
==============================================================================
---
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/LoggingExceptionHandler.java
(original)
+++
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/LoggingExceptionHandler.java
Thu Oct 30 07:15:53 2008
@@ -16,8 +16,8 @@
*/
package org.apache.camel.impl;
+import org.apache.camel.model.LoggingLevel;
import org.apache.camel.processor.Logger;
-import org.apache.camel.processor.LoggingLevel;
import org.apache.camel.spi.ExceptionHandler;
import org.apache.commons.logging.LogFactory;
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ExceptionType.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ExceptionType.java?rev=709164&r1=709163&r2=709164&view=diff
==============================================================================
---
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ExceptionType.java
(original)
+++
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ExceptionType.java
Thu Oct 30 07:15:53 2008
@@ -159,7 +159,17 @@
getOrCreateRedeliveryPolicy().initialRedeliveryDelay(initialRedeliveryDelay);
return this;
}
+
+ public ExceptionType retriesExhaustedLogLevel(LoggingLevel
retriesExhaustedLogLevel) {
+
getOrCreateRedeliveryPolicy().retriesExhaustedLogLevel(retriesExhaustedLogLevel);
+ return this;
+ }
+ public ExceptionType retryAttemptedLogLevel(LoggingLevel
retryAttemptedLogLevel) {
+
getOrCreateRedeliveryPolicy().retryAttemptedLogLevel(retryAttemptedLogLevel);
+ return this;
+ }
+
public ExceptionType maximumRedeliveries(int maximumRedeliveries) {
getOrCreateRedeliveryPolicy().maximumRedeliveries(maximumRedeliveries);
return this;
Added:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/LoggingLevel.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/LoggingLevel.java?rev=709164&view=auto
==============================================================================
---
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/LoggingLevel.java
(added)
+++
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/LoggingLevel.java
Thu Oct 30 07:15:53 2008
@@ -0,0 +1,29 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.model;
+
+import javax.xml.bind.annotation.XmlEnum;
+
+/**
+ * Used to configure the logging levels
+ *
+ * @version $Revision: 703680 $
+ */
[EMAIL PROTECTED]
+public enum LoggingLevel {
+ DEBUG, ERROR, FATAL, INFO, TRACE, WARN, OFF
+}
Propchange:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/LoggingLevel.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/RedeliveryPolicyType.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/RedeliveryPolicyType.java?rev=709164&r1=709163&r2=709164&view=diff
==============================================================================
---
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/RedeliveryPolicyType.java
(original)
+++
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/RedeliveryPolicyType.java
Thu Oct 30 07:15:53 2008
@@ -45,6 +45,10 @@
private Boolean useCollisionAvoidance;
@XmlAttribute
private Long maximumRedeliveryDelay;
+ @XmlAttribute
+ private LoggingLevel retriesExhaustedLogLevel;
+ @XmlAttribute
+ private LoggingLevel retryAttemptedLogLevel;
public RedeliveryPolicy createRedeliveryPolicy(RedeliveryPolicy
parentPolicy) {
RedeliveryPolicy answer = parentPolicy.copy();
@@ -56,6 +60,12 @@
if (initialRedeliveryDelay != null) {
answer.setDelay(initialRedeliveryDelay);
}
+ if (retriesExhaustedLogLevel != null) {
+ answer.setRetriesExhaustedLogLevel(retriesExhaustedLogLevel);
+ }
+ if (retryAttemptedLogLevel != null) {
+ answer.setRetryAttemptedLogLevel(retryAttemptedLogLevel);
+ }
if (backOffMultiplier != null) {
answer.setBackOffMultiplier(backOffMultiplier);
}
@@ -100,6 +110,16 @@
return this;
}
+ public RedeliveryPolicyType retriesExhaustedLogLevel(LoggingLevel
retriesExhaustedLogLevel) {
+ setRetriesExhaustedLogLevel(retriesExhaustedLogLevel);
+ return this;
+ }
+
+ public RedeliveryPolicyType retryAttemptedLogLevel(LoggingLevel
retryAttemptedLogLevel) {
+ setRetryAttemptedLogLevel(retryAttemptedLogLevel);
+ return this;
+ }
+
public RedeliveryPolicyType maximumRedeliveries(int maximumRedeliveries) {
setMaximumRedeliveries(maximumRedeliveries);
return this;
@@ -178,4 +198,21 @@
public void setMaximumRedeliveryDelay(Long maximumRedeliveryDelay) {
this.maximumRedeliveryDelay = maximumRedeliveryDelay;
}
+
+ private void setRetriesExhaustedLogLevel(LoggingLevel
retriesExhaustedLogLevel) {
+ this.retriesExhaustedLogLevel = retriesExhaustedLogLevel;
+ }
+
+ private LoggingLevel getRetriesExhaustedLogLevel() {
+ return retriesExhaustedLogLevel;
+ }
+
+ private void setRetryAttemptedLogLevel(LoggingLevel
retryAttemptedLogLevel) {
+ this.retryAttemptedLogLevel = retryAttemptedLogLevel;
+ }
+
+ private LoggingLevel getRetryAttemptedLogLevel() {
+ return retryAttemptedLogLevel;
+ }
+
}
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/RoutesType.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/RoutesType.java?rev=709164&r1=709163&r2=709164&view=diff
==============================================================================
---
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/RoutesType.java
(original)
+++
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/RoutesType.java
Thu Oct 30 07:15:53 2008
@@ -192,7 +192,7 @@
return answer.when(predicate);
}
- public ExceptionType exception(Class exceptionType) {
+ public ExceptionType onException(Class exceptionType) {
ExceptionType answer = new ExceptionType(exceptionType);
getExceptions().add(answer);
return answer;
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DeadLetterChannel.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DeadLetterChannel.java?rev=709164&r1=709163&r2=709164&view=diff
==============================================================================
---
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DeadLetterChannel.java
(original)
+++
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DeadLetterChannel.java
Thu Oct 30 07:15:53 2008
@@ -26,6 +26,7 @@
import org.apache.camel.Processor;
import org.apache.camel.impl.converter.AsyncProcessorTypeConverter;
import org.apache.camel.model.ExceptionType;
+import org.apache.camel.model.LoggingLevel;
import org.apache.camel.processor.exceptionpolicy.ExceptionPolicyStrategy;
import org.apache.camel.util.AsyncProcessorHelper;
import org.apache.camel.util.ServiceHelper;
@@ -120,9 +121,6 @@
// set the original caused exception
exchange.setProperty(EXCEPTION_CAUSE_PROPERTY, e);
- logger.log("Failed delivery for exchangeId: " +
exchange.getExchangeId() + ". On delivery attempt: " + data.redeliveryCounter +
" caught: " + e, e);
- data.redeliveryCounter = incrementRedeliveryCounter(exchange,
e);
-
// find the error handler to use (if any)
ExceptionType exceptionPolicy = getExceptionPolicy(exchange,
e);
if (exceptionPolicy != null) {
@@ -131,8 +129,11 @@
Processor processor = exceptionPolicy.getErrorHandler();
if (processor != null) {
data.failureProcessor = processor;
- }
+ }
}
+
+ logFailedDelivery("Failed delivery for exchangeId: " +
exchange.getExchangeId() + ". On delivery attempt: " + data.redeliveryCounter +
" caught: " + e, data, e);
+ data.redeliveryCounter = incrementRedeliveryCounter(exchange,
e);
}
// should we redeliver or not?
@@ -153,7 +154,7 @@
// The line below shouldn't be needed, it is invoked by the
AsyncCallback above
//restoreExceptionOnExchange(exchange, data.handledPredicate);
- logger.log("Failed delivery for exchangeId: " +
exchange.getExchangeId() + ". Handled by the failure processor: " +
data.failureProcessor);
+ logFailedDelivery("Failed delivery for exchangeId: " +
exchange.getExchangeId() + ". Handled by the failure processor: " +
data.failureProcessor, data, null);
return sync;
}
@@ -199,6 +200,20 @@
}
+ private void logFailedDelivery(String message, RedeliveryData data,
Throwable e) {
+ LoggingLevel newLogLevel = null;
+ if
(data.currentRedeliveryPolicy.shouldRedeliver(data.redeliveryCounter)) {
+ newLogLevel =
data.currentRedeliveryPolicy.getRetryAttemptedLogLevel();
+ } else {
+ newLogLevel =
data.currentRedeliveryPolicy.getRetriesExhaustedLogLevel();
+ }
+ if (e != null) {
+ logger.log(message, e, newLogLevel);
+ } else {
+ logger.log(message, newLogLevel);
+ }
+ }
+
public static boolean isFailureHandled(Exchange exchange) {
return exchange.getProperty(FAILURE_HANDLED_PROPERTY) != null;
}
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Logger.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Logger.java?rev=709164&r1=709163&r2=709164&view=diff
==============================================================================
---
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Logger.java
(original)
+++
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Logger.java
Thu Oct 30 07:15:53 2008
@@ -19,6 +19,7 @@
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.camel.impl.DefaultExchangeFormatter;
+import org.apache.camel.model.LoggingLevel;
import org.apache.camel.processor.interceptor.ExchangeFormatter;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -139,6 +140,13 @@
}
}
+ public void log(String message, LoggingLevel loggingLevel) {
+ LoggingLevel oldLogLevel = getLevel();
+ setLevel(loggingLevel);
+ log(message);
+ setLevel(oldLogLevel);
+ }
+
public void log(String message) {
switch (level) {
case DEBUG:
@@ -176,6 +184,13 @@
}
}
+ public void log(String message, Throwable exception, LoggingLevel
loggingLevel) {
+ LoggingLevel oldLogLevel = getLevel();
+ setLevel(loggingLevel);
+ log(message, exception);
+ setLevel(oldLogLevel);
+ }
+
public void log(String message, Throwable exception) {
switch (level) {
case DEBUG:
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LoggingErrorHandler.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LoggingErrorHandler.java?rev=709164&r1=709163&r2=709164&view=diff
==============================================================================
---
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LoggingErrorHandler.java
(original)
+++
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LoggingErrorHandler.java
Thu Oct 30 07:15:53 2008
@@ -18,6 +18,7 @@
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
+import org.apache.camel.model.LoggingLevel;
import org.apache.camel.util.ServiceHelper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RedeliveryPolicy.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RedeliveryPolicy.java?rev=709164&r1=709163&r2=709164&view=diff
==============================================================================
---
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RedeliveryPolicy.java
(original)
+++
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RedeliveryPolicy.java
Thu Oct 30 07:15:53 2008
@@ -19,6 +19,7 @@
import java.io.Serializable;
import java.util.Random;
+import org.apache.camel.model.LoggingLevel;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -57,6 +58,8 @@
// +/-15% for a 30% spread -cgs
protected double collisionAvoidanceFactor = 0.15d;
protected boolean useCollisionAvoidance;
+ protected LoggingLevel retriesExhaustedLogLevel = LoggingLevel.ERROR;
+ protected LoggingLevel retryAttemptedLogLevel = LoggingLevel.ERROR;
public RedeliveryPolicy() {
}
@@ -66,6 +69,8 @@
return "RedeliveryPolicy[maximumRedeliveries=" + maximumRedeliveries
+ ", initialRedeliveryDelay=" + delay
+ ", maximumRedeliveryDelay=" + maximumRedeliveryDelay
+ + ", retriesExhaustedLogLevel=" + retriesExhaustedLogLevel
+ + ", retryAttemptedLogLevel=" + retryAttemptedLogLevel
+ ", useExponentialBackOff=" + useExponentialBackOff
+ ", backOffMultiplier=" + backOffMultiplier
+ ", useCollisionAvoidance=" + useCollisionAvoidance
@@ -88,7 +93,7 @@
if (getMaximumRedeliveries() < 0) {
return true;
}
- // redeliver until we hitted the max
+ // redeliver until we hit the max
return redeliveryCounter <= getMaximumRedeliveries();
}
@@ -213,6 +218,22 @@
return this;
}
+ /**
+ * Sets the logging level to use for log messages when retries have been
exhausted.
+ */
+ public RedeliveryPolicy retriesExhaustedLogLevel(LoggingLevel
retriesExhaustedLogLevel) {
+ setRetriesExhaustedLogLevel(retriesExhaustedLogLevel);
+ return this;
+ }
+
+ /**
+ * Sets the logging level to use for log messages when retries are
attempted.
+ */
+ public RedeliveryPolicy retryAttemptedLogLevel(LoggingLevel
retryAttemptedLogLevel) {
+ setRetryAttemptedLogLevel(retryAttemptedLogLevel);
+ return this;
+ }
+
// Properties
//
-------------------------------------------------------------------------
public double getBackOffMultiplier() {
@@ -321,4 +342,20 @@
}
return randomNumberGenerator;
}
+
+ public void setRetriesExhaustedLogLevel(LoggingLevel
retriesExhaustedLogLevel) {
+ this.retriesExhaustedLogLevel = retriesExhaustedLogLevel;
+ }
+
+ public LoggingLevel getRetriesExhaustedLogLevel() {
+ return retriesExhaustedLogLevel;
+ }
+
+ public void setRetryAttemptedLogLevel(LoggingLevel retryAttemptedLogLevel)
{
+ this.retryAttemptedLogLevel = retryAttemptedLogLevel;
+ }
+
+ public LoggingLevel getRetryAttemptedLogLevel() {
+ return retryAttemptedLogLevel;
+ }
}
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ThroughputLogger.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ThroughputLogger.java?rev=709164&r1=709163&r2=709164&view=diff
==============================================================================
---
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ThroughputLogger.java
(original)
+++
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ThroughputLogger.java
Thu Oct 30 07:15:53 2008
@@ -20,6 +20,7 @@
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.camel.Exchange;
+import org.apache.camel.model.LoggingLevel;
import org.apache.commons.logging.Log;
/**
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/Tracer.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/Tracer.java?rev=709164&r1=709163&r2=709164&view=diff
==============================================================================
---
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/Tracer.java
(original)
+++
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/Tracer.java
Thu Oct 30 07:15:53 2008
@@ -23,8 +23,8 @@
import org.apache.camel.Predicate;
import org.apache.camel.Processor;
import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.model.LoggingLevel;
import org.apache.camel.model.ProcessorType;
-import org.apache.camel.processor.LoggingLevel;
import org.apache.camel.spi.InterceptStrategy;
/**
Modified:
activemq/camel/trunk/camel-core/src/main/resources/org/apache/camel/model/jaxb.index
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/resources/org/apache/camel/model/jaxb.index?rev=709164&r1=709163&r2=709164&view=diff
==============================================================================
---
activemq/camel/trunk/camel-core/src/main/resources/org/apache/camel/model/jaxb.index
(original)
+++
activemq/camel/trunk/camel-core/src/main/resources/org/apache/camel/model/jaxb.index
Thu Oct 30 07:15:53 2008
@@ -31,6 +31,7 @@
InterceptorRef
InterceptorType
LoadBalanceType
+LoggingLevel
LoopType
MarshalType
MulticastType
Added:
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/ExceptionBuilderWithRetryLoggingLevelSetTest.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/ExceptionBuilderWithRetryLoggingLevelSetTest.java?rev=709164&view=auto
==============================================================================
---
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/ExceptionBuilderWithRetryLoggingLevelSetTest.java
(added)
+++
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/ExceptionBuilderWithRetryLoggingLevelSetTest.java
Thu Oct 30 07:15:53 2008
@@ -0,0 +1,204 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.builder;
+
+import java.io.IOException;
+import java.net.ConnectException;
+import java.security.GeneralSecurityException;
+import java.security.KeyException;
+import java.security.KeyManagementException;
+
+import org.apache.camel.CamelExchangeException;
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.model.LoggingLevel;
+import org.apache.commons.logging.Log;
+
+/**
+ * Unit test to test exception configuration
+ */
+public class ExceptionBuilderWithRetryLoggingLevelSetTest extends
ContextTestSupport {
+
+ private static final String MESSAGE_INFO = "messageInfo";
+ private static final String RESULT_QUEUE = "mock:result";
+ private static final String ERROR_QUEUE = "mock:error";
+ private CustomLog logger;
+
+ @Override
+ protected void setUp() throws Exception {
+ logger = new CustomLog();
+ super.setUp();
+ }
+
+ public void testExceptionIsLoggedWithCustomLogLevel() throws Exception {
+ MockEndpoint result = getMockEndpoint(RESULT_QUEUE);
+ result.expectedMessageCount(0);
+ MockEndpoint mock = getMockEndpoint(ERROR_QUEUE);
+ mock.expectedMessageCount(1);
+ mock.expectedHeaderReceived(MESSAGE_INFO, "Damm somekind of IO
exception");
+
+ try {
+ template.sendBody("direct:a", "Hello IO");
+ fail("Should have thrown a IOException");
+ } catch (RuntimeCamelException e) {
+ assertTrue(e.getCause() instanceof IOException);
+ // expected
+ }
+
+ MockEndpoint.assertIsSatisfied(result, mock);
+ assertTrue(logger.loggedTrace && logger.loggedFatal);
+ }
+
+ public void testExceptionIsLoggedWithDefaultLevel() throws Exception {
+ MockEndpoint result = getMockEndpoint(RESULT_QUEUE);
+ result.expectedMessageCount(0);
+ MockEndpoint mock = getMockEndpoint(ERROR_QUEUE);
+ mock.expectedMessageCount(1);
+ mock.expectedHeaderReceived(MESSAGE_INFO, "Damm a NPE");
+
+ try {
+ template.sendBody("direct:a", "Hello NPE");
+ fail("Should have thrown a NullPointerException");
+ } catch (RuntimeCamelException e) {
+ assertTrue(e.getCause() instanceof NullPointerException);
+ // expected
+ }
+
+ MockEndpoint.assertIsSatisfied(result, mock);
+ assertTrue(!logger.loggedTrace && !logger.loggedFatal);
+ }
+
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ public void configure() throws Exception {
+ errorHandler(deadLetterChannel().log(logger));
+
+ onException(NullPointerException.class)
+ .maximumRedeliveries(0)
+ .setHeader(MESSAGE_INFO, constant("Damm a NPE"))
+ .to(ERROR_QUEUE);
+
+ // START SNIPPET: exceptionBuilder1
+ onException(IOException.class)
+ .initialRedeliveryDelay(1000L)
+ .maximumRedeliveries(3)
+ .maximumRedeliveryDelay(10000L)
+ .backOffMultiplier(1.0)
+ .useExponentialBackOff()
+ .retryAttemptedLogLevel(LoggingLevel.TRACE)
+ .retriesExhaustedLogLevel(LoggingLevel.FATAL)
+ .setHeader(MESSAGE_INFO, constant("Damm somekind of IO
exception"))
+ .to(ERROR_QUEUE);
+ // END SNIPPET: exceptionBuilder1
+
+ from("direct:a").process(new Processor() {
+ public void process(Exchange exchange) throws Exception {
+ String s = exchange.getIn().getBody(String.class);
+ if ("Hello NPE".equals(s)) {
+ throw new NullPointerException();
+ } else if ("Hello IO".equals(s)) {
+ throw new ConnectException("Forced for testing -
can not connect to remote server");
+ }
+ exchange.getOut().setBody("Hello World");
+ }
+ }).to("mock:result");
+ }
+ };
+ }
+
+ private class CustomLog implements Log {
+
+ boolean loggedTrace = false;
+ boolean loggedFatal = false;
+
+ public boolean isDebugEnabled() {
+ return true;
+ }
+
+ public boolean isErrorEnabled() {
+ return true;
+ }
+
+ public boolean isFatalEnabled() {
+ return true;
+ }
+
+ public boolean isInfoEnabled() {
+ return true;
+ }
+
+ public boolean isTraceEnabled() {
+ return true;
+ }
+
+ public boolean isWarnEnabled() {
+ return true;
+ }
+
+ public void trace(Object message) {
+ assertNotNull(message);
+ loggedTrace = true;
+ }
+
+ public void trace(Object message, Throwable t) {
+ assertNotNull(t);
+ assertNotNull(message);
+ loggedTrace = true;
+ }
+
+ public void debug(Object message) {
+ }
+
+ public void debug(Object message, Throwable t) {
+ }
+
+ public void info(Object message) {
+ }
+
+ public void info(Object message, Throwable t) {
+ }
+
+ public void warn(Object message) {
+ }
+
+ public void warn(Object message, Throwable t) {
+ }
+
+ public void error(Object message) {
+ }
+
+ public void error(Object message, Throwable t) {
+
+ }
+
+ public void fatal(Object message) {
+ assertNotNull(message);
+ loggedFatal = true;
+ }
+
+ public void fatal(Object message, Throwable t) {
+ assertNotNull(t);
+ assertNotNull(message);
+ loggedFatal = true;
+ }
+ }
+}
+
+
Propchange:
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/ExceptionBuilderWithRetryLoggingLevelSetTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified:
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelTest.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelTest.java?rev=709164&r1=709163&r2=709164&view=diff
==============================================================================
---
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelTest.java
(original)
+++
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelTest.java
Thu Oct 30 07:15:53 2008
@@ -22,6 +22,7 @@
import org.apache.camel.Processor;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.model.LoggingLevel;
/**
* @version $Revision$
Modified:
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/FaultRetryRouteTest.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/FaultRetryRouteTest.java?rev=709164&r1=709163&r2=709164&view=diff
==============================================================================
---
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/FaultRetryRouteTest.java
(original)
+++
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/FaultRetryRouteTest.java
Thu Oct 30 07:15:53 2008
@@ -23,6 +23,7 @@
import org.apache.camel.Processor;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.model.LoggingLevel;
public class FaultRetryRouteTest extends ContextTestSupport {
protected MockEndpoint a;
Modified:
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/FaultRouteTest.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/FaultRouteTest.java?rev=709164&r1=709163&r2=709164&view=diff
==============================================================================
---
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/FaultRouteTest.java
(original)
+++
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/FaultRouteTest.java
Thu Oct 30 07:15:53 2008
@@ -26,6 +26,7 @@
import org.apache.camel.RuntimeCamelException;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.model.LoggingLevel;
/**
* @version $Revision$
Modified:
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/TracerConfigurationTest.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/TracerConfigurationTest.java?rev=709164&r1=709163&r2=709164&view=diff
==============================================================================
---
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/TracerConfigurationTest.java
(original)
+++
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/TracerConfigurationTest.java
Thu Oct 30 07:15:53 2008
@@ -19,6 +19,7 @@
import org.apache.camel.ContextTestSupport;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.model.LoggingLevel;
import org.apache.camel.processor.interceptor.Tracer;
/**