1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.rice.ksb.impl.bus;
17
18 import org.kuali.rice.ksb.api.bus.Endpoint;
19 import org.kuali.rice.ksb.api.bus.ServiceConfiguration;
20 import org.kuali.rice.ksb.messaging.serviceconnectors.ServiceConnectorFactory;
21
22 public class LazyEndpoint implements Endpoint {
23
24 private final Object lock = new Object();
25
26 private final ServiceConfiguration serviceConfiguration;
27 private volatile Object service;
28
29 public LazyEndpoint(ServiceConfiguration serviceConfiguration) {
30 if (serviceConfiguration == null) {
31 throw new IllegalArgumentException("serviceConfiguration was null");
32 }
33 this.serviceConfiguration = serviceConfiguration;
34 }
35
36 @Override
37 public ServiceConfiguration getServiceConfiguration() {
38 return this.serviceConfiguration;
39 }
40
41 @Override
42 public Object getService() {
43
44 Object internalService = this.service;
45 if (internalService == null) {
46 synchronized (lock) {
47 internalService = this.service;
48 if (internalService == null) {
49 this.service = internalService = ServiceConnectorFactory.getServiceConnector(serviceConfiguration).getService();
50 }
51 }
52 }
53 return internalService;
54 }
55
56 }