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

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

Introduction

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

Prototype

public void setUseContextClassLoader(boolean use) 

Source Link

Document

Determine whether to use the Context ClassLoader (the one found by calling Thread.currentThread().getContextClassLoader()) to resolve/load classes that are defined in various rules.

Usage

From source file:br.univali.celine.lms.config.LMSConfig.java

private static void doBuildConfig(String path) throws Exception {

    Digester d = new Digester();
    d.setUseContextClassLoader(true);
    d.push(config);//from w w  w.  ja  v  a 2s .  co  m

    d.addCallMethod("*/courses-folder", "setCoursesFolder", 0);
    //        d.addCallMethod("*/login-page", "setLoginPage", 0);
    d.addCallMethod("*/registerCourseOnImport", "setRegisterCourseOnImport", 0);
    d.addCallMethod("*/registerUserOnInsertCourse", "setRegisterUserOnInsert", 0);
    d.addCallMethod("*/error-page", "setErrorPage", 0);
    d.addCallMethod("*/lmsIntegration", "setLMSIntegration", 0);

    d.addObjectCreate("*/database-source/rdb", RDBDAO.class);
    d.addSetNestedProperties("*/database-source/rdb");
    d.addSetNext("*/database-source/rdb", "setDAO");

    d.addObjectCreate("*/database-source/xml", XMLDAO.class);
    d.addCallMethod("*/database-source/xml", "setFileName", 0);
    d.addSetNext("*/database-source/xml", "setDAO");

    d.addObjectCreate("*/database-source/bean", "", "class"); // devido a um bug da versao 3.3 tive que fazer esse workaround !!!
    //d.addObjectCreate("*/database-source/bean", "class", DAO.class); 
    d.addSetNext("*/database-source/bean", "setDAO");

    d.addRule("*/database-source/bean/bean-attribute", new BeanSetterAttribute());

    String fileName = path + "/celine-config.xml";
    java.io.File srcfile = new java.io.File(fileName);
    d.parse(srcfile);

    if (config.dao == null)
        throw new Exception("DAO is not defined at celine-config.xml");

    config.dao.initialize();

}

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);
    }//w w w  .j  av a 2  s  .  co 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.dotosoft.dot4command.config.xml.XmlConfigParser.java

/**
 * <p>Return the <code>Digester</code> instance to be used for
 * parsing, creating one if necessary.</p>
 * @return A Digester instance.//from www.j ava2 s  .  c  o m
 */
public Digester getDigester() {
    Digester digester = new Digester();
    RuleSet ruleSet = getRuleSet();
    digester.setNamespaceAware(ruleSet.getNamespaceURI() != null);
    digester.setUseContextClassLoader(getUseContextClassLoader());
    digester.setValidating(false);
    digester.addRuleSet(ruleSet);
    return digester;
}

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

private MindMap loadFreeMindMap(InputStream in) {
    try {/*from w  w  w .j a  v  a2 s. c  o m*/
        MindMap map = new MindMap();
        SAXParserFactory f = SAXParserFactory.newInstance();
        SAXParser parser = f.newSAXParser();

        //            SAXParser parser = validatingParserFactory.getValidatingParser();
        //            parser.setProperty(ValidatingParserFactory.JAXP_SCHEMA_SOURCE,
        //                "http://freemind.sourceforge.net/freemind.xsd");
        // load content into temporary structure
        Digester digester = new Digester(parser);
        //            digester.setEntityResolver(new SchemaResolver().addSchemaLocation(
        //                "http://freemind.sourceforge.net/freemind.xsd", "data/schemas/freemind.xsd"));
        //            digester.setErrorHandler(new StrictErrorHandler());

        digester.push(map);

        digester.addObjectCreate("*/node", "eu.scape_project.planning.xml.freemind.Node");
        digester.addSetProperties("*/node");
        digester.addCallMethod("*/node/hook/text", "setDESCRIPTION", 0);
        digester.addSetNext("*/node", "addChild");

        digester.setUseContextClassLoader(true);
        digester.parse(in);
        return map;
    } catch (IOException e) {
        log.error("Error loading Freemind file.", e);
    } catch (SAXException e) {
        log.error("Document is not a valid Freemind file.", e);
    } catch (ParserConfigurationException e) {
        log.error("Parser not properly configured.", e);
    }
    return null;
}

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

/**
 * Imports the XML representation of plans from the given input stream.
 * /*w w  w .jav a2 s.  c  o 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;
}

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

/**
 * Imports the XML representation of templates.
 * //  w ww  .  ja  v a 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);
    }
}