Example usage for org.apache.commons.digester Digester addSetTop

List of usage examples for org.apache.commons.digester Digester addSetTop

Introduction

In this page you can find the example usage for org.apache.commons.digester Digester addSetTop.

Prototype

public void addSetTop(String pattern, String methodName, String paramType) 

Source Link

Document

Add a "set top" rule for the specified parameters.

Usage

From source file:net.jcreate.xkins.XkinsLoader.java

private void skinDigester(Digester digester, String prefix) {
    //Crea los Paths
    digester.addSetProperties("skin");
    digester.addObjectCreate(prefix + "skin/path", PATH_CLASS_NAME);
    digester.addSetProperties(prefix + "skin/path");
    digester.addSetTop(prefix + "skin/path", "setSkin", SKIN_CLASS_NAME);
    digester.addSetNext(prefix + "skin/path", "addPath", PATH_CLASS_NAME);
    //Crea los resources globales element
    digester.addObjectCreate(prefix + "skin/element", ELEMENT_CLASS_NAME);
    digester.addSetProperties(prefix + "skin/element");
    digester.addSetTop(prefix + "skin/element", "setSkin", SKIN_CLASS_NAME);
    digester.addSetNext(prefix + "skin/element", "addResource", RES_CLASS_NAME);
    //Crea los resources globales constant
    digester.addObjectCreate(prefix + "skin/constant", CONSTANT_CLASS_NAME);
    digester.addSetProperties(prefix + "skin/constant");
    //digester.addSetProperty(prefix + "skin/constant", "value", "value");
    digester.addBeanPropertySetter(prefix + "skin/constant/value", "value");
    //?/*from   w  w w.j  a v a 2 s. com*/

    digester.addSetTop(prefix + "skin/constant", "setSkin", SKIN_CLASS_NAME);
    digester.addSetNext(prefix + "skin/constant", "addResource", RES_CLASS_NAME);
    //setea el processor global de skin
    digester.addObjectCreate(prefix + "skin/processor", PROCESSOR_CLASS_NAME);
    digester.addSetProperties(prefix + "skin/processor");
    digester.addSetNext(prefix + "skin/processor", "setProcessor", PROCESSOR_CLASS_NAME);

    //crea los servers
    digester.addObjectCreate("skin/server", SERVER_CLASS_NAME);
    digester.addSetProperties("skin/server");
    digester.addSetNext("skin/server", "addServer", SERVER_CLASS_NAME);

    //Crea los Templates
    digester.addObjectCreate(prefix + "skin/template", TEMPLATE_CLASS_NAME);
    digester.addSetProperties(prefix + "skin/template");
    digester.addSetTop(prefix + "skin/template", "setSkin", SKIN_CLASS_NAME);
    //crea el content
    digester.addObjectCreate(prefix + "skin/template/content", CONTENT_CLASS_NAME);
    digester.addSetProperties(prefix + "skin/template/content");
    digester.addCallMethod(prefix + "skin/template/content", "setData", 1);
    digester.addCallParam(prefix + "skin/template/content", 0);
    digester.addSetNext(prefix + "skin/template/content", "setContent", CONTENT_CLASS_NAME);
    digester.addSetTop(prefix + "skin/template/content", "setTemplate", TEMPLATE_CLASS_NAME);

    //setea el processor      
    digester.addObjectCreate(prefix + "skin/template/processor", PROCESSOR_CLASS_NAME);
    digester.addSetProperties(prefix + "skin/template/processor");
    digester.addSetNext(prefix + "skin/template/processor", "setProcessor", PROCESSOR_CLASS_NAME);
    //Crea los resources elements
    digester.addObjectCreate(prefix + "skin/template/element", ELEMENT_CLASS_NAME);
    digester.addSetProperties(prefix + "skin/template/element");
    digester.addSetTop(prefix + "skin/template/element", "setTemplate", TEMPLATE_CLASS_NAME);
    digester.addSetNext(prefix + "skin/template/element", "addResource", RES_CLASS_NAME);
    //Crea los resources constants
    digester.addObjectCreate(prefix + "skin/template/constant", CONSTANT_CLASS_NAME);
    digester.addSetProperties(prefix + "skin/template/constant");
    //digester.addSetProperty(prefix + "skin/template/constant", "value", "value");
    //?

    digester.addSetTop(prefix + "skin/template/constant", "setTemplate", TEMPLATE_CLASS_NAME);
    digester.addSetNext(prefix + "skin/template/constant", "addResource", RES_CLASS_NAME);
    //Agrega el template
    digester.addSetNext(prefix + "skin/template", "addTemplate", TEMPLATE_CLASS_NAME);
}

From source file:net.jcreate.xkins.XkinsLoader.java

/**
 * Carga los skins. Mtodo privado que utilizan los dems. Usa el Digester.
 * @param in//  w  w w . j  a v a2  s . c  o m
 * @param xk
 * @return
 * @throws XkinsException
 */
private Xkins loadSkins(InputStream in, Xkins xk) throws XkinsException {
    try {
        Digester digester = new Digester();
        Xkins xkLoading = new Xkins();
        URL url = this.getClass().getResource(this.dtd);
        if (url != null) {
            digester.register(this.registration, url.toString());
            //digester.setValidating(true);
        }
        digester.push(xkLoading);
        digester.addSetProperties("xkins");
        //Crea los Skins
        digester.addFactoryCreate("xkins/skin", new SkinFactory(xkLoading));
        digester.addSetProperties("xkins/skin");
        digester.addSetProperty("xkins/skin/set-property", "property", "value");
        digester.addSetTop("xkins/skin", "setXkins", XKINS_CLASS_NAME);

        digester.addObjectCreate("xkins/global-processor", PROCESSOR_CLASS_NAME);
        digester.addSetProperties("xkins/global-processor");
        digester.addSetNext("xkins/global-processor", "addProcessor", PROCESSOR_CLASS_NAME);

        this.skinDigester(digester, "xkins/");

        //Agrega el skin
        digester.addSetNext("xkins/skin", "addSkin", SKIN_CLASS_NAME);
        try {
            // Parse the input stream to initialize our database
            digester.parse(in);
            in.close();
        } catch (SAXException e) {
            System.out.println(":" + e.getMessage());
            System.out.println(":" + e);
            e.printStackTrace();
        } finally {
            if (in != null) {
                try {
                    in.close();
                } catch (Exception e) {
                }
            }
        }
        this.loadSkinsDefinition(xkLoading);
        //copio los xkins cargados al xk
        Iterator it = xkLoading.getSkins().keySet().iterator();
        while (it.hasNext()) {
            String skinName = (String) it.next();
            Skin sk = (Skin) xkLoading.getSkins().get(skinName);
            sk.setXkins(xk);
            xk.addSkin(sk);
        }
        XkinsLoadEvent xle = new XkinsLoadEvent(this);
        xle.setXkins(xk);
        xk.sendEvent(xle);
        xk.addProcessors(xkLoading.getProcessors());
        return xk;
    } catch (Throwable thr) {
        thr.printStackTrace();
        throw new XkinsException(thr);
    }
}