Example usage for org.apache.commons.digester3 Digester setErrorHandler

List of usage examples for org.apache.commons.digester3 Digester setErrorHandler

Introduction

In this page you can find the example usage for org.apache.commons.digester3 Digester setErrorHandler.

Prototype

public void setErrorHandler(ErrorHandler errorHandler) 

Source Link

Document

Set the error handler for this Digester.

Usage

From source file:eu.scape_project.planning.services.pa.PreservationActionRegistryFactory.java

static public List<PreservationActionRegistryDefinition> getAvailableRegistries()
        throws PlanningServiceException {
    ArrayList<PreservationActionRegistryDefinition> allRegistries = new ArrayList<PreservationActionRegistryDefinition>();

    String configFile = "data/services/PreservationActionRegistries.xml";
    InputStream config = Thread.currentThread().getContextClassLoader().getResourceAsStream(configFile);

    if (config == null) {
        throw new PlanningServiceException("Config file not found: " + configFile);
    }/*from  www .  ja v a  2s.c o m*/

    Digester digester = new Digester();
    digester.setValidating(false);
    digester.setErrorHandler(new StrictErrorHandler());

    digester.push(allRegistries);
    digester.addObjectCreate("*/registry", PreservationActionRegistryDefinition.class);
    digester.addBeanPropertySetter("*/registry/shortname", "shortname");
    digester.addBeanPropertySetter("*/registry/logo", "logo");
    digester.addBeanPropertySetter("*/registry/url", "url");
    digester.addBeanPropertySetter("*/registry/type", "type");
    digester.addBeanPropertySetter("*/registry/active", "active");
    digester.addSetNext("*/registry", "add");

    try {
        digester.setUseContextClassLoader(true);
        digester.parse(config);
    } catch (Exception e) {
        throw new PlanningServiceException(e);
    }
    return allRegistries;
}

From source file:com.thoughtworks.go.plugin.infra.plugininfo.GoPluginDescriptorParser.java

private static Digester initDigester() throws SAXNotRecognizedException, SAXNotSupportedException {
    Digester digester = new Digester();
    digester.setValidating(true);/*from   ww  w .  jav a  2  s.c  o m*/
    digester.setErrorHandler(new ErrorHandler() {
        @Override
        public void warning(SAXParseException exception) throws SAXException {
            throw new SAXException("XML Schema validation of Plugin Descriptor(plugin.xml) failed", exception);
        }

        @Override
        public void error(SAXParseException exception) throws SAXException {
            throw new SAXException("XML Schema validation of Plugin Descriptor(plugin.xml) failed", exception);
        }

        @Override
        public void fatalError(SAXParseException exception) throws SAXException {
            throw new SAXException("XML Schema validation of Plugin Descriptor(plugin.xml) failed", exception);
        }
    });
    digester.setProperty("http://java.sun.com/xml/jaxp/properties/schemaLanguage",
            XMLConstants.W3C_XML_SCHEMA_NS_URI);
    digester.setProperty("http://java.sun.com/xml/jaxp/properties/schemaSource",
            GoPluginDescriptorParser.class.getResourceAsStream("/plugin-descriptor.xsd"));
    return digester;
}

From source file:eu.scape_project.planning.xml.PlanParser.java

/**
 * Imports the XML representation of templates.
 * /*from ww w  . j ava  2 s .c om*/
 * @param in
 *            the input stream to read from
 * @return a list of read templates.
 * @throws PlatoException
 *             if the template cannot be parsed
 */
public List<TemplateTree> importTemplates(final InputStream in) throws PlatoException {

    try {
        Digester digester = new Digester();
        // digester.setValidating(true);
        StrictErrorHandler errorHandler = new StrictErrorHandler();
        digester.setErrorHandler(errorHandler);

        // At the moment XML files for template tree's are only used
        // internally,
        // later we will define a schema and use it also for validation

        digester.push(this);

        digester.addObjectCreate("*/template", TemplateTree.class);
        digester.addSetProperties("*/template");
        digester.addSetRoot("*/template", "setTemplate");
        // digester.addSetNext("*/template/name", "setName");
        // digester.addSetNext("*/template/owner", "setOwner");

        PlanParser.addTreeParsingRulesToDigester(digester);

        digester.addObjectCreate("*/template/node", Node.class);
        digester.addSetProperties("*/template/node");
        digester.addSetNext("*/template/node", "addChild");

        digester.setUseContextClassLoader(true);

        templates = new ArrayList<TemplateTree>();
        digester.parse(in);
        // FIXME:
        /*
         * for (TemplateTree t : templates) { log.info(t.getName() +
         * t.getOwner()); }
         */

        return templates;
    } catch (Exception e) {
        throw new PlatoException("Failed to parse template tree.", e);
    }
}

From source file:eu.scape_project.planning.xml.PlanParser.java

/**
 * Imports the XML representation of plans from the given input stream.
 * /*from  w w  w  .java 2s.co m*/
 * @param in
 *            the input stream to read from
 * @return list of read plans
 * @throws PlatoException
 *             if the plan cannot be parsed
 */
public List<Plan> importProjects(final InputStream in) throws PlatoException {
    try {

        SAXParser parser = validatingParserFactory.getValidatingParser();
        parser.setProperty(ValidatingParserFactory.JAXP_SCHEMA_SOURCE, PlanXMLConstants.PLAN_SCHEMAS);

        Digester digester = new Digester(parser);

        SchemaResolver schemaResolver = new SchemaResolver();

        schemaResolver
                .addSchemaLocation(PlanXMLConstants.PLATO_SCHEMA_URI, PlanXMLConstants.PLATO_SCHEMA_LOCATION)
                .addSchemaLocation(PlanXMLConstants.PAP_SCHEMA_URI, PlanXMLConstants.PAP_SCHEMA_LOCATION)
                .addSchemaLocation(PlanXMLConstants.TAVERNA_SCHEMA_URI,
                        PlanXMLConstants.TAVERNA_SCHEMA_LOCATION);

        digester.setEntityResolver(schemaResolver);
        digester.setErrorHandler(new StrictErrorHandler());
        digester.setNamespaceAware(true);
        digester.push(this);

        PlanParser.addRules(digester);

        digester.setUseContextClassLoader(true);
        plans = new ArrayList<Plan>();

        // finally parse the XML representation with all created rules
        digester.parse(in);

        for (Plan plan : plans) {
            String projectName = plan.getPlanProperties().getName();
            if ((projectName != null) && (!"".equals(projectName))) {
                /*
                 * establish links from values to scales. For all(!)
                 * alternatives: An alternative could have be discarded
                 * after some measurements have already been added.
                 */
                plan.getTree().initValues(plan.getAlternativesDefinition().getAlternatives(),
                        plan.getSampleRecordsDefinition().getRecords().size(), true);
                /*
                 * establish references of Experiment.uploads
                 */
                HashMap<String, SampleObject> records = new HashMap<String, SampleObject>();
                for (SampleObject record : plan.getSampleRecordsDefinition().getRecords()) {
                    records.put(record.getShortName(), record);
                }
                for (Alternative alt : plan.getAlternativesDefinition().getAlternatives()) {
                    if ((alt.getExperiment() != null) && (alt.getExperiment() instanceof ExperimentWrapper)) {
                        alt.setExperiment(((ExperimentWrapper) alt.getExperiment()).getExperiment(records));
                    }
                }

                // CHECK NUMERIC TRANSFORMER THRESHOLDS
                for (Leaf l : plan.getTree().getRoot().getAllLeaves()) {
                    eu.scape_project.planning.model.transform.Transformer t = l.getTransformer();
                    if (t != null && t instanceof NumericTransformer) {
                        NumericTransformer nt = (NumericTransformer) t;
                        if (!nt.checkOrder()) {
                            StringBuffer sb = new StringBuffer("NUMERICTRANSFORMER THRESHOLD ERROR ");
                            sb.append(l.getName()).append("::NUMERICTRANSFORMER:: ");
                            sb.append(nt.getThreshold1()).append(" ").append(nt.getThreshold2()).append(" ")
                                    .append(nt.getThreshold3()).append(" ").append(nt.getThreshold4())
                                    .append(" ").append(nt.getThreshold5());
                            log.error(sb.toString());
                        }
                    }
                }

                /*
                 * establish references to selected alternative
                 */
                HashMap<String, Alternative> alternatives = new HashMap<String, Alternative>();
                for (Alternative alt : plan.getAlternativesDefinition().getAlternatives()) {
                    alternatives.put(alt.getName(), alt);
                }
                if ((plan.getRecommendation() != null)
                        && (plan.getRecommendation() instanceof RecommendationWrapper)) {
                    plan.setRecommendation(
                            ((RecommendationWrapper) plan.getRecommendation()).getRecommendation(alternatives));
                }
                if ((plan.getPlanProperties().getState() == PlanState.ANALYSED)
                        && ((plan.getRecommendation() == null)
                                || (plan.getRecommendation().getAlternative() == null))) {
                    /*
                     * This project is NOT completely analysed
                     */
                    plan.getPlanProperties().setState(PlanState.valueOf(PlanState.ANALYSED.getValue() - 1));
                }

            } else {
                throw new PlatoException("Could not find any project data.");
            }
        }
    } catch (Exception e) {
        throw new PlatoException("Failed to import plans.", e);
    }

    return plans;
}