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 }