List of usage examples for org.apache.commons.configuration HierarchicalConfiguration getInt
public int getInt(String key)
From source file:Cresendo.java
public static void main(String[] args) { String cfgFileReceiver = null; // Path to config file for eif receiver agent String cfgFileEngine = null; // Path to config file for xml event engine Options opts = null; // Command line options HelpFormatter hf = null; // Command line help formatter // Setup the message record which will contain text written to the log file ////www . j a v a2 s . c o m // The message logger object is created when the "-l" is processed // as this object need to be associated with a log file // LogRecord msg = new LogRecord(LogRecord.TYPE_INFO, "Cresendo", "main", "", "", "", "", ""); // Get the directory separator (defaults to "/") // dirSep = System.getProperty("file.separator", "/"); // Initialise the structure containing the event handler objects // Vector<IEventHandler> eventHandler = new Vector<IEventHandler>(10, 10); // Process the command line arguments // try { opts = new Options(); hf = new HelpFormatter(); opts.addOption("h", "help", false, "Command line arguments help"); opts.addOption("i", "instance name", true, "Name of cresendo instance"); opts.addOption("l", "log dir", true, "Path to log file directory"); opts.addOption("c", "config dir", true, "Path to configuarion file directory"); opts.getOption("l").setRequired(true); opts.getOption("c").setRequired(true); BasicParser parser = new BasicParser(); CommandLine cl = parser.parse(opts, args); // Print out some help and exit // if (cl.hasOption('h')) { hf.printHelp("Options", opts); System.exit(0); } // Set the instance name // if (cl.hasOption('i')) { instanceName = cl.getOptionValue('i'); // Set to something other than "default" } // Setup the message and trace logging objects for the EventEngine // if (cl.hasOption('l')) { // Setup the the paths to the message, trace and status log files // logDir = cl.getOptionValue("l"); logPath = logDir + dirSep + instanceName + "-engine.log"; tracePath = logDir + dirSep + instanceName + "-engine.trace"; statusPath = logDir + dirSep + instanceName + "-engine.status"; } else { // NOTE: This should be picked up by the MissingOptionException catch below // but I couldn't get this to work so I added the following code: // hf.printHelp("Option 'l' is a required option", opts); System.exit(1); } // Read the receiver and engine config files in the config directory // if (cl.hasOption('c')) { // Setup and check path to eif config file for TECAgent receiver object // configDir = cl.getOptionValue("c"); cfgFileReceiver = configDir + dirSep + instanceName + ".conf"; checkConfigFile(cfgFileReceiver); // Setup and check path to xml config file for the EventEngine // cfgFileEngine = cl.getOptionValue("c") + dirSep + instanceName + ".xml"; checkConfigFile(cfgFileEngine); } else { // NOTE: This should be picked up by the MissingOptionException catch below // but I couldn't get this to work so I added the following code: // hf.printHelp("Option 'c' is a required option", opts); System.exit(1); } } catch (UnrecognizedOptionException e) { hf.printHelp(e.toString(), opts); System.exit(1); } catch (MissingOptionException e) { hf.printHelp(e.toString(), opts); System.exit(1); } catch (MissingArgumentException e) { hf.printHelp(e.toString(), opts); System.exit(1); } catch (ParseException e) { e.printStackTrace(); System.exit(1); } catch (Exception e) { System.err.println(e.toString()); System.exit(1); } // Main program // try { // ===================================================================== // Setup the message, trace and status logger objects // try { msgHandler = new FileHandler("cresendo", "message handler", logPath); msgHandler.openDevice(); msgLogger = new MessageLogger("cresendo", "message log"); msgLogger.addHandler(msgHandler); trcHandler = new FileHandler("cresendo", "trace handler", tracePath); trcHandler.openDevice(); trcLogger = new TraceLogger("cresendo", "trace log"); trcLogger.addHandler(trcHandler); statLogger = new StatusLogger(statusPath); } catch (Exception e) { System.err.println(e.toString()); System.exit(1); } // Add the shutdown hook // Runtime.getRuntime().addShutdownHook(new ShutdownThread(msgLogger, instanceName)); // --------------------------------------------------------------------- // ===================================================================== // Load and parse the xml event engine configuration file // // msg.setText("Loading xml engine from: '" + cfgFileEngine + "'"); try { XMLConfiguration xmlProcessor = new XMLConfiguration(); xmlProcessor.setFileName(cfgFileEngine); // Validate the xml against a document type declaration // xmlProcessor.setValidating(true); // Don't interpolate the tag contents by splitting them on a delimiter // (ie by default a comma) // xmlProcessor.setDelimiterParsingDisabled(true); // This will throw a ConfigurationException if the xml document does not // conform to its dtd. By doing this we hopefully catch any errors left // behind after the xml configuration file has been edited. // xmlProcessor.load(); // Setup the trace flag // ConfigurationNode engine = xmlProcessor.getRootNode(); List rootAttribute = engine.getAttributes(); for (Iterator it = rootAttribute.iterator(); it.hasNext();) { ConfigurationNode attr = (ConfigurationNode) it.next(); String attrName = attr.getName(); String attrValue = (String) attr.getValue(); if (attrValue == null || attrValue == "") { System.err.println("\n Error: The value of the attribute '" + attrName + "'" + "\n in the xml file '" + cfgFileEngine + "'" + "\n is not set"); System.exit(1); } if (attrName.matches("trace")) { if (attrValue.matches("true") || attrValue.matches("on")) { trcLogger.setLogging(true); } } if (attrName.matches("status")) { if (attrValue.matches("true") || attrValue.matches("on")) { statLogger.setLogging(true); } else { statLogger.setLogging(false); } } if (attrName.matches("interval")) { if (!attrValue.matches("[0-9]+")) { System.err.println("\n Error: The value of the interval attribute in: '" + cfgFileEngine + "'" + "\n should only contain digits from 0 to 9." + "\n It currently contains: '" + attrValue + "'"); System.exit(1); } statLogger.setInterval(Integer.parseInt(attrValue)); } } // Now build and instantiate the list of classes that will process events // received by the TECAgent receiver in a chain like manner. // List classes = xmlProcessor.configurationsAt("class"); for (Iterator it = classes.iterator(); it.hasNext();) { HierarchicalConfiguration sub = (HierarchicalConfiguration) it.next(); // sub contains now all data contained in a single <class></class> tag set // String className = sub.getString("name"); // Log message // msg.setText(msg.getText() + "\n Instantiated event handler class: '" + className + "'"); // The angle brackets describing the class of object held by the // Vector are implemented by Java 1.5 and have 2 effects. // // 1. The list accepts only elements of that class and nothing else // (Of course thanks to Auto-Wrap you can also add double-values) // // 2. the get(), firstElement() ... Methods don't return a Object, but // they deliver an element of the class. // Vector<Class> optTypes = new Vector<Class>(10, 10); Vector<Object> optValues = new Vector<Object>(10, 10); for (int i = 0; i <= sub.getMaxIndex("option"); i++) { Object optValue = null; String optVarName = sub.getString("option(" + i + ")[@varname]"); String optJavaType = sub.getString("option(" + i + ")[@javatype]"); // Use the specified java type in order to make the method call // to the heirarchical sub object [painful :-((] // if (optJavaType.matches("byte")) { optTypes.addElement(byte.class); optValue = sub.getByte("option(" + i + ")"); if (optValue == null) // Catch nulls { optValue = 0; // Set to something nullish } } else if (optJavaType.matches("short")) { optTypes.addElement(byte.class); optValue = sub.getShort("option(" + i + ")"); if (optValue == null) // Catch nulls { optValue = 0; // Set to something nullish } } else if (optJavaType.matches("int")) { optTypes.addElement(int.class); optValue = sub.getInt("option(" + i + ")"); if (optValue == null) // Catch nulls { optValue = 0; // Set to something nullish } } else if (optJavaType.matches("long")) { optTypes.addElement(long.class); optValue = sub.getLong("option(" + i + ")"); if (optValue == null) // Catch nulls { optValue = 0; // Set to something nullish } } else if (optJavaType.matches("float")) { optTypes.addElement(float.class); optValue = sub.getFloat("option(" + i + ")"); if (optValue == null) // Catch nulls { optValue = 0.0; // Set to something nullish } } else if (optJavaType.matches("double")) { optTypes.addElement(double.class); optValue = sub.getDouble("option(" + i + ")"); if (optValue == null) // Catch nulls { optValue = 0.0; // Set to something nullish } } else if (optJavaType.matches("boolean")) { optTypes.addElement(boolean.class); optValue = sub.getBoolean("option(" + i + ")"); if (optValue == null) // Catch nulls { optValue = false; // Set to something nullish } } else if (optJavaType.matches("String")) { optTypes.addElement(String.class); optValue = sub.getString("option(" + i + ")"); if (optValue == null) // Catch nulls { optValue = ""; // Set it to something nullish } } else { System.err.println( "Error: Unsupported java type found in xml config: '" + optJavaType + "'"); System.exit(1); } // Add option value element // // System.out.println("Option value is: '" + optValue.toString() + "'\n"); // optValues.addElement(optValue); // Append to message text // String msgTemp = msg.getText(); msgTemp += "\n option name: '" + optVarName + "'"; msgTemp += "\n option type: '" + optJavaType + "'"; msgTemp += "\n option value: '" + optValues.lastElement().toString() + "'"; msg.setText(msgTemp); } try { // Instantiate the class with the java reflection api // Class klass = Class.forName(className); // Setup an array of paramater types in order to retrieve the matching constructor // Class[] types = optTypes.toArray(new Class[optTypes.size()]); // Get the constructor for the class which matches the parameter types // Constructor konstruct = klass.getConstructor(types); // Create an instance of the event handler // IEventHandler eventProcessor = (IEventHandler) konstruct.newInstance(optValues.toArray()); // Add the instance to the list of event handlers // eventHandler.addElement(eventProcessor); } catch (InvocationTargetException e) { System.err.println("Error: " + e.toString()); System.exit(1); } catch (ClassNotFoundException e) { System.err.println("Error: class name not found: '" + className + "' \n" + e.toString()); System.exit(1); } catch (Exception e) { System.err.println( "Error: failed to instantiate class: '" + className + "' \n" + e.toString()); System.exit(1); } } } catch (ConfigurationException cex) // Something went wrong loading the xml file { System.err.println("\n" + "Error loading XML file: " + cfgFileEngine + "\n" + cex.toString()); System.exit(1); } catch (Exception e) { System.err.println(e.toString()); System.exit(1); } // --------------------------------------------------------------------- // ===================================================================== // Setup the TECAgent receiver // Reader cfgIn = null; try { cfgIn = new FileReader(cfgFileReceiver); } catch (Exception e) { System.err.println(e.toString()); System.exit(1); } // Start the TECAgent receiver and register the event engine handler // TECAgent receiver = new TECAgent(cfgIn, TECAgent.RECEIVER_MODE, false); EventEngine ee = new EventEngine(eventHandler, msgLogger, trcLogger); receiver.registerListener(ee); // Construct message and send it to the message log // String text = "\n Cresendo instance '" + instanceName + "' listening for events on port '" + receiver.getConfigVal("ServerPort") + "'"; msg.setText(msg.getText() + text); msgLogger.log(msg); // Send message to log // --------------------------------------------------------------------- // ===================================================================== // Initiate status logging // if (statLogger.isLogging()) { int seconds = statLogger.getInterval(); while (true) { try { statLogger.log(); } catch (Exception ex) { System.err.println("\n An error occurred while writing to '" + statusPath + "'" + "\n '" + ex.toString() + "'"); } Thread.sleep(seconds * 1000); // Convert sleep time to milliseconds } } // --------------------------------------------------------------------- } catch (Exception e) { System.err.println(e.toString()); System.exit(1); } }
From source file:edu.cwru.sepia.Main.java
private static Agent[] getAgents(HierarchicalConfiguration config) { String[] participatingAgents = config.getStringArray("agents.ParticipatingAgents"); Agent[] agents = new Agent[participatingAgents.length]; for (int i = 0; i < participatingAgents.length; i++) { String key = "agents." + participatingAgents[i]; HierarchicalConfiguration agentConfig = config.configurationAt(key); String className = agentConfig.getString("ClassName"); int playerId = agentConfig.getInt("PlayerId"); String[] arguments = agentConfig.getStringArray("ConstructorArguments"); try {/*ww w. j a v a 2s . com*/ Class<?> classDef = Class.forName(className); Agent agent = null; try { if (arguments != null && arguments.length != 0) agent = (Agent) classDef.getConstructor(int.class, String[].class).newInstance(playerId, arguments); } catch (Exception e) { } if (agent == null) { @SuppressWarnings("unchecked") Constructor<? extends Agent> constructor = (Constructor<? extends Agent>) classDef .getConstructor(int.class); agent = (Agent) constructor.newInstance(playerId); } agents[i] = agent; } catch (Exception ex) { String errorMessage = String.format("Unable to instantiate %s with playerId %d%s.", className, playerId, (arguments == null ? "" : " and additional arguments " + Arrays.toString(arguments))); logger.log(Level.SEVERE, errorMessage, ex); throw new RuntimeException(ex);//make sure the program fails and the error gets propagated } agents[i].setConfiguration(agentConfig); } return agents; }
From source file:com.tulskiy.musique.system.configuration.PlaylistConfiguration.java
public static List<Playlist> getPlaylists() { ArrayList<Playlist> playlists = new ArrayList<Playlist>(); Configuration config = Application.getInstance().getConfiguration(); Iterator pConfs = config.configurationsAt(getPlaylistKey()).iterator(); while (pConfs.hasNext()) { Playlist playlist = new Playlist(); playlist.setColumns(new LinkedList<PlaylistColumn>()); HierarchicalConfiguration pConf = (HierarchicalConfiguration) pConfs.next(); playlist.setName(pConf.getString("name", "Default")); playlist.setGroupBy(pConf.getString("groupBy")); playlist.setLibraryView(pConf.getBoolean("isLibraryView", false)); Iterator cConfs = pConf.configurationsAt("columns.column").iterator(); while (cConfs.hasNext()) { PlaylistColumn column = new PlaylistColumn(); HierarchicalConfiguration cConf = (HierarchicalConfiguration) cConfs.next(); column.setName(cConf.getString("name")); column.setExpression(cConf.getString("expression")); column.setSize(cConf.getInt("size")); column.setAllign(cConf.getInt("alignment")); playlist.getColumns().add(column); }/* ww w .j ava 2s. c o m*/ playlists.add(playlist); } return playlists; }
From source file:com.sinfonier.util.XMLProperties.java
/** * Get Integer from xml configuration file. * /*from ww w . ja v a 2 s .c o m*/ * @param xml * @param property */ public static Integer getInt(HierarchicalConfiguration xml, String property) { if (xml.getString(property) == null || xml.getString(property).equals("")) throw new XMLConfigException("Error in XML Configuration. Property " + property + " null or empty"); return xml.getInt(property); }
From source file:au.id.hazelwood.xmltvguidebuilder.config.ConfigFactory.java
public Config create(File file) throws InvalidConfigException { try {/*w w w . j a v a2 s. c o m*/ StopWatch stopWatch = new StopWatch(); stopWatch.start(); LOGGER.debug("Validating config file {}", file); schema.newValidator().validate(new StreamSource(file)); LOGGER.debug("Loading config file {}", file); HierarchicalConfiguration configuration = new XMLConfiguration(file); int offset = configuration.getInt("listing.offset"); int days = configuration.getInt("listing.days"); int synopsis = configuration.getInt("listing.synopsis"); String regionId = configuration.getString("listing.regionId"); Map<Integer, ChannelConfig> channelConfigById = loadChannelConfigs(configuration); Config config = new Config(offset, days, synopsis, regionId, new ArrayList<>(channelConfigById.values())); LOGGER.debug("Loaded {} from {} in {}", config, file, formatDurationWords(stopWatch.getTime())); return config; } catch (Throwable e) { throw new InvalidConfigException(e.getMessage(), e); } }
From source file:com.boozallen.cognition.ingest.storm.topology.ConfigurableIngestTopology.java
/** * Gets a topology builder and set of storm bolt configurations. Initializes the bolts and sets them with the * topology builder./* w ww. ja v a 2 s.c o m*/ * * @param builder storm topology builder * @param boltsConf component configurations * @param spout type of storm component being added (spout/bolt) * @throws ConfigurationException */ void configureBolts(TopologyBuilder builder, SubnodeConfiguration boltsConf, String spout) throws ConfigurationException { String prevComponent = spout; // bolts subscribe to other bolts by number HashMap<Integer, String> boltNumberToId = new HashMap<>(); List<HierarchicalConfiguration> bolts = boltsConf.configurationsAt(BOLT); for (HierarchicalConfiguration bolt : bolts) { String boltType = bolt.getString(TYPE); Configuration boltConf = bolt.configurationAt(CONF); int boltNum = bolt.getInt(NUMBER_ATTRIBUTE); String boltId = String.format("%02d_%s", boltNum, boltType); boltNumberToId.put(boltNum, boltId); String subscribingToComponent = getSubscribingToComponent(prevComponent, boltNumberToId, boltConf); logger.info("{} subscribing to {}", boltId, subscribingToComponent); IComponent baseComponent = buildComponent(boltType, boltConf); StormParallelismConfig stormParallelismConfig = getStormParallelismConfig(boltConf); BoltDeclarer declarer = buildBoltDeclarer(builder, stormParallelismConfig, boltId, baseComponent); configureTickFrequency(boltConf, declarer); configureStreamGrouping(subscribingToComponent, boltConf, declarer); prevComponent = boltId; boltNum++; } }
From source file:net.datenwerke.sandbox.util.SandboxParser.java
protected StackEntry getStackEntry(HierarchicalConfiguration stack) { int pos = stack.getInt("[@pos]"); String stype = stack.getString("[@type]"); Boolean prefix = stack.getBoolean("[@prefix]", false); return new StackEntry(pos, stype, Boolean.TRUE.equals(prefix)); }
From source file:com.sonicle.webtop.core.app.DataSourcesConfig.java
protected HikariConfig parseDataSource(HierarchicalConfiguration dsEl) throws ParseException { HikariConfig config = createHikariConfig(); if (dsEl.containsKey("[@dataSourceClassName]")) { // Jdbc 4 configs config.setDataSourceClassName(dsEl.getString("[@dataSourceClassName]")); config.addDataSourceProperty("serverName", dsEl.getString("[@serverName]")); if (dsEl.containsKey("[@port]")) config.addDataSourceProperty("port", dsEl.getInt("[@port]")); config.addDataSourceProperty("databaseName", dsEl.getString("[@databaseName]")); } else if (dsEl.containsKey("[@driverClassName]")) { // Jdbc 3 configs config.setDriverClassName(dsEl.getString("[@driverClassName]")); config.setJdbcUrl(dsEl.getString("[@jdbcUrl]")); }/*ww w. j a va2s .c om*/ if (dsEl.containsKey("[@username]")) config.setUsername(dsEl.getString("[@username]")); if (dsEl.containsKey("[@password]")) config.setPassword(dsEl.getString("[@password]")); if (!dsEl.isEmpty()) { List<HierarchicalConfiguration> elProps = dsEl.configurationsAt("property"); Properties props = new Properties(); for (HierarchicalConfiguration elProp : elProps) { if (elProp.containsKey("[@name]") && elProp.containsKey("[@value]")) { final String name = elProp.getString("[@name]"); final String value = elProp.getString("[@value]"); if (!StringUtils.isBlank(name)) { props.setProperty(name, value); logger.trace("property: {} -> {}", name, value); } } } PropertyElf.setTargetFromProperties(config, props); } // Common configs... /* if(dsEl.containsKey("[@autoCommit]")) config.setAutoCommit(dsEl.getBoolean("[@autoCommit]")); if(dsEl.containsKey("[@connectionTimeout]")) config.setConnectionTimeout(dsEl.getLong("[@connectionTimeout]")); if(dsEl.containsKey("[@idleTimeout]")) config.setIdleTimeout(dsEl.getLong("[@idleTimeout]")); if(dsEl.containsKey("[@maxLifetime]")) config.setMaxLifetime(dsEl.getLong("[@maxLifetime]")); if(dsEl.containsKey("[@minimumIdle]")) config.setMinimumIdle(dsEl.getInt("[@minimumIdle]")); if(dsEl.containsKey("[@maximumPoolSize]")) config.setMaximumPoolSize(dsEl.getInt("[@maximumPoolSize]")); */ return config; }
From source file:com.epam.cme.mdp3.core.cfg.Configuration.java
/** * Loads and parse CME MDP Configuration. * * @param uri URI to CME MDP Configuration (config.xml, usually available on CME FTP) * @throws ConfigurationException if failed to parse configuration file * @throws MalformedURLException if URI to Configuration is malformed */// ww w . ja v a 2 s. co m private void load(final URI uri) throws ConfigurationException, MalformedURLException { // todo: if to implement the same via standard JAXB then dep to apache commons configuration will be not required final XMLConfiguration configuration = new XMLConfiguration(); configuration.setDelimiterParsingDisabled(true); configuration.load(uri.toURL()); for (final HierarchicalConfiguration channelCfg : configuration.configurationsAt("channel")) { final ChannelCfg channel = new ChannelCfg(channelCfg.getString("[@id]"), channelCfg.getString("[@label]")); for (final HierarchicalConfiguration connCfg : channelCfg.configurationsAt("connections.connection")) { final String id = connCfg.getString("[@id]"); final FeedType type = FeedType.valueOf(connCfg.getString("type[@feed-type]")); final TransportProtocol protocol = TransportProtocol .valueOf(connCfg.getString("protocol").substring(0, 3)); final Feed feed = Feed.valueOf(connCfg.getString("feed")); final String ip = connCfg.getString("ip"); final int port = connCfg.getInt("port"); final List<String> hostIPs = Arrays.asList(connCfg.getStringArray("host-ip")); final ConnectionCfg connection = new ConnectionCfg(feed, id, type, protocol, ip, hostIPs, port); channel.addConnection(connection); connCfgs.put(connection.getId(), connection); } channelCfgs.put(channel.getId(), channel); } }
From source file:ch.admin.suis.msghandler.config.ClientConfigurationFactory.java
private void setupNativeOutbox(Iterator j, String baseDir, String sedexId, SenderConfiguration defaultSenderConfiguration) throws ConfigurationException { final HierarchicalConfiguration outboxSub = (HierarchicalConfiguration) j.next(); final MessageType messageType = new MessageType(outboxSub.getInt(".[@msgType]")); String resolverFile = outboxSub.getString(".recipientIdResolver[@filePath]"); File scriptFile = FileUtils.createPath(baseDir, resolverFile); FileUtils.isFile(scriptFile, ".recipientIdResolver[@filePath]"); final ScriptedNamingService resolver = new ScriptedNamingService(scriptFile, outboxSub.getString(".recipientIdResolver[@method]")); String outboxDir = outboxSub.getString(DIR_PATH); final Outbox outbox = new Outbox(FileUtils.createPath(baseDir, outboxDir), sedexId, messageType, resolver); LOG.info("participant ID resolver configured, " + resolver + " for outbox " + outbox.getDirectory()); final String outboxCron = outboxSub.getString("[@cron]"); if (null != outboxCron) { // the outbox defines its own cron, create a separate sender configuration for this outbox // create the sender configuration - with the cron from the outbox final SenderConfiguration senderConfiguration = new SenderConfiguration(outboxCron); senderConfiguration.addOutbox(outbox); // and add this configuration to the client config clientConfiguration.addSenderConfiguration(senderConfiguration); LOG.info("sender added, " + senderConfiguration); } else {// ww w .j av a2s .com // add this outbox to the default configuration defaultSenderConfiguration.addOutbox(outbox); } // the signing outboxes final List cfgSigningOutboxes = outboxSub.configurationsAt(".signingOutbox"); setupSiginingOutbox(cfgSigningOutboxes, baseDir, outbox); }