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     *****************************************************************************/
010    package org.picocontainer.containers;
011    
012    import java.util.Properties;
013    import org.picocontainer.ComponentAdapter;
014    import org.picocontainer.MutablePicoContainer;
015    import org.picocontainer.Parameter;
016    import org.picocontainer.PicoCompositionException;
017    import org.picocontainer.PicoContainer;
018    
019    /**
020     * abstract base class for delegating to mutable containers
021     * @author Paul Hammant
022     */
023    public abstract class AbstractDelegatingMutablePicoContainer extends AbstractDelegatingPicoContainer implements MutablePicoContainer {
024    
025        public AbstractDelegatingMutablePicoContainer(MutablePicoContainer delegate) {
026                    super(delegate);
027            }
028    
029            public MutablePicoContainer addComponent(Object componentKey,
030                                                 Object componentImplementationOrInstance,
031                                                 Parameter... parameters) throws PicoCompositionException {
032            return getDelegate().addComponent(componentKey, componentImplementationOrInstance, parameters);
033        }
034    
035        public MutablePicoContainer addComponent(Object implOrInstance) throws PicoCompositionException {
036            return getDelegate().addComponent(implOrInstance);
037        }
038    
039        public MutablePicoContainer addConfig(String name, Object val) {
040            return getDelegate().addConfig(name, val); 
041        }
042    
043        public MutablePicoContainer addAdapter(ComponentAdapter<?> componentAdapter) throws PicoCompositionException {
044            return getDelegate().addAdapter(componentAdapter);
045        }
046    
047        public <T> ComponentAdapter<T> removeComponent(Object componentKey) {
048            return getDelegate().removeComponent(componentKey);
049        }
050    
051        public <T> ComponentAdapter<T> removeComponentByInstance(T componentInstance) {
052            return getDelegate().removeComponentByInstance(componentInstance);
053        }
054    
055        public MutablePicoContainer addChildContainer(PicoContainer child) {
056            return getDelegate().addChildContainer(child);
057        }
058    
059        public boolean removeChildContainer(PicoContainer child) {
060            return getDelegate().removeChildContainer(child);
061        }
062    
063            public MutablePicoContainer change(Properties... properties) {
064                return getDelegate().change(properties);
065            }
066    
067            public MutablePicoContainer as(Properties... properties) {
068                return getDelegate().as(properties);
069            }
070            
071            public void dispose() {
072                    getDelegate().dispose();
073            }
074    
075            public MutablePicoContainer makeChildContainer() {
076    
077                    return null;
078            }
079    
080            public void start() {
081                    getDelegate().start();
082            }
083    
084            public void stop() {
085                    getDelegate().stop();
086            }
087    
088            public MutablePicoContainer getDelegate() {
089                    return (MutablePicoContainer) super.getDelegate();
090            }
091    }