blob: b7e993d4741099b0264ce202f66ed17bbf981bbf [file] [log] [blame]
/**
* 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.core.xml;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import org.apache.camel.CamelContext;
import org.apache.camel.LoggingLevel;
import org.apache.camel.processor.RedeliveryPolicy;
import org.apache.camel.util.CamelContextHelper;
/**
* A factory which instantiates {@link RedeliveryPolicy} objects
*
* @version
*/
@XmlAccessorType(XmlAccessType.FIELD)
public abstract class AbstractCamelRedeliveryPolicyFactoryBean extends AbstractCamelFactoryBean<RedeliveryPolicy> {
@XmlAttribute
private String maximumRedeliveries;
@XmlAttribute
private String redeliveryDelay;
@XmlAttribute
private String asyncDelayedRedelivery;
@XmlAttribute
private String backOffMultiplier;
@XmlAttribute
private String useExponentialBackOff;
@XmlAttribute
private String collisionAvoidanceFactor;
@XmlAttribute
private String useCollisionAvoidance;
@XmlAttribute
private String maximumRedeliveryDelay;
@XmlAttribute
private LoggingLevel retriesExhaustedLogLevel;
@XmlAttribute
private LoggingLevel retryAttemptedLogLevel;
@XmlAttribute
private String logRetryAttempted;
@XmlAttribute
private String logStackTrace;
@XmlAttribute
private String logRetryStackTrace;
@XmlAttribute
private String logHandled;
@XmlAttribute
private String logContinued;
@XmlAttribute
private String logExhausted;
@XmlAttribute
private String disableRedelivery;
@XmlAttribute
private String delayPattern;
public RedeliveryPolicy getObject() throws Exception {
RedeliveryPolicy answer = new RedeliveryPolicy();
CamelContext context = getCamelContext();
// copy across the properties - if they are set
if (maximumRedeliveries != null) {
answer.setMaximumRedeliveries(CamelContextHelper.parseInteger(context, maximumRedeliveries));
}
if (redeliveryDelay != null) {
answer.setRedeliveryDelay(CamelContextHelper.parseLong(context, redeliveryDelay));
}
if (asyncDelayedRedelivery != null) {
if (CamelContextHelper.parseBoolean(context, asyncDelayedRedelivery)) {
answer.asyncDelayedRedelivery();
}
}
if (retriesExhaustedLogLevel != null) {
answer.setRetriesExhaustedLogLevel(retriesExhaustedLogLevel);
}
if (retryAttemptedLogLevel != null) {
answer.setRetryAttemptedLogLevel(retryAttemptedLogLevel);
}
if (backOffMultiplier != null) {
answer.setBackOffMultiplier(CamelContextHelper.parseDouble(context, backOffMultiplier));
}
if (useExponentialBackOff != null) {
answer.setUseExponentialBackOff(CamelContextHelper.parseBoolean(context, useExponentialBackOff));
}
if (collisionAvoidanceFactor != null) {
answer.setCollisionAvoidanceFactor(CamelContextHelper.parseDouble(context, collisionAvoidanceFactor));
}
if (useCollisionAvoidance != null) {
answer.setUseCollisionAvoidance(CamelContextHelper.parseBoolean(context, useCollisionAvoidance));
}
if (maximumRedeliveryDelay != null) {
answer.setMaximumRedeliveryDelay(CamelContextHelper.parseLong(context, maximumRedeliveryDelay));
}
if (logStackTrace != null) {
answer.setLogStackTrace(CamelContextHelper.parseBoolean(context, logStackTrace));
}
if (logRetryStackTrace != null) {
answer.setLogRetryStackTrace(CamelContextHelper.parseBoolean(context, logRetryStackTrace));
}
if (logHandled != null) {
answer.setLogHandled(CamelContextHelper.parseBoolean(context, logHandled));
}
if (logContinued != null) {
answer.setLogContinued(CamelContextHelper.parseBoolean(context, logContinued));
}
if (logRetryAttempted != null) {
answer.setLogRetryAttempted(CamelContextHelper.parseBoolean(context, logRetryAttempted));
}
if (logExhausted != null) {
answer.setLogExhausted(CamelContextHelper.parseBoolean(context, logExhausted));
}
if (disableRedelivery != null) {
if (CamelContextHelper.parseBoolean(context, disableRedelivery)) {
answer.setMaximumRedeliveries(0);
}
}
if (delayPattern != null) {
answer.setDelayPattern(delayPattern);
}
return answer;
}
protected abstract CamelContext getCamelContextWithId(String camelContextId);
public Class<RedeliveryPolicy> getObjectType() {
return RedeliveryPolicy.class;
}
public String getMaximumRedeliveries() {
return maximumRedeliveries;
}
public void setMaximumRedeliveries(String maximumRedeliveries) {
this.maximumRedeliveries = maximumRedeliveries;
}
public String getRedeliveryDelay() {
return redeliveryDelay;
}
public void setRedeliveryDelay(String redeliveryDelay) {
this.redeliveryDelay = redeliveryDelay;
}
public String getAsyncDelayedRedelivery() {
return asyncDelayedRedelivery;
}
public void setAsyncDelayedRedelivery(String asyncDelayedRedelivery) {
this.asyncDelayedRedelivery = asyncDelayedRedelivery;
}
public String getBackOffMultiplier() {
return backOffMultiplier;
}
public void setBackOffMultiplier(String backOffMultiplier) {
this.backOffMultiplier = backOffMultiplier;
}
public String getUseExponentialBackOff() {
return useExponentialBackOff;
}
public void setUseExponentialBackOff(String useExponentialBackOff) {
this.useExponentialBackOff = useExponentialBackOff;
}
public String getCollisionAvoidanceFactor() {
return collisionAvoidanceFactor;
}
public void setCollisionAvoidanceFactor(String collisionAvoidanceFactor) {
this.collisionAvoidanceFactor = collisionAvoidanceFactor;
}
public String getUseCollisionAvoidance() {
return useCollisionAvoidance;
}
public void setUseCollisionAvoidance(String useCollisionAvoidance) {
this.useCollisionAvoidance = useCollisionAvoidance;
}
public String getMaximumRedeliveryDelay() {
return maximumRedeliveryDelay;
}
public void setMaximumRedeliveryDelay(String maximumRedeliveryDelay) {
this.maximumRedeliveryDelay = maximumRedeliveryDelay;
}
public LoggingLevel getRetriesExhaustedLogLevel() {
return retriesExhaustedLogLevel;
}
public void setRetriesExhaustedLogLevel(LoggingLevel retriesExhaustedLogLevel) {
this.retriesExhaustedLogLevel = retriesExhaustedLogLevel;
}
public LoggingLevel getRetryAttemptedLogLevel() {
return retryAttemptedLogLevel;
}
public void setRetryAttemptedLogLevel(LoggingLevel retryAttemptedLogLevel) {
this.retryAttemptedLogLevel = retryAttemptedLogLevel;
}
public String getLogRetryAttempted() {
return logRetryAttempted;
}
public void setLogRetryAttempted(String logRetryAttempted) {
this.logRetryAttempted = logRetryAttempted;
}
public String getLogStackTrace() {
return logStackTrace;
}
public void setLogStackTrace(String logStackTrace) {
this.logStackTrace = logStackTrace;
}
public String getLogRetryStackTrace() {
return logRetryStackTrace;
}
public void setLogRetryStackTrace(String logRetryStackTrace) {
this.logRetryStackTrace = logRetryStackTrace;
}
public String getLogHandled() {
return logHandled;
}
public void setLogHandled(String logHandled) {
this.logHandled = logHandled;
}
public String getLogContinued() {
return logContinued;
}
public void setLogContinued(String logContinued) {
this.logContinued = logContinued;
}
public String getLogExhausted() {
return logExhausted;
}
public void setLogExhausted(String logExhausted) {
this.logExhausted = logExhausted;
}
public String getDisableRedelivery() {
return disableRedelivery;
}
public void setDisableRedelivery(String disableRedelivery) {
this.disableRedelivery = disableRedelivery;
}
public String getDelayPattern() {
return delayPattern;
}
public void setDelayPattern(String delayPattern) {
this.delayPattern = delayPattern;
}
}