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]