List of usage examples for org.apache.commons.configuration CompositeConfiguration addConfiguration
public void addConfiguration(Configuration config)
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; } }