1
2
3
4
5
6
7
8
9
10
11 package org.mule.transport.jms.redelivery;
12
13
14 import java.util.concurrent.atomic.AtomicReference;
15
16
17
18
19 public class CountingRedeliveryHandlerFactory implements RedeliveryHandlerFactory
20 {
21
22 protected AtomicReference<RedeliveryHandler> handler = new AtomicReference<RedeliveryHandler>(null);
23
24 public RedeliveryHandler create()
25 {
26 RedeliveryHandler result;
27
28
29 if (handler.get() == null)
30 {
31 final CountingRedeliveryHandler newInstance = new CountingRedeliveryHandler();
32 boolean ok = handler.compareAndSet(null, newInstance);
33 if (!ok)
34 {
35
36 result = handler.get();
37 }
38 else
39 {
40 result = newInstance;
41 }
42 }
43 else
44 {
45
46 result = handler.get();
47 }
48
49 return result;
50 }
51
52 }
53
54