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