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

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

Introduction

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

Prototype

public Object peek() 

Source Link

Document

Return the top object on the stack without removing it.

Usage

From source file:com.pureinfo.srmcenter.datasync.client.SyncClientHelper.java

public static Map getSrmSrmcMapping(String _sFileName) throws PureException {
    Digester digester = new Digester();
    digester.addObjectCreate("sync-data", HashMap.class);
    digester.addRule("sync-data/property", new Rule() {
        public void begin(String _sNamespace, String _sName, Attributes _attributes) throws Exception {
            Map mapping = (Map) digester.peek();
            SyncMapping sync = new SyncMapping();
            sync.setSRM(_attributes.getValue("srm"));
            sync.setSRMC(_attributes.getValue("srmc"));
            String sType = _attributes.getValue("type");
            if (sType == null)
                sync.setType(0);/*from w ww. j a  va 2  s.c  o  m*/
            else
                sync.setType(Integer.parseInt(sType));
            mapping.put(sync.getSRMC(), sync);
        }
    });
    try {
        return (Map) digester.parse(_sFileName);
    } catch (Exception ex) {
        throw new PureException(PureException.UNKNOWN, "", ex);
    }
}

From source file:com.panet.imeta.core.config.DigesterConfigManager.java

/**
 * Loads the configuration parameters by delegating to commons digester.
 */// w  ww.j ava  2  s  .co  m
public Collection<T> load() throws KettleConfigException {
    ClassLoader loader = Thread.currentThread().getContextClassLoader();

    Digester digester = DigesterLoader.createDigester(loader.getResource(rulesURL));

    final Set<T> configObjs = new LinkedHashSet<T>();

    digester.addRule(setNext, new SetNextRule("") {
        @SuppressWarnings("unchecked")
        public void end(String nameSpace, String name) throws Exception {
            configObjs.add((T) digester.peek());
        }
    });

    try {
        digester.parse(loader.getResource(configURL));
    } catch (Exception e) {
        throw new KettleConfigException(e);
    }

    return configObjs;
}

From source file:com.panet.imeta.core.config.KettleConfig.java

private Digester createDigester() {
    Digester digester = new Digester();
    digester.addObjectCreate(KETTLE_CONFIG, TempConfig.class);
    digester.addBeanPropertySetter(KETTLE_CONFIG_CLASS, "clazz");
    digester.addSetProperties(KETTLE_CONFIG, "id", "id");
    digester.addRule(KETTLE_CONFIG_PROPERTY, new SetPropertiesRule() {
        @Override//from   w  w  w  .ja  v a2  s . co m
        public void begin(String name, String namespace, Attributes attrs) throws Exception {
            ((TempConfig) digester.peek()).parms.put(attrs.getValue("name"), attrs.getValue("value"));
        }
    });

    digester.addRule(KETTLE_CONFIG, new SetNextRule("") {
        @SuppressWarnings("unchecked")
        public void end(String nameSpace, String name) throws Exception {
            TempConfig cfg = (TempConfig) digester.peek();

            // do the conversion here.
            Class<? extends ConfigManager> cfclass = Class.forName(cfg.clazz).asSubclass(ConfigManager.class);

            ConfigManager parms = cfclass.newInstance();
            // method injection
            inject(cfclass.getMethods(), cfg, parms);
            // field injection
            inject(cfclass.getDeclaredFields(), cfg, parms);
            KettleConfig.this.configs.put(cfg.id, parms);
        }
    });

    return digester;
}

From source file:org.eclipse.wb.internal.core.model.description.LayoutDescription.java

private void loadDescription() throws Exception {
    // prepare resource
    String resourcePath = m_layoutClassName.replace('.', '/') + ".wbp-component.xml";
    ResourceInfo resourceInfo = DescriptionHelper.getResourceInfo(resourcePath, m_toolkit.getId());
    if (resourceInfo == null) {
        DesignerPlugin.log("Not found resource " + m_layoutClassName.replace('.', '/') + ".wbp-component.xml"
                + " in bundle " + m_toolkit.getId());
        return;//w ww .  java  2  s . c o m
    }
    Digester digester;
    // prepare digester
    {
        digester = new Digester();
        digester.setLogger(new NoOpLog());
        digester.addRule("component/creation", new Rule() {
            @Override
            public void begin(String namespace, String name, Attributes attributes) throws Exception {
                final String id = attributes.getValue("id");
                digester.push(id != null ? id : StringUtils.EMPTY);
            }

            @Override
            public void end(String namespace, String name) throws Exception {
                digester.pop();
            }
        });
        digester.addRule("component/creation/source", new Rule() {
            @Override
            public void body(String namespace, String name, String text) throws Exception {
                final String id = (String) digester.peek();
                if (id.equals(m_creationId)) {
                    m_source = text;
                }
            }
        });
    }
    // do parse
    InputStream is = resourceInfo.getURL().openStream();
    try {
        digester.parse(is);
    } finally {
        IOUtils.closeQuietly(is);
    }
}

From source file:org.eclipse.wb.internal.swing.ams.model.property.ConfigurationReader.java

private static List<PropertyGroup> parsePropertyGroups(InputStream input) throws Exception {
    final List<PropertyGroup> groups = Lists.newArrayList();
    // prepare Digester
    Digester digester;
    {/*from w w w  .j  ava2s .com*/
        digester = new Digester();
        digester.setLogger(new NoOpLog());
        // groups/group
        {
            String pattern = "groups/group";
            digester.addRule(pattern, new Rule() {
                @Override
                public void begin(String namespace, String element, Attributes attributes) throws Exception {
                    // prepare required name
                    String name = attributes.getValue("name");
                    Assert.isNotNull(name, Messages.ConfigurationReader_errGroup_noNameAttribute);
                    // prepare optional description
                    String description = attributes.getValue("description");
                    Assert.isNotNull(name, Messages.ConfigurationReader_errGroup_noDescriptionAttribute);
                    // prepare optional category
                    PropertyCategory category = null;
                    {
                        String categoryString = attributes.getValue("category");
                        if (categoryString != null) {
                            category = PropertyCategory.get(categoryString, null);
                        }
                    }
                    // add group
                    PropertyGroup group = new PropertyGroup(name, description, category);
                    digester.push(group);
                    groups.add(group);
                }

                @Override
                public void end(String namespace, String name) throws Exception {
                    digester.pop();
                    super.end(namespace, name);
                }
            });
        }
        // groups/group/property
        {
            String pattern = "groups/group/property";
            digester.addRule(pattern, new Rule() {
                @Override
                public void begin(String namespace, String name, Attributes attributes) throws Exception {
                    // prepare required name
                    String propertyName = attributes.getValue("name");
                    Assert.isNotNull(propertyName, Messages.ConfigurationReader_errProperty_noNameAttribute);
                    // prepare optional category
                    PropertyCategory category = null;
                    {
                        String categoryString = attributes.getValue("category");
                        if (categoryString != null) {
                            category = PropertyCategory.get(categoryString, null);
                        }
                    }
                    // add property
                    PropertyGroup group = (PropertyGroup) digester.peek();
                    group.addProperty(new PropertyConfiguration(propertyName, category));
                }
            });
        }
        // groups/group/other-properties
        {
            String pattern = "groups/group/other-properties";
            digester.addRule(pattern, new Rule() {
                @Override
                public void begin(String namespace, String name, Attributes attributes) throws Exception {
                    PropertyGroup group = (PropertyGroup) digester.peek();
                    group.addProperty(new PropertyConfiguration(null, null));
                }
            });
        }
    }
    // read XML
    try {
        digester.push(groups);
        digester.parse(input);
    } finally {
        IOUtils.closeQuietly(input);
    }
    // done
    return groups;
}

From source file:org.eclipse.wb.internal.xwt.parser.XwtDescriptionRulesProvider.java

/**
 * Parses {@link StylePropertyEditor} specification for constructor parameter and remember it as
 * arbitrary value in {@link ComponentDescription}.
 */// ww  w  . jav a2  s.  co m
private void addRule_forStylePropertyEditor(Digester digester, final EditorContext context) {
    String pattern = "component/constructors/constructor/parameter/editor";
    digester.addRule(pattern, new Rule() {
        @Override
        public void begin(String namespace, String name, Attributes attributes) throws Exception {
            String editorId = attributes.getValue("id");
            PropertyEditor editor = DescriptionPropertiesHelper.getConfigurableEditor(editorId);
            digester.push(new PropertyEditorDescription(context, editor));
        }

        @Override
        public void end(String namespace, String name) throws Exception {
            // prepare editor
            PropertyEditor configuredEditor;
            {
                PropertyEditorDescription description = (PropertyEditorDescription) digester.pop();
                configuredEditor = description.getConfiguredEditor();
            }
            // remember editor
            if (configuredEditor instanceof StylePropertyEditor) {
                ComponentDescription componentDescription = (ComponentDescription) digester.peek();
                Class<StylePropertyEditor> key = StylePropertyEditor.class;
                // XXX
                /*if (componentDescription.getArbitraryValue(key) == null)*/ {
                    componentDescription.putArbitraryValue(key, configuredEditor);
                }
            }
        }
    });
    ComponentDescriptionHelper.addConfigurableObjectParametersRules(digester, pattern);
}

From source file:org.photovault.imginfo.xml.XmlImporter.java

/**
 Import data from XML file according to current settings in this object.
 *//*from w w w.  j  av  a 2  s. c  o  m*/
public void importData() {
    Digester digester = new Digester();
    digester.push(this); // Push controller servlet onto the stack
    digester.setValidating(false);
    digester.addFactoryCreate("*/folders/folder", new FolderFactory(true));
    digester.addFactoryCreate("*/folder/folder", new FolderFactory(true));
    digester.addCallMethod("*/folder/name", "setName", 0);
    digester.addCallMethod("*/folder/description", "setDescription", 0);

    // PhotoInfo mappings
    digester.addFactoryCreate("*/photos/photo", new PhotoFactory());
    // After the photo  is ready, inform listeners  if a new photo was created.
    digester.addRule("*/photos/photo", new Rule() {
        @Override
        public void end(String namespace, String name) {
            Boolean isCreatingNew = (Boolean) digester.pop(STACK_CREATING_NEW);
            if (isCreatingNew.booleanValue()) {
                photoCount++;
                fireObjectImportedEvent(digester.peek());
            }
        }
    });
    digester.addCallMethod("*/photos/photo/shooting-place", "setShootingPlace", 0);
    digester.addCallMethod("*/photos/photo/photographer", "setPhotographer", 0);
    digester.addCallMethod("*/photos/photo/camera", "setCamera", 0);
    digester.addCallMethod("*/photos/photo/lens", "setLens", 0);
    digester.addCallMethod("*/photos/photo/film", "setFilm", 0);
    digester.addCallMethod("*/photos/photo/orig-fname", "setOrigFname", 0);
    digester.addCallMethod("*/photos/photo/description", "setDesc", 0);
    digester.addCallMethod("*/photos/photo/tech-notes", "setTechNotes", 0);
    digester.addCallMethod("*/photos/photo/f-stop", "setFStop", 0, new Class[] { Double.class });
    digester.addCallMethod("*/photos/photo/shutter-speed", "setShutterSpeed", 0, new Class[] { Double.class });
    digester.addCallMethod("*/photos/photo/focal-length", "setFocalLength", 0, new Class[] { Double.class });
    digester.addCallMethod("*/photos/photo/quality", "setQuality", 0, new Class[] { Integer.class });
    digester.addCallMethod("*/photos/photo/film-speed", "setFilmSpeed", 0, new Class[] { Integer.class });

    digester.addFactoryCreate("*/photos/photo/shoot-time", new FuzzyDateFactory());
    digester.addSetNext("*/photos/photo/shoot-time", "setFuzzyShootTime");

    // Crop settings
    digester.addCallMethod("*/photos/photo/crop", "setPrefRotation", 1, new Class[] { Double.class });
    digester.addCallParam("*/photos/photo/crop", 0, "rot");
    digester.addFactoryCreate("*/photos/photo/crop", new RectangleFactory());
    digester.addSetNext("*/photos/photo/crop", "setCropBounds");

    /* 
     Raw conversion setting mappings. All of these expect that a RawSettingsFactory
     is the topmost object in Digester stack. Note that in practice there must be 
     and explicit rule for each raw setting field since the rule that
     instantates the raw setting object & assign it to the parent object will 
     override this.
     */
    digester.addObjectCreate("*/raw-conversion", RawSettingsFactory.class);
    digester.addCallMethod("*/raw-conversion/whitepoint", "setWhite", 0, new Class[] { Integer.class });
    digester.addCallMethod("*/raw-conversion/blackpoint", "setBlack", 0, new Class[] { Integer.class });
    digester.addCallMethod("*/raw-conversion/ev-corr", "setEvCorr", 0, new Class[] { Double.class });
    digester.addCallMethod("*/raw-conversion/hlight-corr", "setHlightComp", 0, new Class[] { Double.class });
    digester.addRule("*/raw-conversion/color-balance", new Rule() {
        @Override
        public void begin(String namespace, String name, Attributes attrs) {
            String rgStr = attrs.getValue("red-green-ratio");
            String bgStr = attrs.getValue("blue-green-ratio");
            double bg = 1.0;
            double rg = 1.0;
            try {
                bg = Double.parseDouble(bgStr);
                rg = Double.parseDouble(rgStr);
            } catch (NumberFormatException ex) {
                digester.createSAXException(ex);
            }
            RawSettingsFactory f = (RawSettingsFactory) digester.peek();
            f.setRedGreenRation(rg);
            f.setBlueGreenRatio(bg);
        }
    });
    digester.addRule("*/raw-conversion/daylight-color-balance", new Rule() {
        @Override
        public void begin(String namespace, String name, Attributes attrs) {
            String rgStr = attrs.getValue("red-green-ratio");
            String bgStr = attrs.getValue("blue-green-ratio");
            double bg = 1.0;
            double rg = 1.0;

            try {
                bg = Double.parseDouble(bgStr);
                rg = Double.parseDouble(rgStr);
            } catch (NumberFormatException ex) {
                digester.createSAXException(ex);
            }
            RawSettingsFactory f = (RawSettingsFactory) digester.peek();
            f.setDaylightMultipliers(new double[] { rg, 1.0, bg });
        }
    });
    digester.addRuleSet(new ChannelMapRuleSet("*/photo/"));
    digester.addRule("*/photo/color-mapping", new Rule() {
        @Override
        public void end(String namespace, String name) {
            PhotoInfo p = (PhotoInfo) digester.peek(1);
            ChannelMapOperationFactory f = (ChannelMapOperationFactory) digester.peek();
            p.setColorChannelMapping(f.create());
        }
    });

    digester.addObjectCreate("*/photo/raw-conversion", RawSettingsFactory.class);
    digester.addRule("*/photo/raw-conversion", new Rule() {
        @Override
        public void end(String namespace, String name) {
            PhotoInfo p = (PhotoInfo) digester.peek(1);
            RawSettingsFactory f = (RawSettingsFactory) digester.peek();
            try {
                p.setRawSettings(f.create());
            } catch (PhotovaultException ex) {
                digester.createSAXException(ex);
            }
        }
    });

    // Instance mappings
    digester.addFactoryCreate("*/photo/instances/instance", new InstanceFactory());
    digester.addCallMethod("*/instance/file-size", "setFileSize", 0, new Class[] { Long.class });
    digester.addCallMethod("*/instance/width", "setWidth", 0, new Class[] { Integer.class });
    digester.addCallMethod("*/instance/height", "setHeight", 0, new Class[] { Integer.class });
    digester.addCallMethod("*/instance/crop", "setRotated", 1, new Class[] { Double.class });
    digester.addCallParam("*/instance/crop", 0, "rot");
    digester.addFactoryCreate("*/instance/crop", new RectangleFactory());
    digester.addSetNext("*/instance/crop", "setCropBounds");
    digester.addRule("*/instance/hash", new Rule() {
        @Override
        public void body(String namespace, String name, String text) {
            /*                
                            byte[] hash = Base64.decode( text );
                            ImageInstance i = (ImageInstance) digester.peek();
                            i.setHash( hash );
            */
        }
    });
    digester.addRuleSet(new ChannelMapRuleSet("*/instance/"));
    digester.addRule("*/instance/color-mapping", new Rule() {
        @Override
        public void end(String namespace, String name) {
            /*
                            ImageInstance i = (ImageInstance) digester.peek(1);
                            ChannelMapOperationFactory f = 
                (ChannelMapOperationFactory) digester.peek();
                            i.setColorChannelMapping( f.create() );                
            */
        }
    });
    // Raw conversion parsing was already specified earlier. We just need a 
    // method for binding the RawConversionSettings object to instance
    digester.addObjectCreate("*/instance/raw-conversion", RawSettingsFactory.class);
    digester.addRule("*/instance/raw-conversion", new Rule() {
        @Override
        public void end(String namespace, String name) {
            /*
                            ImageInstance i = (ImageInstance)digester.peek(1);
                            RawSettingsFactory f = (RawSettingsFactory) digester.peek();
                            try {
            i.setRawSettings( f.create() );
                            } catch (PhotovaultException ex) {
            digester.createSAXException( ex );
                            }
            */
        }
    });
    /*
     TODO: import information about image locations. In first phase, this
     can be done by indexing images as an external volume...
    */

    digester.addSetNext("*/photo/instances/instance", "addInstance");

    // folder handling
    digester.addFactoryCreate("*/photos/photo/folders/folder-ref", new FolderFactory(false));
    digester.addSetTop("*/photos/photo/folders/folder-ref", "addPhoto");

    fireStatusChangeEvent(IMPORTING_STARTED);
    try {
        digester.parse(reader);
    } catch (SAXException ex) {
        fireErrorEvent(ex.getMessage());
        ex.printStackTrace();
    } catch (IOException ex) {
        fireErrorEvent(ex.getMessage());
        ex.printStackTrace();
    }
    fireStatusChangeEvent(IMPORTING_COMPLETED);
}