001/*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements.  See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License.  You may obtain a copy of the License at
008 *
009 *      http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017package org.apache.camel.model;
018
019import javax.xml.bind.annotation.XmlAccessType;
020import javax.xml.bind.annotation.XmlAccessorType;
021import javax.xml.bind.annotation.XmlAttribute;
022import javax.xml.bind.annotation.XmlRootElement;
023
024import org.apache.camel.LoggingLevel;
025import org.apache.camel.spi.Metadata;
026
027/**
028 * To configure re-delivery for error handling
029 */
030@Metadata(label = "configuration")
031@XmlRootElement(name = "redeliveryPolicy")
032@XmlAccessorType(XmlAccessType.FIELD)
033public class RedeliveryPolicyDefinition {
034    @XmlAttribute
035    @Metadata(javaType = "java.lang.Integer")
036    private String maximumRedeliveries;
037    @XmlAttribute
038    @Metadata(javaType = "java.time.Duration")
039    private String redeliveryDelay;
040    @XmlAttribute
041    @Metadata(javaType = "java.lang.Boolean")
042    private String asyncDelayedRedelivery;
043    @XmlAttribute
044    @Metadata(javaType = "java.lang.Double")
045    private String backOffMultiplier;
046    @XmlAttribute
047    @Metadata(javaType = "java.lang.Boolean")
048    private String useExponentialBackOff;
049    @XmlAttribute
050    @Metadata(javaType = "java.lang.Double")
051    private String collisionAvoidanceFactor;
052    @XmlAttribute
053    @Metadata(javaType = "java.lang.Boolean")
054    private String useCollisionAvoidance;
055    @XmlAttribute
056    @Metadata(javaType = "java.time.Duration")
057    private String maximumRedeliveryDelay;
058    @XmlAttribute
059    @Metadata(javaType = "org.apache.camel.LoggingLevel")
060    private String retriesExhaustedLogLevel;
061    @XmlAttribute
062    @Metadata(javaType = "org.apache.camel.LoggingLevel")
063    private String retryAttemptedLogLevel;
064    @XmlAttribute
065    @Metadata(javaType = "java.lang.Integer")
066    private String retryAttemptedLogInterval;
067    @XmlAttribute
068    @Metadata(javaType = "java.lang.Boolean")
069    private String logRetryAttempted;
070    @XmlAttribute
071    @Metadata(javaType = "java.lang.Boolean")
072    private String logStackTrace;
073    @XmlAttribute
074    @Metadata(javaType = "java.lang.Boolean")
075    private String logRetryStackTrace;
076    @XmlAttribute
077    @Metadata(javaType = "java.lang.Boolean")
078    private String logHandled;
079    @XmlAttribute
080    @Metadata(javaType = "java.lang.Boolean")
081    private String logNewException;
082    @XmlAttribute
083    @Metadata(javaType = "java.lang.Boolean")
084    private String logContinued;
085    @XmlAttribute
086    @Metadata(javaType = "java.lang.Boolean")
087    private String logExhausted;
088    @XmlAttribute
089    @Metadata(javaType = "java.lang.Boolean")
090    private String logExhaustedMessageHistory;
091    @XmlAttribute
092    @Metadata(javaType = "java.lang.Boolean")
093    private String logExhaustedMessageBody;
094    @XmlAttribute
095    @Metadata(javaType = "java.lang.Boolean")
096    private String disableRedelivery;
097    @XmlAttribute
098    private String delayPattern;
099    @XmlAttribute
100    @Metadata(javaType = "java.lang.Boolean")
101    private String allowRedeliveryWhileStopping;
102    @XmlAttribute
103    private String exchangeFormatterRef;
104
105    @Override
106    public String toString() {
107        return "RedeliveryPolicy[maximumRedeliveries: " + maximumRedeliveries + "]";
108    }
109
110    // Fluent API
111    // -------------------------------------------------------------------------
112
113    /**
114     * Allow synchronous delayed redelivery. The route, in particular the
115     * consumer's component, must support the Asynchronous Routing Engine (e.g.
116     * seda).
117     *
118     * @return the builder
119     */
120    public RedeliveryPolicyDefinition asyncDelayedRedelivery() {
121        setAsyncDelayedRedelivery("true");
122        return this;
123    }
124
125    /**
126     * Controls whether to allow redelivery while stopping/shutting down a route
127     * that uses error handling.
128     *
129     * @param allowRedeliveryWhileStopping <tt>true</tt> to allow redelivery,
130     *            <tt>false</tt> to reject redeliveries
131     * @return the builder
132     */
133    public RedeliveryPolicyDefinition allowRedeliveryWhileStopping(boolean allowRedeliveryWhileStopping) {
134        return allowRedeliveryWhileStopping(Boolean.toString(allowRedeliveryWhileStopping));
135    }
136
137    /**
138     * Controls whether to allow redelivery while stopping/shutting down a route
139     * that uses error handling.
140     *
141     * @param allowRedeliveryWhileStopping <tt>true</tt> to allow redelivery,
142     *            <tt>false</tt> to reject redeliveries
143     * @return the builder
144     */
145    public RedeliveryPolicyDefinition allowRedeliveryWhileStopping(String allowRedeliveryWhileStopping) {
146        setAllowRedeliveryWhileStopping(allowRedeliveryWhileStopping);
147        return this;
148    }
149
150    /**
151     * Sets the back off multiplier
152     *
153     * @param backOffMultiplier the back off multiplier
154     * @return the builder
155     */
156    public RedeliveryPolicyDefinition backOffMultiplier(double backOffMultiplier) {
157        return backOffMultiplier(Double.toString(backOffMultiplier));
158    }
159
160    /**
161     * Sets the back off multiplier (supports property placeholders)
162     *
163     * @param backOffMultiplier the back off multiplier
164     * @return the builder
165     */
166    public RedeliveryPolicyDefinition backOffMultiplier(String backOffMultiplier) {
167        setBackOffMultiplier(backOffMultiplier);
168        return this;
169    }
170
171    /**
172     * Sets the collision avoidance percentage
173     *
174     * @param collisionAvoidancePercent the percentage
175     * @return the builder
176     */
177    public RedeliveryPolicyDefinition collisionAvoidancePercent(double collisionAvoidancePercent) {
178        setCollisionAvoidanceFactor(Double.toString(collisionAvoidancePercent * 0.01d));
179        return this;
180    }
181
182    /**
183     * Sets the collision avoidance factor
184     *
185     * @param collisionAvoidanceFactor the factor
186     * @return the builder
187     */
188    public RedeliveryPolicyDefinition collisionAvoidanceFactor(double collisionAvoidanceFactor) {
189        return collisionAvoidanceFactor(Double.toString(collisionAvoidanceFactor));
190    }
191
192    /**
193     * Sets the collision avoidance factor (supports property placeholders)
194     *
195     * @param collisionAvoidanceFactor the factor
196     * @return the builder
197     */
198    public RedeliveryPolicyDefinition collisionAvoidanceFactor(String collisionAvoidanceFactor) {
199        setCollisionAvoidanceFactor(collisionAvoidanceFactor);
200        return this;
201    }
202
203    /**
204     * Sets the initial redelivery delay
205     *
206     * @param delay delay in millis
207     * @return the builder
208     */
209    public RedeliveryPolicyDefinition redeliveryDelay(long delay) {
210        return redeliveryDelay(Long.toString(delay));
211    }
212
213    /**
214     * Sets the initial redelivery delay (supports property placeholders)
215     *
216     * @param delay delay in millis
217     * @return the builder
218     */
219    public RedeliveryPolicyDefinition redeliveryDelay(String delay) {
220        setRedeliveryDelay(delay);
221        return this;
222    }
223
224    /**
225     * Sets the logging level to use when retries has exhausted
226     *
227     * @param retriesExhaustedLogLevel the logging level
228     * @return the builder
229     */
230    public RedeliveryPolicyDefinition retriesExhaustedLogLevel(LoggingLevel retriesExhaustedLogLevel) {
231        return retriesExhaustedLogLevel(retriesExhaustedLogLevel.name());
232    }
233
234    /**
235     * Sets the logging level to use when retries has exhausted
236     *
237     * @param retriesExhaustedLogLevel the logging level
238     * @return the builder
239     */
240    public RedeliveryPolicyDefinition retriesExhaustedLogLevel(String retriesExhaustedLogLevel) {
241        setRetriesExhaustedLogLevel(retriesExhaustedLogLevel);
242        return this;
243    }
244
245    /**
246     * Sets the logging level to use for logging retry attempts
247     *
248     * @param retryAttemptedLogLevel the logging level
249     * @return the builder
250     */
251    public RedeliveryPolicyDefinition retryAttemptedLogLevel(LoggingLevel retryAttemptedLogLevel) {
252        return retryAttemptedLogLevel(retryAttemptedLogLevel.name());
253    }
254
255    /**
256     * Sets the logging level to use for logging retry attempts
257     *
258     * @param retryAttemptedLogLevel the logging level
259     * @return the builder
260     */
261    public RedeliveryPolicyDefinition retryAttemptedLogLevel(String retryAttemptedLogLevel) {
262        setRetryAttemptedLogLevel(retryAttemptedLogLevel);
263        return this;
264    }
265
266    /**
267     * Sets the interval to use for logging retry attempts
268     *
269     * @param retryAttemptedLogInterval the retry logging interval
270     * @return the builder
271     */
272    public RedeliveryPolicyDefinition retryAttemptedLogInterval(String retryAttemptedLogInterval) {
273        setRetryAttemptedLogInterval(retryAttemptedLogInterval);
274        return this;
275    }
276
277    /**
278     * Sets whether stack traces should be logged. Can be used to include or
279     * reduce verbose.
280     *
281     * @param logStackTrace whether stack traces should be logged or not
282     * @return the builder
283     */
284    public RedeliveryPolicyDefinition logStackTrace(boolean logStackTrace) {
285        return logStackTrace(Boolean.toString(logStackTrace));
286    }
287
288    /**
289     * Sets whether stack traces should be logged (supports property
290     * placeholders) Can be used to include or reduce verbose.
291     *
292     * @param logStackTrace whether stack traces should be logged or not
293     * @return the builder
294     */
295    public RedeliveryPolicyDefinition logStackTrace(String logStackTrace) {
296        setLogStackTrace(logStackTrace);
297        return this;
298    }
299
300    /**
301     * Sets whether stack traces should be logged when an retry attempt failed.
302     * Can be used to include or reduce verbose.
303     *
304     * @param logRetryStackTrace whether stack traces should be logged or not
305     * @return the builder
306     */
307    public RedeliveryPolicyDefinition logRetryStackTrace(boolean logRetryStackTrace) {
308        return logRetryStackTrace(Boolean.toString(logRetryStackTrace));
309    }
310
311    /**
312     * Sets whether stack traces should be logged when an retry attempt failed
313     * (supports property placeholders). Can be used to include or reduce
314     * verbose.
315     *
316     * @param logRetryStackTrace whether stack traces should be logged or not
317     * @return the builder
318     */
319    public RedeliveryPolicyDefinition logRetryStackTrace(String logRetryStackTrace) {
320        setLogRetryStackTrace(logRetryStackTrace);
321        return this;
322    }
323
324    /**
325     * Sets whether retry attempts should be logged or not. Can be used to
326     * include or reduce verbose.
327     *
328     * @param logRetryAttempted whether retry attempts should be logged or not
329     * @return the builder
330     */
331    public RedeliveryPolicyDefinition logRetryAttempted(boolean logRetryAttempted) {
332        return logRetryAttempted(Boolean.toString(logRetryAttempted));
333    }
334
335    /**
336     * Sets whether retry attempts should be logged or not (supports property
337     * placeholders). Can be used to include or reduce verbose.
338     *
339     * @param logRetryAttempted whether retry attempts should be logged or not
340     * @return the builder
341     */
342    public RedeliveryPolicyDefinition logRetryAttempted(String logRetryAttempted) {
343        setLogRetryAttempted(logRetryAttempted);
344        return this;
345    }
346
347    /**
348     * Sets whether handled exceptions should be logged or not. Can be used to
349     * include or reduce verbose.
350     *
351     * @param logHandled whether handled exceptions should be logged or not
352     * @return the builder
353     */
354    public RedeliveryPolicyDefinition logHandled(boolean logHandled) {
355        return logHandled(Boolean.toString(logHandled));
356    }
357
358    /**
359     * Sets whether handled exceptions should be logged or not (supports
360     * property placeholders). Can be used to include or reduce verbose.
361     *
362     * @param logHandled whether handled exceptions should be logged or not
363     * @return the builder
364     */
365    public RedeliveryPolicyDefinition logHandled(String logHandled) {
366        setLogHandled(logHandled);
367        return this;
368    }
369
370    /**
371     * Sets whether new exceptions should be logged or not. Can be used to
372     * include or reduce verbose.
373     * <p/>
374     * A new exception is an exception that was thrown while handling a previous
375     * exception.
376     *
377     * @param logNewException whether new exceptions should be logged or not
378     * @return the builder
379     */
380    public RedeliveryPolicyDefinition logNewException(boolean logNewException) {
381        return logNewException(Boolean.toString(logNewException));
382    }
383
384    /**
385     * Sets whether new exceptions should be logged or not (supports property
386     * placeholders). Can be used to include or reduce verbose.
387     * <p/>
388     * A new exception is an exception that was thrown while handling a previous
389     * exception.
390     *
391     * @param logNewException whether new exceptions should be logged or not
392     * @return the builder
393     */
394    public RedeliveryPolicyDefinition logNewException(String logNewException) {
395        setLogNewException(logNewException);
396        return this;
397    }
398
399    /**
400     * Sets whether continued exceptions should be logged or not. Can be used to
401     * include or reduce verbose.
402     *
403     * @param logContinued whether continued exceptions should be logged or not
404     * @return the builder
405     */
406    public RedeliveryPolicyDefinition logContinued(boolean logContinued) {
407        return logContinued(Boolean.toString(logContinued));
408    }
409
410    /**
411     * Sets whether continued exceptions should be logged or not (supports
412     * property placeholders). Can be used to include or reduce verbose.
413     *
414     * @param logContinued whether continued exceptions should be logged or not
415     * @return the builder
416     */
417    public RedeliveryPolicyDefinition logContinued(String logContinued) {
418        setLogContinued(logContinued);
419        return this;
420    }
421
422    /**
423     * Sets whether exhausted exceptions should be logged or not. Can be used to
424     * include or reduce verbose.
425     *
426     * @param logExhausted whether exhausted exceptions should be logged or not
427     * @return the builder
428     */
429    public RedeliveryPolicyDefinition logExhausted(boolean logExhausted) {
430        return logExhausted(Boolean.toString(logExhausted));
431    }
432
433    /**
434     * Sets whether exhausted exceptions should be logged or not (supports
435     * property placeholders). Can be used to include or reduce verbose.
436     *
437     * @param logExhausted whether exhausted exceptions should be logged or not
438     * @return the builder
439     */
440    public RedeliveryPolicyDefinition logExhausted(String logExhausted) {
441        setLogExhausted(logExhausted);
442        return this;
443    }
444
445    /**
446     * Sets whether exhausted exceptions should be logged including message
447     * history or not (supports property placeholders). Can be used to include
448     * or reduce verbose.
449     *
450     * @param logExhaustedMessageHistory whether exhausted exceptions should be
451     *            logged with message history
452     * @return the builder
453     */
454    public RedeliveryPolicyDefinition logExhaustedMessageHistory(boolean logExhaustedMessageHistory) {
455        setLogExhaustedMessageHistory(Boolean.toString(logExhaustedMessageHistory));
456        return this;
457    }
458
459    /**
460     * Sets whether exhausted exceptions should be logged including message
461     * history or not (supports property placeholders). Can be used to include
462     * or reduce verbose.
463     *
464     * @param logExhaustedMessageHistory whether exhausted exceptions should be
465     *            logged with message history
466     * @return the builder
467     */
468    public RedeliveryPolicyDefinition logExhaustedMessageHistory(String logExhaustedMessageHistory) {
469        setLogExhaustedMessageHistory(logExhaustedMessageHistory);
470        return this;
471    }
472
473    /**
474     * Sets whether exhausted message body should be logged including message
475     * history or not (supports property placeholders). Can be used to include
476     * or reduce verbose. Requires <tt>logExhaustedMessageHistory</tt> to be
477     * enabled.
478     *
479     * @param logExhaustedMessageBody whether exhausted message body should be
480     *            logged with message history
481     * @return the builder
482     */
483    public RedeliveryPolicyDefinition logExhaustedMessageBody(boolean logExhaustedMessageBody) {
484        setLogExhaustedMessageBody(Boolean.toString(logExhaustedMessageBody));
485        return this;
486    }
487
488    /**
489     * Sets whether exhausted message body should be logged including message
490     * history or not (supports property placeholders). Can be used to include
491     * or reduce verbose. Requires <tt>logExhaustedMessageHistory</tt> to be
492     * enabled.
493     *
494     * @param logExhaustedMessageBody whether exhausted message body should be
495     *            logged with message history
496     * @return the builder
497     */
498    public RedeliveryPolicyDefinition logExhaustedMessageBody(String logExhaustedMessageBody) {
499        setLogExhaustedMessageBody(logExhaustedMessageBody);
500        return this;
501    }
502
503    /**
504     * Sets the maximum redeliveries
505     * <ul>
506     * <li>x = redeliver at most x times</li>
507     * <li>0 = no redeliveries</li>
508     * <li>-1 = redeliver forever</li>
509     * </ul>
510     *
511     * @param maximumRedeliveries the value
512     * @return the builder
513     */
514    public RedeliveryPolicyDefinition maximumRedeliveries(int maximumRedeliveries) {
515        return maximumRedeliveries(Integer.toString(maximumRedeliveries));
516    }
517
518    /**
519     * Sets the maximum redeliveries (supports property placeholders)
520     * <ul>
521     * <li>x = redeliver at most x times</li>
522     * <li>0 = no redeliveries</li>
523     * <li>-1 = redeliver forever</li>
524     * </ul>
525     *
526     * @param maximumRedeliveries the value
527     * @return the builder
528     */
529    public RedeliveryPolicyDefinition maximumRedeliveries(String maximumRedeliveries) {
530        setMaximumRedeliveries(maximumRedeliveries);
531        return this;
532    }
533
534    /**
535     * Turn on collision avoidance.
536     *
537     * @return the builder
538     */
539    public RedeliveryPolicyDefinition useCollisionAvoidance() {
540        setUseCollisionAvoidance("true");
541        return this;
542    }
543
544    /**
545     * Turn on exponential backk off
546     *
547     * @return the builder
548     */
549    public RedeliveryPolicyDefinition useExponentialBackOff() {
550        setUseExponentialBackOff("true");
551        return this;
552    }
553
554    /**
555     * Sets the maximum delay between redelivery
556     *
557     * @param maximumRedeliveryDelay the delay in millis
558     * @return the builder
559     */
560    public RedeliveryPolicyDefinition maximumRedeliveryDelay(long maximumRedeliveryDelay) {
561        return maximumRedeliveryDelay(Long.toString(maximumRedeliveryDelay));
562    }
563
564    /**
565     * Sets the maximum delay between redelivery (supports property
566     * placeholders)
567     *
568     * @param maximumRedeliveryDelay the delay in millis
569     * @return the builder
570     */
571    public RedeliveryPolicyDefinition maximumRedeliveryDelay(String maximumRedeliveryDelay) {
572        setMaximumRedeliveryDelay(maximumRedeliveryDelay);
573        return this;
574    }
575
576    /**
577     * Sets the delay pattern with delay intervals.
578     *
579     * @param delayPattern the delay pattern
580     * @return the builder
581     */
582    public RedeliveryPolicyDefinition delayPattern(String delayPattern) {
583        setDelayPattern(delayPattern);
584        return this;
585    }
586
587    /**
588     * Sets the reference of the instance of
589     * {@link org.apache.camel.spi.ExchangeFormatter} to generate the log
590     * message from exchange.
591     *
592     * @param exchangeFormatterRef name of the instance of
593     *            {@link org.apache.camel.spi.ExchangeFormatter}
594     * @return the builder
595     */
596    public RedeliveryPolicyDefinition exchangeFormatterRef(String exchangeFormatterRef) {
597        setExchangeFormatterRef(exchangeFormatterRef);
598        return this;
599    }
600
601    // Properties
602    // -------------------------------------------------------------------------
603
604    public String getMaximumRedeliveries() {
605        return maximumRedeliveries;
606    }
607
608    public void setMaximumRedeliveries(String maximumRedeliveries) {
609        this.maximumRedeliveries = maximumRedeliveries;
610    }
611
612    public String getRedeliveryDelay() {
613        return redeliveryDelay;
614    }
615
616    public void setRedeliveryDelay(String redeliveryDelay) {
617        this.redeliveryDelay = redeliveryDelay;
618    }
619
620    public String getAsyncDelayedRedelivery() {
621        return asyncDelayedRedelivery;
622    }
623
624    public void setAsyncDelayedRedelivery(String asyncDelayedRedelivery) {
625        this.asyncDelayedRedelivery = asyncDelayedRedelivery;
626    }
627
628    public String getBackOffMultiplier() {
629        return backOffMultiplier;
630    }
631
632    public void setBackOffMultiplier(String backOffMultiplier) {
633        this.backOffMultiplier = backOffMultiplier;
634    }
635
636    public String getUseExponentialBackOff() {
637        return useExponentialBackOff;
638    }
639
640    public void setUseExponentialBackOff(String useExponentialBackOff) {
641        this.useExponentialBackOff = useExponentialBackOff;
642    }
643
644    public String getCollisionAvoidanceFactor() {
645        return collisionAvoidanceFactor;
646    }
647
648    public void setCollisionAvoidanceFactor(String collisionAvoidanceFactor) {
649        this.collisionAvoidanceFactor = collisionAvoidanceFactor;
650    }
651
652    public String getUseCollisionAvoidance() {
653        return useCollisionAvoidance;
654    }
655
656    public void setUseCollisionAvoidance(String useCollisionAvoidance) {
657        this.useCollisionAvoidance = useCollisionAvoidance;
658    }
659
660    public String getMaximumRedeliveryDelay() {
661        return maximumRedeliveryDelay;
662    }
663
664    public void setMaximumRedeliveryDelay(String maximumRedeliveryDelay) {
665        this.maximumRedeliveryDelay = maximumRedeliveryDelay;
666    }
667
668    public String getRetriesExhaustedLogLevel() {
669        return retriesExhaustedLogLevel;
670    }
671
672    public void setRetriesExhaustedLogLevel(String retriesExhaustedLogLevel) {
673        this.retriesExhaustedLogLevel = retriesExhaustedLogLevel;
674    }
675
676    public String getRetryAttemptedLogLevel() {
677        return retryAttemptedLogLevel;
678    }
679
680    public void setRetryAttemptedLogLevel(String retryAttemptedLogLevel) {
681        this.retryAttemptedLogLevel = retryAttemptedLogLevel;
682    }
683
684    public String getRetryAttemptedLogInterval() {
685        return retryAttemptedLogInterval;
686    }
687
688    public void setRetryAttemptedLogInterval(String retryAttemptedLogInterval) {
689        this.retryAttemptedLogInterval = retryAttemptedLogInterval;
690    }
691
692    public String getLogRetryAttempted() {
693        return logRetryAttempted;
694    }
695
696    public void setLogRetryAttempted(String logRetryAttempted) {
697        this.logRetryAttempted = logRetryAttempted;
698    }
699
700    public String getLogStackTrace() {
701        return logStackTrace;
702    }
703
704    public void setLogStackTrace(String logStackTrace) {
705        this.logStackTrace = logStackTrace;
706    }
707
708    public String getLogRetryStackTrace() {
709        return logRetryStackTrace;
710    }
711
712    public void setLogRetryStackTrace(String logRetryStackTrace) {
713        this.logRetryStackTrace = logRetryStackTrace;
714    }
715
716    public String getLogHandled() {
717        return logHandled;
718    }
719
720    public void setLogHandled(String logHandled) {
721        this.logHandled = logHandled;
722    }
723
724    public String getLogNewException() {
725        return logNewException;
726    }
727
728    public void setLogNewException(String logNewException) {
729        this.logNewException = logNewException;
730    }
731
732    public String getLogContinued() {
733        return logContinued;
734    }
735
736    public void setLogContinued(String logContinued) {
737        this.logContinued = logContinued;
738    }
739
740    public String getLogExhausted() {
741        return logExhausted;
742    }
743
744    public void setLogExhausted(String logExhausted) {
745        this.logExhausted = logExhausted;
746    }
747
748    public String getLogExhaustedMessageHistory() {
749        return logExhaustedMessageHistory;
750    }
751
752    public void setLogExhaustedMessageHistory(String logExhaustedMessageHistory) {
753        this.logExhaustedMessageHistory = logExhaustedMessageHistory;
754    }
755
756    public String getLogExhaustedMessageBody() {
757        return logExhaustedMessageBody;
758    }
759
760    public void setLogExhaustedMessageBody(String logExhaustedMessageBody) {
761        this.logExhaustedMessageBody = logExhaustedMessageBody;
762    }
763
764    public String getDisableRedelivery() {
765        return disableRedelivery;
766    }
767
768    /**
769     * Disables redelivery (same as setting maximum redeliveries to 0)
770     */
771    public void setDisableRedelivery(String disableRedelivery) {
772        this.disableRedelivery = disableRedelivery;
773    }
774
775    public String getDelayPattern() {
776        return delayPattern;
777    }
778
779    public void setDelayPattern(String delayPattern) {
780        this.delayPattern = delayPattern;
781    }
782
783    public String getAllowRedeliveryWhileStopping() {
784        return allowRedeliveryWhileStopping;
785    }
786
787    public void setAllowRedeliveryWhileStopping(String allowRedeliveryWhileStopping) {
788        this.allowRedeliveryWhileStopping = allowRedeliveryWhileStopping;
789    }
790
791    public String getExchangeFormatterRef() {
792        return exchangeFormatterRef;
793    }
794
795    public void setExchangeFormatterRef(String exchangeFormatterRef) {
796        this.exchangeFormatterRef = exchangeFormatterRef;
797    }
798
799}