001/*****************************************************************************
002 * Copyright (C) PicoContainer Organization. All rights reserved.            *
003 * ------------------------------------------------------------------------- *
004 * The software in this package is published under the terms of the BSD      *
005 * style license a copy of which has been included with this distribution in *
006 * the LICENSE.txt file.                                                     *
007 *                                                                           *
008 * Original code by the committers                                           *
009 *****************************************************************************/
010package org.picocontainer.containers;
011
012import java.util.Properties;
013import org.picocontainer.ComponentAdapter;
014import org.picocontainer.MutablePicoContainer;
015import org.picocontainer.Parameter;
016import org.picocontainer.PicoCompositionException;
017import org.picocontainer.PicoContainer;
018import org.picocontainer.lifecycle.LifecycleState;
019
020/**
021 * abstract base class for delegating to mutable containers
022 * @author Paul Hammant
023 */
024public abstract class AbstractDelegatingMutablePicoContainer extends AbstractDelegatingPicoContainer implements MutablePicoContainer {
025
026    public AbstractDelegatingMutablePicoContainer(MutablePicoContainer delegate) {
027                super(delegate);
028        }
029
030        public MutablePicoContainer addComponent(Object componentKey,
031                                             Object componentImplementationOrInstance,
032                                             Parameter... parameters) throws PicoCompositionException {
033        return getDelegate().addComponent(componentKey, componentImplementationOrInstance, parameters);
034    }
035
036    public MutablePicoContainer addComponent(Object implOrInstance) throws PicoCompositionException {
037        return getDelegate().addComponent(implOrInstance);
038    }
039
040    public MutablePicoContainer addConfig(String name, Object val) {
041        return getDelegate().addConfig(name, val); 
042    }
043
044    public MutablePicoContainer addAdapter(ComponentAdapter<?> componentAdapter) throws PicoCompositionException {
045        return getDelegate().addAdapter(componentAdapter);
046    }
047
048    public <T> ComponentAdapter<T> removeComponent(Object componentKey) {
049        return getDelegate().removeComponent(componentKey);
050    }
051
052    public <T> ComponentAdapter<T> removeComponentByInstance(T componentInstance) {
053        return getDelegate().removeComponentByInstance(componentInstance);
054    }
055
056    public MutablePicoContainer addChildContainer(PicoContainer child) {
057        return getDelegate().addChildContainer(child);
058    }
059
060    public boolean removeChildContainer(PicoContainer child) {
061        return getDelegate().removeChildContainer(child);
062    }
063
064        public MutablePicoContainer change(Properties... properties) {
065            return getDelegate().change(properties);
066        }
067
068        public MutablePicoContainer as(Properties... properties) {
069            return getDelegate().as(properties);
070        }
071        
072        public void dispose() {
073                getDelegate().dispose();
074        }
075
076        public MutablePicoContainer makeChildContainer() {
077
078                return null;
079        }
080
081        public void start() {
082                getDelegate().start();
083        }
084
085        public void stop() {
086                getDelegate().stop();
087        }
088
089        public MutablePicoContainer getDelegate() {
090                return (MutablePicoContainer) super.getDelegate();
091        }
092
093    public void setName(String name) {
094        getDelegate().setName(name);
095    }
096
097    public void setLifecycleState(LifecycleState lifecycleState) {
098        getDelegate().setLifecycleState(lifecycleState);
099    }
100    
101    /** {@inheritDoc} **/
102    public LifecycleState getLifecycleState() {
103        return getDelegate().getLifecycleState();
104    }
105    
106    /** {@inheritDoc} **/
107    public String getName() {
108        return getDelegate().getName();
109    }
110
111}