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     *****************************************************************************/
009    package org.picocontainer.containers;
010    
011    import java.util.Properties;
012    
013    import org.picocontainer.DefaultPicoContainer;
014    import org.picocontainer.MutablePicoContainer;
015    import org.picocontainer.PicoContainer;
016    
017    /**
018     * immutable pico container constructed from properties.
019     * intendet to be used with config parameter
020     * 
021     * @author Konstantin Pribluda
022     *
023     */
024    @SuppressWarnings("serial")
025    public class PropertiesPicoContainer extends AbstractDelegatingPicoContainer {
026    
027            /**
028             * create with parent container and populate from properties
029             * @param properties
030             * @param parent
031             */
032            public PropertiesPicoContainer(Properties properties, PicoContainer parent) {
033                    super(new DefaultPicoContainer(parent));                
034                    // populate container from properties
035                    for(Object key: properties.keySet()) {
036                            ((MutablePicoContainer)getDelegate()).addComponent(key,properties.get(key));
037                    }
038            }
039    
040        /**
041             * construct without a parent
042             * @param properties
043             */
044            public PropertiesPicoContainer(Properties properties) {
045                    this(properties,null);
046            }
047    
048        public void setName(String s) {
049            ((DefaultPicoContainer)getDelegate()).setName(s);
050        }
051    
052    }