1 package net.sf.crispy.server;
2
3 import java.util.Hashtable;
4 import java.util.Map;
5
6 import net.sf.crispy.impl.ServiceManager;
7 import net.sf.crispy.util.Util;
8
9 /**
10 *
11 * Container for the service implementation. This is a mapping from service-interface to the service-implementation.
12 * The service instance exist once. They must be Thread safe.
13 *
14 * @author Linke
15 *
16 * @since 1.1.0
17 */
18 public class SingleServiceContainerImpl implements SingleServiceContainer {
19
20 private Map services = new Hashtable();
21
22
23 /**
24 * see net.sf.crispy.server.SingleServiceContainer#addService(java.lang.String, java.lang.Object)
25 */
26 public void addService(String pvServiceInterfaceName, Object pvServiceImpl) {
27 services.put(pvServiceInterfaceName, pvServiceImpl);
28 }
29
30 /**
31 * @see net.sf.crispy.server.SingleServiceContainer#addService(java.lang.String, java.lang.String)
32 */
33 public void addService(String pvServiceInterfaceName, String pvServiceImplName) {
34 try {
35 Object lvServiceImpl = Util.createObject(pvServiceImplName);
36 addService(pvServiceInterfaceName, lvServiceImpl);
37 } catch (Exception e) {
38 if (ServiceManager.DEBUG_MODE_ON) {
39 e.printStackTrace();
40 }
41 }
42 }
43
44 /**
45 * @see net.sf.crispy.server.SingleServiceContainer#removeService(java.lang.String)
46 */
47 public void removeService(String pvServiceInterfaceName) {
48 services.remove(pvServiceInterfaceName);
49 }
50
51 /**
52 * @see net.sf.crispy.server.SingleServiceContainer#getService(java.lang.String)
53 */
54 public Object getService(String pvServiceInterfaceName) {
55 return services.get(pvServiceInterfaceName);
56 }
57
58 /**
59 * @see net.sf.crispy.server.SingleServiceContainer#getServiceSize()
60 */
61 public int getServiceSize() {
62 return services.size();
63 }
64
65 }