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