Example usage for org.apache.commons.configuration CompositeConfiguration addConfiguration

List of usage examples for org.apache.commons.configuration CompositeConfiguration addConfiguration

Introduction

In this page you can find the example usage for org.apache.commons.configuration CompositeConfiguration addConfiguration.

Prototype

public void addConfiguration(Configuration config) 

Source Link

Document

Add a configuration.

Usage

From source file:org.overlord.sramp.ui.server.listeners.Initializer.java

/**
 * @see javax.servlet.ServletContextListener#contextInitialized(javax.servlet.ServletContextEvent)
 *///from   w  ww.  j  a va  2  s.co m
@Override
public void contextInitialized(ServletContextEvent event) {
    try {
        CompositeConfiguration config = new CompositeConfiguration();
        config.addConfiguration(new SystemConfiguration());
        config.addConfiguration(new JNDIConfiguration("java:comp/env/overlord/s-ramp-ui"));
        config.addConfiguration(new PropertiesConfiguration(
                Initializer.class.getResource("/META-INF/config/org.overlord.sramp.ui.server.api.properties")));
        System.out.println("S-RAMP user interface configuration loaded.  S-RAMP Atom API endpoint: "
                + config.getString("s-ramp.atom-api.endpoint"));

        // Now initialize the S-RAMP Atom API Client singleton
        SrampAtomApiClient.init(config);
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
}

From source file:org.rdswicthboard.utils.rdf.oai.App.java

public static void main(String[] args) {
    // create the command line parser
    CommandLineParser parser = new DefaultParser();

    // create the Options
    Options options = new Options();
    options.addOption("i", PROPERTY_INPUT_FILE, true, "input RDF file");
    options.addOption("o", PROPERTY_OUTPUT_FILE, true,
            "output OAI-PMH XML file (default is " + DEFAULT_OUTPUT_FILE + ")");
    options.addOption("c", PROPERTY_CONFIG_FILE, true, "configuration file (" + PROPERTIES_FILE + ")");
    options.addOption("s", PROPERTY_SET_SPEC, true, "set spec value (default is " + DEFAULT_SET_SPEC + ")");
    options.addOption("I", PROPERTY_INPUT_ENCODING, true,
            "input file encoding (default is " + DEFAULT_ENCODING + ")");
    options.addOption("O", PROPERTY_OUTPUT_ENCODING, true,
            "output file encoding (default is " + DEFAULT_ENCODING + ")");
    options.addOption("f", PROPERTY_FORMAT_OUTPUT, false, "format output encoding");
    options.addOption("h", PROPERTY_HELP, false, "print this message");

    try {/*from www.  j  ava2  s  .c om*/
        // parse the command line arguments
        CommandLine line = parser.parse(options, args);

        if (line.hasOption(PROPERTY_HELP)) {
            HelpFormatter formatter = new HelpFormatter();
            formatter.printHelp("java -jar rdf2oai-[verion].jar [PARAMETERS] [INPUT FILE] [OUTPUT FILE]",
                    options);

            System.exit(0);
        }

        // variables to store program properties
        CompositeConfiguration config = new CompositeConfiguration();
        config.setProperty(PROPERTY_OUTPUT_FILE, DEFAULT_OUTPUT_FILE);
        config.setProperty(PROPERTY_INPUT_ENCODING, DEFAULT_ENCODING);
        config.setProperty(PROPERTY_OUTPUT_ENCODING, DEFAULT_ENCODING);
        config.setProperty(PROPERTY_SET_SPEC, DEFAULT_SET_SPEC);
        config.setProperty(PROPERTY_FORMAT_OUTPUT, DEFAULT_FORMAT_OUTPUT);

        // check if arguments has input file properties 
        if (line.hasOption(PROPERTY_CONFIG_FILE)) {
            // if it does, load the specified configuration file
            Path defaultConfig = Paths.get(line.getOptionValue(PROPERTY_CONFIG_FILE));
            if (Files.isRegularFile(defaultConfig) && Files.isReadable(defaultConfig)) {
                config.addConfiguration(new PropertiesConfiguration(defaultConfig.toFile()));
            } else
                throw new Exception("Invalid configuration file: " + defaultConfig.toString());
        } else {
            // if it not, try to load default configurationfile
            Path defaultConfig = Paths.get(PROPERTIES_FILE);
            if (Files.isRegularFile(defaultConfig) && Files.isReadable(defaultConfig)) {
                config.addConfiguration(new PropertiesConfiguration(defaultConfig.toFile()));
            }
        }

        // check if arguments has input file 
        if (line.hasOption(PROPERTY_INPUT_FILE))
            config.setProperty(PROPERTY_INPUT_FILE, line.getOptionValue(PROPERTY_INPUT_FILE));

        // check if arguments has output file
        if (line.hasOption(PROPERTY_OUTPUT_FILE))
            config.setProperty(PROPERTY_OUTPUT_FILE, line.getOptionValue(PROPERTY_OUTPUT_FILE));

        // check if arguments has set spec name
        if (line.hasOption(PROPERTY_SET_SPEC))
            config.setProperty(PROPERTY_SET_SPEC, line.getOptionValue(PROPERTY_SET_SPEC));

        // check if arguments has input encoding
        if (line.hasOption(PROPERTY_INPUT_ENCODING))
            config.setProperty(PROPERTY_INPUT_ENCODING, line.getOptionValue(PROPERTY_INPUT_ENCODING));

        // check if arguments has output encoding
        if (line.hasOption(PROPERTY_OUTPUT_ENCODING))
            config.setProperty(PROPERTY_OUTPUT_ENCODING, line.getOptionValue(PROPERTY_OUTPUT_ENCODING));

        // check if arguments has output encoding
        if (line.hasOption(PROPERTY_FORMAT_OUTPUT))
            config.setProperty(PROPERTY_FORMAT_OUTPUT, "yes");

        // check if arguments has input file without a key
        if (line.getArgs().length > 0) {
            config.setProperty(PROPERTY_INPUT_FILE, line.getArgs()[0]);

            // check if arguments has output file without a key
            if (line.getArgs().length > 1) {
                config.setProperty(PROPERTY_OUTPUT_FILE, line.getArgs()[1]);

                // check if there is too many arguments
                if (line.getArgs().length > 2)
                    throw new Exception("Too many arguments");
            }
        }

        // The program has default output file, but input file must be presented
        if (!config.containsKey(PROPERTY_INPUT_FILE))
            throw new Exception("Please specify input file");

        // extract input file
        String inputFile = config.getString(PROPERTY_INPUT_FILE);

        // extract output file
        String outputFile = config.getString(PROPERTY_OUTPUT_FILE);

        // extract set spec
        String setSpecName = config.getString(PROPERTY_SET_SPEC);

        // extract encoding
        String inputEncoding = config.getString(PROPERTY_INPUT_ENCODING);
        String outputEncoding = config.getString(PROPERTY_OUTPUT_ENCODING);

        boolean formatOutput = config.getBoolean(PROPERTY_FORMAT_OUTPUT);

        // test if source is an regular file and it is readable
        Path source = Paths.get(inputFile);
        if (!Files.isRegularFile(source))
            throw new Exception("The input file: " + source.toString() + " is not an regular file");
        if (!Files.isReadable(source))
            throw new Exception("The input file: " + source.toString() + " is not readable");

        Path target = Paths.get(outputFile);
        if (Files.exists(target)) {
            if (!Files.isRegularFile(target))
                throw new Exception("The output file: " + target.toString() + " is not an regular file");
            if (!Files.isWritable(target))
                throw new Exception("The output file: " + target.toString() + " is not writable");
        }

        // create and setup document builder factory
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        factory.setNamespaceAware(true);

        // create new document builder
        DocumentBuilder builder = factory.newDocumentBuilder();

        // create oai document
        Document oai = builder.newDocument();

        // set document version
        oai.setXmlVersion("1.0");
        oai.setXmlStandalone(true);

        // create root OAI-PMH element
        Element oaiPmh = oai.createElement("OAI-PMH");

        // set document namespaces
        oaiPmh.setAttribute("xmlns", "http://www.openarchives.org/OAI/2.0/");
        oaiPmh.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:xsi",
                "http://www.w3.org/2001/XMLSchema-instance");
        oaiPmh.setAttribute("xsi:schemaLocation",
                "http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd");

        // append root node
        oai.appendChild(oaiPmh);

        // create responseDate element
        Element responseDate = oai.createElement("responseDate");

        // create simple date format
        DateFormat dateFormat = new SimpleDateFormat(TIME_FORMAT);

        // generate date
        String date = dateFormat.format(new Date());

        // set current date and time
        responseDate.setTextContent(date);

        oaiPmh.appendChild(responseDate);

        Element listRecords = oai.createElement("ListRecords");
        oaiPmh.appendChild(listRecords);

        // create xpath factory
        XPathFactory xPathfactory = XPathFactory.newInstance();

        // create namespace context
        NamespaceContext namespaceContext = new NamespaceContext() {
            public String getNamespaceURI(String prefix) {
                if (prefix.equals("rdf"))
                    return RDF_NAMESPACE;
                else if (prefix.equals("rns"))
                    return RNF_NAMESPACE;
                else
                    return null;
            }

            @Override
            public Iterator<?> getPrefixes(String val) {
                throw new IllegalAccessError("Not implemented!");
            }

            @Override
            public String getPrefix(String uri) {
                throw new IllegalAccessError("Not implemented!");
            }
        };

        // create xpath object
        XPath xpath = xPathfactory.newXPath();
        // set namespace contex
        xpath.setNamespaceContext(namespaceContext);

        // create XPath expressions
        XPathExpression idExpr = xpath.compile("/rdf:RDF/rns:Researcher/@rdf:about");
        XPathExpression emptyExpr = xpath.compile("//text()[normalize-space(.) = '']");

        // create RegEx patterns  
        Pattern pattern = Pattern.compile(
                "<\\?xml\\s+version=\"[\\d\\.]+\"\\s*\\?>\\s*<\\s*rdf:RDF[^>]*>[\\s\\S]*?<\\s*\\/\\s*rdf:RDF\\s*>");

        // read file into a string
        String content = new String(Files.readAllBytes(source), inputEncoding);

        Matcher matcher = pattern.matcher(content);
        // process all records
        while (matcher.find()) {
            // convert string to input stream
            ByteArrayInputStream input = new ByteArrayInputStream(
                    matcher.group().getBytes(StandardCharsets.UTF_8.toString()));

            // parse the xml document
            Document doc = builder.parse(input);

            // remove all spaces
            NodeList emptyNodes = (NodeList) emptyExpr.evaluate(doc, XPathConstants.NODESET);
            // Remove each empty text node from document.
            for (int i = 0; i < emptyNodes.getLength(); i++) {
                Node emptyTextNode = emptyNodes.item(i);
                emptyTextNode.getParentNode().removeChild(emptyTextNode);
            }

            // obtain researcher id
            String id = (String) idExpr.evaluate(doc, XPathConstants.STRING);
            if (StringUtils.isEmpty(id))
                throw new Exception("The record identifier can not be empty");

            // create record element
            Element record = oai.createElement("record");
            listRecords.appendChild(record);

            // create header element
            Element header = oai.createElement("header");
            record.appendChild(header);

            // create identifier element
            Element identifier = oai.createElement("identifier");
            identifier.setTextContent(id);
            header.appendChild(identifier);

            // create datestamp element
            Element datestamp = oai.createElement("datestamp");
            datestamp.setTextContent(date);
            header.appendChild(datestamp);

            // create set spec element if it exists
            if (!StringUtils.isEmpty(setSpecName)) {
                Element setSpec = oai.createElement("setSpec");
                setSpec.setTextContent(setSpecName);
                header.appendChild(setSpec);
            }

            // create metadata element
            Element metadata = oai.createElement("metadata");
            record.appendChild(metadata);

            // import the record
            metadata.appendChild(oai.importNode(doc.getDocumentElement(), true));
        }

        // create transformer factory
        TransformerFactory transformerFactory = TransformerFactory.newInstance();

        // create transformer
        Transformer transformer = transformerFactory.newTransformer();
        transformer.setOutputProperty(OutputKeys.ENCODING, outputEncoding);

        if (formatOutput) {
            transformer.setOutputProperty(OutputKeys.INDENT, "yes");
            transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
        } else
            transformer.setOutputProperty(OutputKeys.INDENT, "no");

        // create dom source
        DOMSource oaiSource = new DOMSource(oai);

        // create stream result
        StreamResult result = new StreamResult(target.toFile());

        // stream xml to file
        transformer.transform(oaiSource, result);

        // optional stream xml to console for testing
        //StreamResult consoleResult = new StreamResult(System.out);
        //transformer.transform(oaiSource, consoleResult);

    } catch (Exception e) {
        System.err.println("Error: " + e.getMessage());

        //e.printStackTrace();

        System.exit(1);
    }
}

From source file:org.rdswicthboard.utils.xml.split.Properties.java

public static Configuration fromArgs(String[] args) throws Exception {
    CommandLineParser parser = new DefaultParser();

    // create the Options
    Options options = new Options();
    options.addOption("i", PROPERTY_INPUT_FILE, true, "input RDF file");
    options.addOption("P", PROPERTY_OUTPUT_PREFIX, true,
            "output files prefix (default is " + DEFAULT_OUTPUT_PREFIX + "N.xml)");
    options.addOption("c", PROPERTY_CONFIG_FILE, true, "configuration file (optional)");
    options.addOption("I", PROPERTY_INPUT_ENCODING, true,
            "input file encoding (default is " + DEFAULT_ENCODING + ")");
    options.addOption("O", PROPERTY_OUTPUT_ENCODING, true,
            "output file encoding (default is " + DEFAULT_ENCODING + ")");
    options.addOption("r", PROPERTY_ROOT_NODE, true, "root node (with namespace if needed)");
    options.addOption("f", PROPERTY_FORMAT_OUTPUT, false, "format output encoding");
    options.addOption("h", PROPERTY_HELP, false, "print this message");

    // parse the command line arguments
    CommandLine line = parser.parse(options, args);

    if (line.hasOption(PROPERTY_HELP)) {
        HelpFormatter formatter = new HelpFormatter();
        formatter.printHelp("java -jar oai-combine-[verion].jar [PARAMETERS]", options);

        System.exit(0);/*from   www . j av  a  2s . c  om*/
    }

    // variables to store program properties
    CompositeConfiguration config = new CompositeConfiguration();
    config.setProperty(PROPERTY_INPUT_FILE, "publications.xml");
    config.setProperty(PROPERTY_ROOT_NODE, "OAI-PMH");
    config.setProperty(PROPERTY_OUTPUT_PREFIX, "nii/oai_");
    //      config.setProperty( PROPERTY_OUTPUT_PREFIX, DEFAULT_OUTPUT_PREFIX );
    config.setProperty(PROPERTY_INPUT_ENCODING, DEFAULT_ENCODING);
    config.setProperty(PROPERTY_OUTPUT_ENCODING, DEFAULT_ENCODING);
    config.setProperty(PROPERTY_FORMAT_OUTPUT, DEFAULT_FORMAT_OUTPUT);

    // check if arguments has input file properties 
    if (line.hasOption(PROPERTY_CONFIG_FILE)) {
        // if it does, load the specified configuration file
        Path defaultConfig = Paths.get(line.getOptionValue(PROPERTY_CONFIG_FILE));
        if (Files.isRegularFile(defaultConfig) && Files.isReadable(defaultConfig)) {
            config.addConfiguration(new PropertiesConfiguration(defaultConfig.toFile()));
        } else
            throw new Exception("Invalid configuration file: " + defaultConfig.toString());
    }

    // copy properties from the command line
    for (String property : new String[] { PROPERTY_INPUT_FILE, PROPERTY_OUTPUT_PREFIX, PROPERTY_INPUT_ENCODING,
            PROPERTY_OUTPUT_ENCODING, PROPERTY_ROOT_NODE }) {
        if (line.hasOption(property))
            config.setProperty(property, line.getOptionValue(property));
    }

    // check if arguments has output encoding
    if (line.hasOption(PROPERTY_FORMAT_OUTPUT))
        config.setProperty(PROPERTY_FORMAT_OUTPUT, "yes");

    // the program has default output file, but input file must be presented
    if (!config.containsKey(PROPERTY_INPUT_FILE))
        throw new Exception("Please specify input file");

    // the program has default output file, but input file must be presented
    if (!config.containsKey(PROPERTY_ROOT_NODE))
        throw new Exception("Please specify root node");

    return config;
}

From source file:org.rzo.yajsw.wrapper.FileUtils.java

/**
 * The main method.//from  w w w  . ja v  a 2s  . c  o m
 * 
 * @param args
 *            the arguments
 */
public static void main(String[] args) {
    try {
        // String
        // fileName=FilenameUtils.separatorsToSystem("C:\\init\\MOBILEguard\\yajsw/lib/jvmstat/*.jar");
        // System.out.println("FileName: "+fileName);
        CompositeConfiguration compConfig = new CompositeConfiguration();
        AbstractConfiguration configuraton = new BaseConfiguration();
        compConfig.addConfiguration(new EnvironmentConfiguration());
        configuraton.setProperty("wrapper.java.classpath.1", "${VERSANT_ROOT}/lib/jvi.*jar");
        configuraton.setProperty("wrapper.java.classpath.2", "${GROOVY_HOME}/lib/*.jar");
        compConfig.addConfiguration(configuraton);
        System.out.println("Configuration: " + ConfigurationConverter.getProperties(compConfig));
        System.out
                .println("subset: " + ConfigurationConverter.getProperties(compConfig.subset("wrapper.java")));

        // Collection files=FileUtils.getFiles("../..",
        // "C:/versant/7_0_1/lib/jvi*.jar");
        // Collection collection=
        // org.apache.commons.io.FileUtils.listFiles(new File("C:/"),
        // new WildcardFileFilter("jvi*.jar"), new
        // WildcardFileFilter("*jar"));
        // File[] files= new
        // File("C:").listFiles((FilenameFilter)FileFilterUtils.nameFileFilter("C:/versant/7_0_1/lib/jvi*.jar"));

        //         
        // FileUtils.getFiles("C:/versant/7_0_1/lib/", "jvi*.jar");
        // System.out.println("FileList="+
        // FileUtils.getFiles("C:/versant/7_0_1/lib/", "jvi*.jar"));
        // java.util.Arrays.asList(files));
    } catch (Exception ex) {
        ex.printStackTrace();
    }
}

From source file:org.soaplab.clients.BatchTestClient.java

/*************************************************************************
 *
 * Entry point...//from ww w .  ja  v a 2s.  c  o  m
 *
 *************************************************************************/
public static void main(String[] args) {
    try {
        BaseCmdLine cmd = getCmdLine(args, BatchTestClient.class);

        // service location and protocol parameters
        ServiceLocator mainLocator = InputUtils.getServiceLocator(cmd);

        // file(s) with the testing data (a list of tested
        // services and their inputs)
        String[] batchFiles = null;
        String batchFile = cmd.getParam("-batchfile");
        if (batchFile != null) {
            // take it from the command-line
            batchFiles = new String[] { batchFile };
        } else {
            // take it from the client configuration file
            batchFiles = ClientConfig.get().getStringArray(ClientConfig.PROP_BATCH_TEST_FILE);
        }
        if (batchFiles == null || batchFiles.length == 0) {
            log.error("A file with a list of service to test must be given. "
                    + "Use '-batchfile' or a property '" + ClientConfig.PROP_BATCH_TEST_FILE + "'.");
            System.exit(1);
        }

        // other arguments
        boolean tableReport = (cmd.hasOption("-table")
                || ClientConfig.isEnabled(ClientConfig.PROP_BATCH_REPORT_TABLE, false));
        boolean keepResults = (cmd.hasOption("-keep")
                || ClientConfig.isEnabled(ClientConfig.PROP_BATCH_KEEP_RESULTS, false));
        int maxThreads = -1;
        String strMaxThreads = cmd.getParam("-maxthreads");
        if (strMaxThreads == null)
            maxThreads = ClientConfig.getInt(ClientConfig.PROP_BATCH_MAX_THREADS, 25);
        else
            maxThreads = getInt(strMaxThreads);
        if (maxThreads < 0)
            maxThreads = 0;
        boolean oneByOne = (maxThreads == 1);

        // get a list of available services
        // (for validation purposes later)
        Set<String> services = new HashSet<String>();
        for (String name : new SoaplabBaseClient(mainLocator).getAvailableAnalyses()) {
            services.add(name);
        }

        // loop and do it...
        List<Properties> reports = Collections.synchronizedList(new ArrayList<Properties>());
        List<Thread> threads = Collections.synchronizedList(new ArrayList<Thread>());
        int countNotAvailable = 0;

        title("Progress");
        for (String file : batchFiles) {

            log.info("Using batch file " + file);

            // treat each batch file as a property configuration
            // file - together with a usual Soaplab Client
            // configuration file; this allows handling
            // substitutions of referenced properties, etc.
            CompositeConfiguration cfg = new CompositeConfiguration();
            cfg.addConfiguration(ClientConfig.get());
            cfg.addConfiguration(Config.get());
            try {
                cfg.addConfiguration(new PropertiesConfiguration(file));
            } catch (ConfigurationException e) {
                log.error("Loading batch file from '" + file + "' failed: " + e.getMessage());
                continue;
            }

            //
            for (Iterator it = cfg.getKeys(); it.hasNext();) {
                String propertyName = (String) it.next();
                if (!propertyName.startsWith(PREFIX_SERVICE_TO_TEST))
                    continue;
                String serviceName = StringUtils.removeStart(propertyName, PREFIX_SERVICE_TO_TEST);
                if (!services.contains(serviceName)) {
                    //          log.warn (serviceName + " is not available for testing");
                    countNotAvailable += 1;
                    continue;
                }
                String[] inputs = cfg.getStringArray(propertyName);
                for (String input : inputs) {
                    MyLocator locator = new MyLocator(serviceName, mainLocator);
                    locator.enableKeepResults(keepResults);
                    locator.setInputLine(input);
                    if (oneByOne) {
                        // sequential invocation
                        qmsg(String.format("%-50s", "Running " + serviceName + "... "));
                        Properties report = callService(locator, reports);
                        qmsgln("finished: " + report.getProperty(REPORT_JOB_STATUS));

                    } else {
                        // do it in parallel
                        startService(threads, locator, reports);
                        if (maxThreads > 0) {
                            // limit the number of threads
                            // (just wait for some to finish)
                            while (threads.size() >= maxThreads) {
                                try {
                                    Thread.sleep(1000);
                                } catch (Exception e) {
                                }
                            }
                        }
                    }
                }
            }
        }

        if (!oneByOne) {
            // wait for all the threads to finish
            while (threads.size() > 0) {
                try {
                    Thread.sleep(1000);
                } catch (Exception e) {
                }
            }
        }
        msgln("");

        // report all tests
        if (tableReport)
            createTableReport(reports);

        // report results
        int countSuccessful = 0;
        int countErrors = 0;
        for (Properties report : reports) {
            if (report.containsKey(REPORT_ERROR_MESSAGE)) {
                report.remove(REPORT_STACK_TRACE);
                countErrors += 1;
                createErrorReport(report);
            } else {
                String status = report.getProperty(REPORT_JOB_STATUS);
                if (SoaplabConstants.JOB_COMPLETED.equals(status)) {
                    countSuccessful += 1;
                } else {
                    countErrors += 1;
                    createErrorReport(report);
                }
            }
        }

        // make a summary
        title("Summary");
        msgln("Successfully:  " + countSuccessful);
        msgln("Erroneously:   " + countErrors);
        msgln("Not available: " + countNotAvailable);

        exit(0);

    } catch (Throwable e) {
        processErrorAndExit(e);
    }

}

From source file:org.soaplab.clients.ClientConfig.java

/**************************************************************************
 * The main method returning a configuration object. The returned
 * object is a singleton - but its contents (the properties it
 * carries) can be changed dynamically (the properties are
 * reloaded if their files are modified). <p>
 *
 * The configuration object contains all Java system properties
 * and properties read from the Soaplab client configuration
 * file. This file name is given by the system property {@link
 * #PROP_SOAPLAB_CLIENT_CONFIGURATION}, or using a default name
 * {@link #SOAPLAB_CLIENT_CONFIG_FILENAME}. If the filename does
 * not specify an absolute path, the file will be searched
 * automatically in the following locations:
 *
 * <ul>/*from www  .java2 s .  co  m*/
 *  <li> in the current directory,
 *  <li> in the user home,
 *  <li> directory in the classpath
 * </ul><p>
 *
 * The System properties take precedence over properties read from
 * the Soaplab client property file. <p>
 *
 * @return a configuration object
 **************************************************************************/
public static synchronized CompositeConfiguration get() {
    if (config == null) {

        // set the global configuration
        CompositeConfiguration cfg = new CompositeConfiguration();

        // first, add System properties
        cfg.addConfiguration(new SystemConfiguration());

        // second, add Soaplab client properties file(s)
        String[] configFilenames = cfg.getStringArray(PROP_SOAPLAB_CLIENT_CONFIGURATION);
        if (configFilenames == null || configFilenames.length == 0)
            configFilenames = new String[] { SOAPLAB_CLIENT_CONFIG_FILENAME };
        for (int i = 0; i < configFilenames.length; i++) {
            log.info("Using configuration file: " + configFilenames[i]);
            addPropertiesConfiguration(cfg, configFilenames[i]);
        }

        // keep it for other calls
        config = cfg;
    }
    return config;
}

From source file:org.soaplab.clients.ClientConfig.java

/**************************************************************************
 * Add given property files as a new configuration to 'cfg'
 * composite configuration. Return true on success.
 **************************************************************************/
private static boolean addPropertiesConfiguration(CompositeConfiguration cfg, String configFilename) {
    try {//from  w  w w  .  j ava2s  .c  om
        PropertiesConfiguration propsConfig = new PropertiesConfiguration(configFilename);
        propsConfig.setReloadingStrategy(new FileChangedReloadingStrategy());
        cfg.addConfiguration(propsConfig);
        return true;
    } catch (ConfigurationException e) {
        log.error("Loading properties configuration from '" + configFilename + "' failed: " + e.getMessage());
        return false;
    }
}

From source file:org.soaplab.services.Config.java

/**************************************************************************
 * The main method returning a configuration object. The returned
 * object is a singleton - but its contents (the properties it
 * carries) can be changed dynamically (the properties are
 * reloaded if their files are modified). <p>
 *
 * The configuration object contains all Java system properties
 * and properties read from the Soaplab configuration file. This
 * file name is given by the system property {@link
 * #PROP_SOAPLAB_CONFIGURATION}, or using a default name {@link
 * #SOAPLAB_CONFIG_FILENAME}. If the filename does not specify an
 * absolute path, the file will be searched automatically in the
 * following locations://from w ww  . j ava 2 s  .  c  o  m
 *
 * <ul>
 *  <li> in the current directory,
 *  <li> in the user home,
 *  <li> directory in the classpath
 * </ul><p>
 *
 * The System properties take precedence over properties read from
 * the Soaplab property file. <p>
 *
 * The configuration object can be anytime extended by properties
 * from other sources by using either methods defined in the
 * <tt>CompositeConfiguration</tt>'s API, or using a convenient
 * methods {@link #addConfigPropertyFile} and {@link
 * #addConfigXMLFile} defined here. Properties from these
 * additional files have higher priority than properties added
 * earlier - except System properties, they are always the most
 * prioritized. <p>
 *
 * @return a configuration object
 **************************************************************************/
public static synchronized CompositeConfiguration get() {
    if (config == null) {

        // set the Soaplab global configuration
        CompositeConfiguration cfg = new CompositeConfiguration();

        // first, add System properties
        cfg.addConfiguration(new SystemConfiguration());

        // second, add Soaplab properties file(s)
        String[] configFilenames = cfg.getStringArray(PROP_SOAPLAB_CONFIGURATION);
        if (configFilenames == null || configFilenames.length == 0)
            configFilenames = new String[] { SOAPLAB_CONFIG_FILENAME };
        for (int i = 0; i < configFilenames.length; i++) {
            log.info("Using configuration file: " + configFilenames[i]);
            addPropertiesConfiguration(cfg, configFilenames[i]);
        }

        // keep it for other calls
        config = cfg;
    }
    return config;
}

From source file:org.soaplab.services.Config.java

/**************************************************************************
 * Add given property files as a new configuration to 'cfg'
 * composite configuration. Return true on success.
 **************************************************************************/
private static boolean addPropertiesConfiguration(CompositeConfiguration cfg, String configFilename) {
    try {/*  ww w.  j  a v  a2s  .c  om*/
        PropertiesConfiguration propsConfig = new PropertiesConfiguration(configFilename);
        if (isExistingConfig(propsConfig))
            return true;
        propsConfig.setReloadingStrategy(new FileChangedReloadingStrategy());
        cfg.addConfiguration(propsConfig);
        return true;
    } catch (ConfigurationException e) {
        log.error("Loading properties configuration from '" + configFilename + "' failed: " + e.getMessage());
        return false;
    }
}

From source file:org.soaplab.services.Config.java

/**************************************************************************
 * Add given XML files as a new configuration to 'cfg' composite
 * configuration. Return true on success.
 **************************************************************************/
private static boolean addXMLConfiguration(CompositeConfiguration cfg, String configFilename) {
    try {//  www . j a v a  2s.c o  m
        XMLConfiguration xmlConfig = new XMLConfiguration(configFilename);
        if (isExistingConfig(xmlConfig))
            return true;
        xmlConfig.setReloadingStrategy(new FileChangedReloadingStrategy());
        cfg.addConfiguration(xmlConfig);
        return true;
    } catch (ConfigurationException e) {
        log.error("Loading XML configuration from '" + configFilename + "' failed: " + e.getMessage());
        return false;
    }
}