1 /***
2 * JFoxSOAF, Service-Oriented Application Framework
3 *
4 * Copyright (C) www.huihoo.org
5 *
6 * Distributable under GNU LGPL For more information, please visit:
7 * http://www.huihoo.org/jfox/jfoxsoaf
8 */
9
10 package org.huihoo.jfox.soaf.container;
11
12 import java.util.List;
13
14 import org.picocontainer.ComponentAdapter;
15 import org.picocontainer.PicoContainer;
16 import org.picocontainer.PicoException;
17 import org.picocontainer.PicoRegistrationException;
18 import org.picocontainer.defaults.ComponentAdapterFactory;
19 import org.picocontainer.defaults.DefaultPicoContainer;
20
21 /***
22 * <p>
23 * The services container is a extension of DefaultPicoContainer.
24 * </p>
25 *
26 * @author <a href="mailto:founder_chen@yahoo.com.cn">Peter Cheng </a>
27 * @version $Revision: 1.7 $ $Date: 2004/10/25 13:37:43 $
28 * @version Revision: 1.0
29 */
30
31 public class ServiceContainer extends DefaultPicoContainer {
32
33 private static ServiceContainer serviceContainer;
34
35 public static ServiceContainer getInstance() {
36 if (serviceContainer == null) {
37
38 serviceContainer = new ServiceContainer();
39 }
40 return serviceContainer;
41 }
42
43 /***
44 * Creates a new container with a custom ComponentAdapterFactory and a
45 * parent container.
46 *
47 * @param componentAdapterFactory
48 * @param parent
49 */
50 public ServiceContainer(ComponentAdapterFactory componentAdapterFactory,
51 PicoContainer parent) {
52 super(componentAdapterFactory, parent);
53 }
54
55 /***
56 * Creates a new container with a parent container.
57 *
58 * @param parent
59 */
60 public ServiceContainer(PicoContainer parent) {
61 super(parent);
62 }
63
64 /***
65 * Default Container.
66 *
67 * @param parent
68 */
69 public ServiceContainer() {
70 super();
71 }
72
73 /***
74 * @see org.picocontainer.MutablePicoContainer#registerComponentImplementation(java.lang.Object)
75 */
76 public ComponentAdapter registerServiceImplementation(
77 Class serviceImpl) throws PicoRegistrationException {
78 return super.registerComponentImplementation(serviceImpl);
79
80 }
81
82 /***
83 * @see org.picocontainer.defaults.DefaultPicoContainer#registerComponentImplementation(java.lang.Object,
84 * java.lang.Class, java.util.List)
85 */
86 public ComponentAdapter registerServiceImplementation(Object serviceKey,
87 Class serviceImpl, List parameters)
88 throws PicoRegistrationException {
89 return super.registerComponentImplementation(serviceKey,
90 serviceImpl, parameters);
91 }
92
93 /***
94 * @see org.picocontainer.MutablePicoContainer#registerComponentImplementation(java.lang.Object,
95 * java.lang.Class)
96 */
97 public ComponentAdapter registerServiceImplementation(Object serviceKey,
98 Class serviceImpl) throws PicoRegistrationException {
99 return super.registerComponentImplementation(serviceKey,
100 serviceImpl);
101 }
102
103 /***
104 * @see org.picocontainer.MutablePicoContainer#registerComponentInstance(java.lang.Object,
105 * java.lang.Object)
106 */
107 public ComponentAdapter registerServiceInstance(Object serviceKey,
108 Object serviceInstance) throws PicoRegistrationException {
109 return super.registerComponentInstance(serviceKey, serviceInstance);
110 }
111
112 /***
113 * @see org.picocontainer.MutablePicoContainer#registerComponentInstance(java.lang.Object)
114 */
115 public ComponentAdapter registerServiceInstance(Object serviceInstance)
116 throws PicoRegistrationException {
117 return super.registerComponentInstance(serviceInstance);
118 }
119
120 /***
121 * @see org.picocontainer.PicoContainer#getComponentInstance(java.lang.Object)
122 */
123 public Object getService(Object serviceKey) throws PicoException {
124 return super.getComponentInstance(serviceKey);
125 }
126
127 /***
128 * @see org.picocontainer.PicoContainer#getComponentInstanceOfType(java.lang.Class)
129 */
130 public Object getServiceOfType(Class serviceType) {
131 return super.getComponentInstanceOfType(serviceType);
132 }
133
134 /***
135 * Unregister service.
136 *
137 * @param service
138 * @return ComponentAdapter
139 */
140 public ComponentAdapter unregisterService(Object service) {
141 return super.unregisterComponent(service);
142 }
143 }