hi
(you're probably not going to like this but) i've given your code a run and (as far a i can tell) it runs fine on my machine.
some changes have been made to betwixt since the last release so it's worth retrying with CVS HEAD (or a recently nightly) if you're using the release. otherwise, it's very possible that you have an error in your configuration. try turning up logging and looking at the trace - or just hooking the betwixt source up to and IDE and debugging.
BTW you have a mistake in your betwixt file, the addDefaults needs to be within the element tag (but that shouldn't cause a problem with your symptoms).
- robert
On 8 Nov 2004, at 02:54, Rezaul Hoque wrote:
Hello,
I am facing problem with Parsing xml file through BeanReader. Here are my classes.
----StandardMenuItem.java----
public class StandardMenuItem { private String idx; private String icon; private String link; private String statusText; private String tooltip; private String value;
public StandardMenuItem() {
this.idx = "";
this.icon = "";
this.link = "";
this.statusText = "";
this.tooltip = "";
this.value = "";
}
public void setIdx(String idx) { this.idx = idx; }
public String getIdx() { return idx;}
public void setIcon(String icon) { this.icon = icon; }
public String getIcon() { return icon; }
public void setLink(String link) { this.link = link;}
public String getLink() { return link;}
public void setStatusText(String statusText) { this.statusText = statusText;}
public String getStatusText() { return statusText; }
public void setTooltip(String tooltip) { this.tooltip = tooltip; }
public String getTooltip() { return tooltip; }
public void setValue(String value) { this.value = value; }
public String getValue() { return value; }
}
----StandardMenuItemListBean.java---
import java.util.List; import java.util.ArrayList;
public class StandardMenuItemListBean
{
private List menuItemList;
public StandardMenuItemListBean() { this.menuItemList = new ArrayList(); }
public List getStandardMenuItemList() { return menuItemList; }
public void addStandardMenuItem(StandardMenuItem menuItem) {
menuItemList.add(menuItem); }
}
----StandardMenuItemListBean.betwixt---
<?xml version="1.0" encoding="UTF-8" ?> <info> <element name="menu" /> <addDefaults /> </info>
----TestMenuWrite.java----
import java.io.*; import java.beans.IntrospectionException;
import org.apache.commons.betwixt.BindingConfiguration; import org.apache.commons.betwixt.io.BeanWriter; import org.xml.sax.SAXException;
public class TestMenuWrite {
public static void main(String args[]) { new TestMenuWrite().writeMenuFile(); }
public void writeMenuFile() { try { PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter("menu.xml"))); BeanWriter writer = new BeanWriter(pw); writer.writeXmlDeclaration("<?xml version='1.0' encoding='UTF-8'?>"); writer.getBindingConfiguration().setMapIDs(false);
StandardMenuItemListBean menu = new StandardMenuItemListBean();
StandardMenuItem item = new StandardMenuItem(); item.setIdx("aboutUs"); item.setValue("About Us"); item.setLink("viewAboutUs"); item.setTooltip("about us"); item.setStatusText("[About Us]"); menu.addStandardMenuItem(item);
item = new StandardMenuItem(); item.setIdx("service"); item.setValue("Our Services"); item.setLink("viewServiceType"); item.setTooltip("services"); item.setStatusText("[Services]"); menu.addStandardMenuItem(item); System.out.println(menu.getStandardMenuItemList().size());
writer.write(menu); pw.flush(); pw.close(); //writer.enablePrettyPrint(); } catch(IOException e) { System.err.println("IOException: " + e.getMessage()); } catch(SAXException e) { System.err.println("SAXException: " + e.getMessage()); } catch(IntrospectionException e) { System.err.println("IntrospectionException: " + e.getMessage()); } } }
----TestMenuRead.java----
import java.io.*;
import java.beans.IntrospectionException; import org.apache.commons.betwixt.io.BeanReader; import org.apache.commons.betwixt.BindingConfiguration; import org.xml.sax.SAXException;
public class TestMenuRead {
public static void main(String args[]) { new TestMenuRead().readMenu(); }
private void readMenu() {
try {
BeanReader reader = new BeanReader();
reader.registerBeanClass(StandardMenuItemListBean.class);
reader.getBindingConfiguration().setMapIDs(false);
File file = new File("menu.xml");
StandardMenuItemListBean menu = (StandardMenuItemListBean)reader.parse(file);
} catch(IOException e) {
System.err.println("IOException: " + e.getMessage());
} catch(SAXException e) {
e.printStackTrace();
} catch(IntrospectionException e) {
System.err.println("IntrospectionException: " + e.getMessage());
}
}
}
Now The menu.xml file creating nicely. So TestMenuWrite is working well. But when I am trying to read from the menu.xml file through TestMenuRead.java I am getting the follwing error message.
------------------------------
java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
at org.apache.commons.digester.Digester.createSAXException(Digester.java
:2792)
at org.apache.commons.digester.Digester.createSAXException(Digester.java
:2818)
at org.apache.commons.digester.Digester.endElement(Digester.java:1070)
at org.apache.crimson.parser.Parser2.maybeElement(Unknown Source)
at org.apache.crimson.parser.Parser2.parseInternal(Unknown Source)
at org.apache.crimson.parser.Parser2.parse(Unknown Source)
at org.apache.crimson.parser.XMLReaderImpl.parse(Unknown Source)
at org.apache.commons.digester.Digester.parse(Digester.java:1556)
at TestMenuRead.readMenu(TestMenuRead.java:20)
at TestMenuRead.main(TestMenuRead.java:11)
Is anybody there who can help me how I can solve this problem.. I am eagerly waiting.
Thanks in advance....
Babu
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
