    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    }