Example usage for org.apache.commons.configuration ConfigurationException toString

List of usage examples for org.apache.commons.configuration ConfigurationException toString

Introduction

In this page you can find the example usage for org.apache.commons.configuration ConfigurationException toString.

Prototype

public String toString() 

Source Link

Document

Returns a short description of this throwable.

Usage

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
    ///*from  w  w w.j  a  va 2s  . 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:com.dfki.av.sudplan.Configuration.java

/**
 * Save the configuration file {@code config/sudplan3D.xml} from the
 * resources to the the file {@code file}. Adding the additional properties
 * {@code sudplan3D.user.dir} and {@code sudplan3D.working.dir}.
 *
 * @param file the configuration {@link File}
 * @param userHomeDir the user home directory
 * @param workingDir the working directory
 *//*w w w.j  a  v a 2s.  c  o  m*/
private static void installConfigFile(File file, String userHomeDir, String workingDir) {
    log.debug("Installing configuration to {}...", file.getAbsoluteFile());
    try {
        ClassLoader loader = Configuration.class.getClassLoader();
        URL url = loader.getResource("config/sudplan3D.xml");
        XMLConfiguration xmlInitialConfig = new XMLConfiguration(url);
        xmlInitialConfig.addProperty("sudplan3D.user.dir", userHomeDir);
        xmlInitialConfig.addProperty("sudplan3D.working.dir", workingDir);
        xmlInitialConfig.save(file);
    } catch (ConfigurationException ex) {
        log.error(ex.toString());
    }
}

From source file:com.dfki.av.sudplan.Configuration.java

/**
 * Returns whether the configuration file {@code file} is supported by the
 * current implementation.//from   www .  j  a v a2s. c  om
 *
 * @param file the configuration {@link File} to check
 * @return {@code true} if a {@code version} tag exists and its value is
 * equal to {@link #VERSION}. Otherwise {@code false}.
 */
private static boolean isConfigFileSupported(File file) {
    try {
        XMLConfiguration xmlConfig = new XMLConfiguration(file);
        if (!xmlConfig.containsKey("version")) {
            log.debug("No version tag.");
            return false;
        }

        String version = xmlConfig.getString("version");
        if (version.equalsIgnoreCase(VERSION)) {
            return true;
        } else {
            log.debug("Version {} not supported.", version);
            return false;
        }
    } catch (ConfigurationException ex) {
        log.error(ex.toString());
    }
    return false;
}

From source file:com.dfki.av.sudplan.Configuration.java

/**
 * Initialize the {@link XMLConfiguration} for the application.
 *
 * @return the {@link #XML_CONFIG} to return.
 *//*from   w w w  .  j a  v a 2s .c  o  m*/
private static XMLConfiguration initConfig() {
    log.debug("Init sudplan3D user home...");
    String userHomeDir = VisSettings.USER_HOME_DIR;

    log.info("Init sudplan3D configuration...");
    // Check whether the sudplan3D config file already exists.
    final File userConfigFile = new File(userHomeDir + "/config/sudplan3D.xml");
    if (!userConfigFile.exists()) {
        log.debug("No configuration file existing.");
        installConfigFile(userConfigFile, userHomeDir, userHomeDir);
    } else {
        log.debug("Configuration file existing. Checking version ...");
        if (!isConfigFileSupported(userConfigFile)) {
            log.debug("Configuration file not supported.");
            log.debug("Delete old configuration file.");
            boolean deleted = userConfigFile.delete();
            if (deleted) {
                installConfigFile(userConfigFile, userHomeDir, userHomeDir);
            } else {
                log.error("Could not delete file {}", userConfigFile.getAbsolutePath());
                log.warn("Using old configuration file.");
            }
        } else {
            log.debug("Configuration file supported.");
        }
    }

    XMLConfiguration xmlConfig = null;
    try {
        xmlConfig = new XMLConfiguration(userConfigFile);
        xmlConfig.setAutoSave(true);
        for (Iterator<String> it = xmlConfig.getKeys(); it.hasNext();) {
            String key = it.next();
            log.debug("{} : {}", key, xmlConfig.getString(key));
        }
    } catch (ConfigurationException ex) {
        log.error(ex.toString());
    }
    return xmlConfig;
}

From source file:com.github.aynu.yukar.framework.util.PropertiesHelper.java

/**
 * ????//  w w  w  .j ava2  s . co  m
 * @param baseName ??
 * @return ??
 */
private PropertiesConfiguration getPropertiesConfiguration(final String baseName) {
    final String languageTag = String.format("%s-%s", SystemUtils.USER_LANGUAGE, SystemUtils.USER_COUNTRY);
    final Control control = Control.getControl(Control.FORMAT_DEFAULT);
    final Collection<Locale> locales = control.getCandidateLocales("messages",
            Locale.forLanguageTag(languageTag));
    final StringBuilder builder = new StringBuilder();
    for (final Locale locale : locales) {
        try {
            final String bundleName = control.toBundleName(baseName, locale);
            final String resourceName = control.toResourceName(bundleName, "properties");
            final URL url = getClass().getResource("/" + resourceName);
            // final URL url = ClassLoader.getSystemResource(resourceName);
            if (url != null) {
                if (builder.length() > 0) {
                    LOG.debug("Resource could not be found ({}).", builder.toString());
                }
                LOG.debug("Resource could be found ({}).", resourceName);
                return new PropertiesConfiguration(url);
            }
            builder.append(" " + resourceName);
        } catch (final ConfigurationException e) {
            LOG.warn(e.toString(), e);
            throw new StandardRuntimeException(e);
        }
    }
    throw new StandardRuntimeException(String.format("PROPERTY is NOT_FOUND. [baseName=%s]", baseName));
}

From source file:edu.utexas.cs.tactex.core.BrokerPropertiesService.java

public void setUserConfig(File userConfig) {
    // then load the user-specified config
    try {/* w ww .j  a va2  s  .  c o  m*/
        PropertiesConfiguration pconfig = new PropertiesConfiguration();
        pconfig.load(userConfig);
        config.addConfiguration(pconfig);
        log.debug("setUserConfig " + userConfig.getName());
    } catch (ConfigurationException e) {
        log.error("Config error loading " + userConfig + ": " + e.toString());
    }
    lazyInit();
}

From source file:edu.utexas.cs.tactex.core.BrokerPropertiesService.java

/**
 * Loads the properties from classpath, default config file,
 * and user-specified config file, just in case it's not already been
 * loaded. This is done when properties are first requested, to ensure
 * that the logger has been initialized. Because the CompositeConfiguration
 * treats its config sources in FIFO order, this should be called <i>after</i>
 * any user-specified config is loaded./*from w w  w .  j  a va  2  s  .c om*/
 */
void lazyInit() {
    // only do this once
    if (initialized)
        return;
    initialized = true;

    // find and load the default properties file
    log.debug("lazyInit");
    try {
        File defaultProps = new File("broker.properties");
        log.info("adding " + defaultProps.getName());
        config.addConfiguration(new PropertiesConfiguration(defaultProps));
    } catch (Exception e1) {
        log.warn("broker.properties not found: " + e1.toString());
    }

    // set up the classpath props
    try {
        Resource[] xmlResources = context.getResources("classpath*:config/properties.xml");
        for (Resource xml : xmlResources) {
            if (validXmlResource(xml)) {
                log.info("loading config from " + xml.getURI());
                XMLConfiguration xconfig = new XMLConfiguration();
                xconfig.load(xml.getInputStream());
                config.addConfiguration(xconfig);
            }
        }
        Resource[] propResources = context.getResources("classpath*:config/*.properties");
        for (Resource prop : propResources) {
            if (validPropResource(prop)) {
                if (null == prop) {
                    log.error("Null resource");
                }
                log.info("loading config from " + prop.getURI());
                PropertiesConfiguration pconfig = new PropertiesConfiguration();
                pconfig.load(prop.getInputStream());
                config.addConfiguration(pconfig);
            }
        }
    } catch (ConfigurationException e) {
        log.error("Problem loading configuration: " + e.toString());
    } catch (Exception e) {
        log.error("Error loading configuration: " + e.toString());
    }

    // set up the configurator
    configurator.setConfiguration(config);
}

From source file:muvis.Environment.java

private Environment() {

    //Loading the main configuration
    ConfigurationFactory factory = new ConfigurationFactory("config.xml");
    try {//from   w  ww  . ja  v  a 2s . c o m
        configuration = factory.getConfiguration();
    } catch (ConfigurationException ex) {
        System.out.println("Couldn't not load the configuration file! Possible reason: " + ex.toString());
    }

    initializeDataFolders();

    //initialize all the elements in the workspace
    audioPlayer = new MuVisAudioPlayer();
    snippetManager = new AudioSnippetPlayerManager(audioPlayer);
    userPlaylist = new BasePlaylist();
    configFile = new Properties();
    viewManager = new ViewManager();
    desk = new DockingDesktop();
    ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
    scheduler.scheduleAtFixedRate(new MemoryCollector(), 300, 300, TimeUnit.SECONDS);

    nbtreesManager = new NBTreeManager();
    try {
        String dataFolder = configuration.getString("muvis.data_folder");
        String nbtreeMainFolder = configuration.getString("muvis.nbtree_folder");
        String nbtreeFullfolder = dataFolder + Util.getOSEscapeSequence() + nbtreeMainFolder
                + Util.getOSEscapeSequence();

        nbtreesManager.addNBTree(Elements.TRACKS_NBTREE, new NBTree(Elements.TRACKS_NBTREE, nbtreeFullfolder));
        nbtreesManager.addNBTree(Elements.ALBUMS_NBTREE, new NBTree(Elements.ALBUMS_NBTREE, nbtreeFullfolder));
        nbtreesManager.addNBTree(Elements.ARTISTS_NBTREE,
                new NBTree(Elements.ARTISTS_NBTREE, nbtreeFullfolder));
    } catch (NBTreeException ex) {
        ex.printStackTrace();
        System.out.println("An error occured when trying to initialize the nbtreemanager!");
    }

    initConfigFile();
}

From source file:com.grendelscan.ui.MainWindow.java

public void saveSettings() {
    FileDialog fd = new FileDialog(getShell(), SWT.SAVE);
    fd.setFilterPath("." + File.separator + GrendelScan.defaultConfigDirectory + File.separator
            + Scan.getScanSettings().getScanConfigDir());
    fd.setFilterExtensions(new String[] { "*.scan" });
    fd.setText("Save settings file name");
    String filename = fd.open();//from w  ww .j  ava2s.c o  m
    if (filename != null) {
        try {
            Scan.getScanSettings().saveScanSettings(filename);
        } catch (ConfigurationException e1) {
            displayMessage("Error", "Problem saving scan settings: \n" + e1.toString(), true);
        }
    }
}

From source file:com.grendelscan.ui.MainWindow.java

public void importSettings() {
    FileDialog fd = new FileDialog(getShell(), SWT.OPEN);
    fd.setFilterPath("." + File.separator + GrendelScan.defaultConfigDirectory + File.separator
            + Scan.getScanSettings().getScanConfigDir());
    fd.setFilterExtensions(new String[] { "*.scan" });
    fd.setText("Import settings file name");
    String filename = fd.open();/*from   w  w  w.j  a v  a2 s. c  o  m*/
    if (filename != null) {
        try {
            Scan.getScanSettings().loadScanSettings(filename);
            updateFromSettings();
        } catch (ConfigurationException e1) {
            displayMessage("Error", "Problem loading scan settings: \n" + e1.toString(), true);
        }
    }
}