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.html file. * 007 * * 008 * Idea by Rachel Davies, Original code by Aslak Hellesoy and Paul Hammant * 009 *****************************************************************************/ 010 package org.picocontainer.gems.util; 011 012 013 import java.util.Properties; 014 import java.io.IOException; 015 import java.io.InputStream; 016 017 /** 018 * constructable properties. 019 * 020 * @author Konstantin Pribluda 021 */ 022 @SuppressWarnings("serial") 023 public class ConstructableProperties extends Properties { 024 025 /** 026 * create properties from classpath resource using context classloader 027 * 028 * @param resource resource name 029 * @exception IOException passed from Properties.load() 030 */ 031 public ConstructableProperties(final String resource) throws IOException { 032 super(); 033 load(Thread.currentThread().getContextClassLoader().getResourceAsStream(resource)); 034 } 035 /** 036 * 037 * @param resource resource name 038 * @param defaults default properties 039 * @throws IOException can be thrown if something goes wrong 040 */ 041 public ConstructableProperties(final String resource, final Properties defaults) throws IOException { 042 super(defaults); 043 load(Thread.currentThread().getContextClassLoader().getResourceAsStream(resource)); 044 } 045 046 /** 047 * create properties from input stream 048 * @param stream to read from 049 * @throws IOException can be thrown by properties objkect 050 */ 051 public ConstructableProperties(final InputStream stream) throws IOException { 052 super(); 053 load(stream); 054 } 055 /** 056 * create from inpiut stream with default properties 057 * @param stream to read from 058 * @param defaults default properties 059 * @throws IOException can be thrown by properties object 060 */ 061 public ConstructableProperties(final InputStream stream, final Properties defaults) throws IOException { 062 super(defaults); 063 load(stream); 064 } 065 }