Good day,

I'm a newbie to Digester and therefore am running into URI resource issues when using Eclipse IDE to run my project. I setup the CLASSPATH in the run tab for my main class (and print out as first line in application for verification). But for the life of byte code I cannot get the resource to find my *.xml files. I've debugged my code and found the URI always = null. Code and XML files are attached.

hopp

output:

31 Jan 13:47:32 DEBUG com.verizonbusiness.eclipse.test.DigesterXMLConfigReader - C:\Documents and Settings\paul.hopper\workspace\dyson\etc\database-rules.xml;C:\Documents and Settings\paul.hopper\workspace\dyson\etc\database.xml;C:\Documents and Settings\paul.hopper\workspace\dyson;C:\Paul's Data\My Documents\Projects\cots_lib\common-20050609.012214.jar;C:\java\jConnect-6_0\classes\jconn3.jar;C:\java\commons-digester-1.7\commons-digester-1.7.jar;C:\java\logging-log4j-1.2.13\dist\lib\log4j-1.2.13.jar;C:\java\commons-collections-3.1\commons-collections-3.1.jar;C:\java\commons-logging-1.0.5\commons-logging.jar 31 Jan 13:47:33 DEBUG org.apache.commons.digester.Digester - addRuleSet() with no namespace URI 31 Jan 13:47:33 DEBUG org.apache.commons.digester.Digester - addRuleSet() with no namespace URI 31 Jan 13:47:33 DEBUG org.apache.commons.digester.Digester - register('-//Jakarta Apache //DTD digester-rules XML V1.0//EN', 'jar:file:/C:/java/commons-digester-1.7/commons-digester-1.7.jar!/org/apache/commons/digester/xmlrules/digester-rules.dtd' Exception in thread "main" org.apache.commons.digester.xmlrules.XmlLoadException at org.apache.commons.digester.xmlrules.FromXmlRuleSet$URLXMLRulesLoader.loadRules(FromXmlRuleSet.java:198) at org.apache.commons.digester.xmlrules.FromXmlRuleSet.addRuleInstances(FromXmlRuleSet.java:175) at org.apache.commons.digester.xmlrules.FromXmlRuleSet.addRuleInstances(FromXmlRuleSet.java:140)
   at org.apache.commons.digester.Digester.addRuleSet(Digester.java:1776)
at org.apache.commons.digester.xmlrules.DigesterLoader.createDigester(DigesterLoader.java:79) at com.verizonbusiness.eclipse.test.DigesterXMLConfigReader.<init>(DigesterXMLConfigReader.java:25) at com.verizonbusiness.eclipse.test.DigesterXMLConfigReader.main(DigesterXMLConfigReader.java:51)
Caused by: java.lang.NullPointerException
at org.apache.commons.digester.xmlrules.FromXmlRuleSet$URLXMLRulesLoader.loadRules(FromXmlRuleSet.java:196)
   ... 6 more
package com.verizonbusiness.eclipse.test;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.digester.Digester;
import org.apache.commons.digester.xmlrules.DigesterLoader;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.xml.sax.SAXException;

/**
 * @version Jan 31, 2006
 * @author paul.hopper
 * 
 * dyson
 *
 * DigesterXMLConfigReader.java 
 */
public class DigesterXMLConfigReader {
        private static final Logger logger = 
Logger.getLogger(DigesterXMLConfigReader.class);
        public DigesterXMLConfigReader() {
                logger.debug(System.getProperty("java.class.path"));
                Digester digester = 
DigesterLoader.createDigester(this.getClass().getClassLoader().getResource("database-rules.xml"));
                logger.debug("HERE");
                digester.setValidating(false);

                List databases = new ArrayList();
                digester.push(databases);
                

                //               Parse the XML document
                try {
                        
digester.parse(this.getClass().getClassLoader().getResourceAsStream("C://Documents
 and Settings//paul.hopper//workspace//dyson//etc//database.xml"));
                } catch (FileNotFoundException e) {
                        logger.warn(e.getMessage(), e);
                } catch (IOException e) {
                        logger.warn(e.getMessage(), e);
                } catch (SAXException e) {
                        logger.warn(e.getMessage(), e);
                }
                
                for (int i = 0; i < databases.size(); i++) {
                        logger.info(((Database)databases.get(i)).toString());
                }
        }
        
        public static void main(String[] args) {
                PropertyConfigurator.configure("etc/log4j.cfg");
                new DigesterXMLConfigReader();
        }
}

package com.verizonbusiness.eclipse.test;

/**
 * @version Jan 31, 2006
 * @author paul.hopper
 * 
 * dyson
 *
 * /**
 * Databases.java 
 */
public class Database {
        private String name;
        private String server;
        
        public Database() {}
        
        public String toString() {
                StringBuffer buf = new StringBuffer(" name=" + name);
                buf.append(" server=" + server);
                return buf.toString();
        }

        /**
         * @return Returns the name.
         */
        public String getName() {
                return this.name;
        }

        /**
         * @param name The name to set.
         */
        public void setName(String name) {
                this.name = name;
        }

        /**
         * @return Returns the server.
         */
        public String getServer() {
                return this.server;
        }

        /**
         * @param server The server to set.
         */
        public void setServer(String server) {
                this.server = server;
        }
}
<digester-rules>
	<pattern value="databases/database">
		<object-create-rule classname="com.verizonbusiness.eclipse.test.Database"/>
		<set-next-rule methodname="add" paramtype="java.lang.Object"/>
		<set-properties-rule/>
		<bean-property-setter-rule pattern="name"/>
		<bean-property-setter-rule pattern="server"/>
	</pattern>
</digester-rules>
<?xml version="1.0"?>

<databases>
  <database>
    <name>db1</name>
    <server>db1.some.domain</server>
  </database>

  <database>
    <name>db2</name>
    <server>db2.some.domain</server>
  </database>
</databases>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to