View Javadoc

    1   /***
    2    * @(#)ServiceContainer.java
    3    *
    4    * JFoxSOAF, Service-Oriented Application Framework
    5    *
    6    * Copyright(c) JFoxSOAF Team
    7    *
    8    * Licensed under the GNU LGPL, Version 2.1 (the "License");
    9    * you may not use this file except in compliance with the License.
    10   * You may obtain a copy of the License at
    11   *
    12   * http://www.gnu.org/copyleft/lesser.html
    13   *
    14   * Unless required by applicable law or agreed to in writing, software
    15   * distributed under the License is distributed on an "AS IS" BASIS,
    16   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    17   * See the License for the specific language governing permissions and
    18   * limitations under the License.
    19   *
    20   * For more information, please visit:
    21   * http://www.jfox.cn/confluence/display/JFoxSOAF/Home
    22   * http://www.huihoo.org/jfox/jfoxsoaf
    23   */
    24
    25  package org.huihoo.jfox.soaf.container;
    26
    27  import java.util.List;
    28
    29  import org.picocontainer.ComponentAdapter;
    30  import org.picocontainer.PicoContainer;
    31  import org.picocontainer.PicoException;
    32  import org.picocontainer.PicoRegistrationException;
    33  import org.picocontainer.defaults.ComponentAdapterFactory;
    34  import org.picocontainer.defaults.DefaultPicoContainer;
    35
    36  /***
    37   * <p>
    38   * The services container is a extension of DefaultPicoContainer.
    39   * </p>
    40   *
    41   * @author <a href="mailto:founder_chen@yahoo.com.cn">Peter Cheng </a>
    42   * @version $Revision: 1.12 $ $Date: 2005/05/22 06:46:49 $
    43   * @version Revision: 1.0
    44   */
    45
    46  public class ServiceContainer extends DefaultPicoContainer {
    47
    48      private static ServiceContainer serviceContainer;
    49
    50      public static ServiceContainer getInstance() {
    51          if (serviceContainer == null) {
    52
    53              serviceContainer = new ServiceContainer();
    54          }
    55          return serviceContainer;
    56      }
    57
    58      /***
    59       * Creates a new container with a custom ComponentAdapterFactory and a
    60       * parent container.
    61       *
    62       * @param componentAdapterFactory
    63       * @param parent
    64       */
    65      public ServiceContainer(ComponentAdapterFactory componentAdapterFactory,
    66              PicoContainer parent) {
    67          super(componentAdapterFactory, parent);
    68      }
    69
    70      /***
    71       * Creates a new container with a parent container.
    72       *
    73       * @param parent
    74       */
    75      public ServiceContainer(PicoContainer parent) {
    76          super(parent);
    77      }
    78
    79      /***
    80       * Default Container.
    81       *
    82       * @param parent
    83       */
    84      public ServiceContainer() {
    85          super();
    86      }
    87
    88      /***
    89       * @see org.picocontainer.MutablePicoContainer#registerComponentImplementation(java.lang.Object)
    90       */
    91      public ComponentAdapter registerServiceImplementation(Class serviceImpl)
    92              throws PicoRegistrationException {
    93          return super.registerComponentImplementation(serviceImpl);
    94
    95      }
    96
    97      /***
    98       * @see org.picocontainer.defaults.DefaultPicoContainer#registerComponentImplementation(java.lang.Object,
    99       *      java.lang.Class, java.util.List)
    100      */
    101     public ComponentAdapter registerServiceImplementation(Object serviceKey,
    102             Class serviceImpl, List parameters)
    103             throws PicoRegistrationException {
    104         return super.registerComponentImplementation(serviceKey, serviceImpl,
    105                 parameters);
    106     }
    107
    108     /***
    109      * @see org.picocontainer.MutablePicoContainer#registerComponentImplementation(java.lang.Object,
    110      *      java.lang.Class)
    111      */
    112     public ComponentAdapter registerServiceImplementation(Object serviceKey,
    113             Class serviceImpl) throws PicoRegistrationException {
    114         return super.registerComponentImplementation(serviceKey, serviceImpl);
    115     }
    116
    117     /***
    118      * @see org.picocontainer.MutablePicoContainer#registerComponentInstance(java.lang.Object,
    119      *      java.lang.Object)
    120      */
    121     public ComponentAdapter registerServiceInstance(Object serviceKey,
    122             Object serviceInstance) throws PicoRegistrationException {
    123         return super.registerComponentInstance(serviceKey, serviceInstance);
    124     }
    125
    126     /***
    127      * @see org.picocontainer.MutablePicoContainer#registerComponentInstance(java.lang.Object)
    128      */
    129     public ComponentAdapter registerServiceInstance(Object serviceInstance)
    130             throws PicoRegistrationException {
    131         return super.registerComponentInstance(serviceInstance);
    132     }
    133
    134     /***
    135      * @see org.picocontainer.PicoContainer#getComponentInstance(java.lang.Object)
    136      */
    137     public Object getService(Object serviceKey) throws PicoException {
    138         return super.getComponentInstance(serviceKey);
    139     }
    140
    141     /***
    142      * @see org.picocontainer.PicoContainer#getComponentInstanceOfType(java.lang.Class)
    143      */
    144     public Object getServiceOfType(Class serviceType) {
    145         return super.getComponentInstanceOfType(serviceType);
    146     }
    147
    148     /***
    149      * Unregister service.
    150      *
    151      * @param service
    152      * @return ComponentAdapter
    153      */
    154     public ComponentAdapter unregisterService(Object service) {
    155         return super.unregisterComponent(service);
    156     }
    157 }