Re: [Simple-support] had parsing working for strings, but now need to do so for ArrayList
Brought to you by:
niallg
|
From: Niall G. <gal...@ya...> - 2009-06-06 10:52:12
|
Hi,
Send me on your annotated code. So I can see the schema you are using to parse the XML. From the exception it looks like you have annotated the List with either @Element or @Attribute instead of @ElementList.
Niall
--- On Fri, 6/5/09, meghiddo <mat...@ho...> wrote:
> From: meghiddo <mat...@ho...>
> Subject: [Simple-support] had parsing working for strings, but now need to do so for ArrayList
> To: sim...@li...
> Date: Friday, June 5, 2009, 3:32 PM
>
> I had code working that took data from a web service,
> parsed it, and loaded
> the values into a list that I could use in a
> rich:tree. This was working
> just fine when it took the data from this xml:
>
> [code] <?xml version="1.0"
> encoding="UTF-8" ?>
> - <deviceCollection>
> - <device>
> <deviceId>exampleDevice1</deviceId>
> <name>Example Device 1</name>
> </device>
> - <device>
>
> <deviceId>WSN-Module-8F3A-D247-4B99</deviceId>
> <name>WSN CRio Device</name>
> </device>
> </deviceCollection> [/code]
>
> But now I need to convert it to take the data from a
> different xml set up
> that looks like this:
>
> [code] - <measurementProject>
> <projectId>1</projectId>
> <name>matt</name>
> <permissions class="java.util.ArrayList" />
> <devices class="java.util.ArrayList" />
> <channels class="java.util.ArrayList" />
>
> </measurementProject> [/code]
>
> But when I did so I get this exception:
>
> [code]org.simpleframework.xml.core.InstantiationException:
> Type class
> java.util.ArrayList is not compatible with class
> java.lang.String
> at
> org.simpleframework.xml.core.Factory.getOverride(Factory.java:105)
> at
> org.simpleframework.xml.core.PrimitiveFactory.getInstance(PrimitiveFactory.java:66)
> at
> org.simpleframework.xml.core.Primitive.readElement(Primitive.java:181)
> at
> org.simpleframework.xml.core.Primitive.read(Primitive.java:119)
> at
> org.simpleframework.xml.core.Composite.readObject(Composite.java:520)
> at
> org.simpleframework.xml.core.Composite.read(Composite.java:477)
> at
> org.simpleframework.xml.core.Composite.readElement(Composite.java:458)
> at
> org.simpleframework.xml.core.Composite.readElements(Composite.java:374)
> at
> org.simpleframework.xml.core.Composite.read(Composite.java:259)
> at
> org.simpleframework.xml.core.Composite.read(Composite.java:204)
> at
> org.simpleframework.xml.core.Composite.read(Composite.java:158)
> at
> org.simpleframework.xml.core.Composite.read(Composite.java:135)
> at
> org.simpleframework.xml.core.Traverser.read(Traverser.java:78)
> at
> org.simpleframework.xml.core.CompositeInlineList.read(CompositeInlineList.java:182)
> at
> org.simpleframework.xml.core.CompositeInlineList.read(CompositeInlineList.java:159)
> at
> org.simpleframework.xml.core.CompositeInlineList.read(CompositeInlineList.java:117)
> at
> org.simpleframework.xml.core.Composite.readObject(Composite.java:520)
> at
> org.simpleframework.xml.core.Composite.read(Composite.java:477)
> at
> org.simpleframework.xml.core.Composite.readElement(Composite.java:458)
> at
> org.simpleframework.xml.core.Composite.readElements(Composite.java:374)
> at
> org.simpleframework.xml.core.Composite.read(Composite.java:259)
> at
> org.simpleframework.xml.core.Composite.read(Composite.java:204)
> at
> org.simpleframework.xml.core.Composite.read(Composite.java:158)
> at
> org.simpleframework.xml.core.Composite.read(Composite.java:135)
> at
> org.simpleframework.xml.core.Traverser.read(Traverser.java:78)
> at
> org.simpleframework.xml.core.Persister.read(Persister.java:544)
> at
> org.simpleframework.xml.core.Persister.read(Persister.java:526)
> at
> org.simpleframework.xml.core.Persister.read(Persister.java:507)
> at
> org.simpleframework.xml.core.Persister.read(Persister.java:489)
> at
> org.simpleframework.xml.core.Persister.read(Persister.java:471)
> at
> org.simpleframework.xml.core.Persister.read(Persister.java:452)
> at
> projectContainer.MeasurementProjectCollectionXMLAO.readXML(MeasurementProjectCollectionXMLAO.java:17)
> at
> testContainer.ProjectTreeTest.loadProjectNodes(ProjectTreeTest.java:34)
> at
> testContainer.TempMain.main(TempMain.java:11)
> [/code]
>
> So it is obvious that ther is a problem with parsing this
> new xml due to the
> fact it has these three lines:
>
> [code] <permissions
> class="java.util.ArrayList" />
> <devices class="java.util.ArrayList" />
> <channels class="java.util.ArrayList" />
> [/code]
>
> Things were fine when it was only parsing Strings, but
> there is a problem
> with the parsing of the ArrayLists.
> I'm not sure where to look to find the problem and how to
> solve it honestly.
> If I were to guess I would say there will need to be a
> change made to:
>
> [code]public class MeasurementProjectCollectionXMLAO {
>
> public MeasurementProjectCollection
> readXML(InputStream xml) {
> Serializer serializer =
> new Persister();
>
>
> MeasurementProjectCollection measurementProjectCollection =
> null;
> try {
>
> measurementProjectCollection =
> serializer.read(MeasurementProjectCollection.class, xml);
> } catch (Exception e)
> {
> //
> TODO Auto-generated catch block
>
> e.printStackTrace();
> }
> try {
>
> xml.close();
> } catch (IOException
> e) {
> //
> TODO Auto-generated catch block
>
> e.printStackTrace();
> }
> return
> measurementProjectCollection;
> } [/code]
>
>
> But I really do not know where. If it is any help,
> here is the class that
> calls the xml parser, and then loads the values to a
> list.
>
>
> [code]public void loadProjectNodes() {
>
>
>
> MeasurementProjectCollectionXMLAO access = new
> MeasurementProjectCollectionXMLAO();
> ProjectHttpClient
> method = new ProjectHttpClient();
> MeasurementProjectCollection
> measurementProjectCollection = null;
>
>
>
> try {
>
> measurementProjectCollection =
> access.readXML(method.Response(null));
> }
> catch (Exception e) {
>
> // TODO Auto-generated catch block
>
> e.printStackTrace();
> }
>
>
>
> //System.out.println("printing deviceCollection =
> access.readXML(method.getResponseBodyAsStream(null));: "
>
> //+ deviceCollection.toString());
>
>
> for
> (MeasurementProject measurementProject :
> measurementProjectCollection.getMeasurementProjects()){
> String
> x = measurementProject.getName();
>
> projectNameList.add(x);
>
> //System.out.println(ids);
> }
>
>
> }
>
> public List<String>
> getProjectNameList() {
> //loadNodes();
> return
> projectNameList;
> }
>
> public void
> setProjectnameList(List<String>
> projectNameList) {
> this.projectNameList
> = projectNameList;
> }
>
> public void print(){
>
> System.out.println("Printing projectNameList values:
> "+projectNameList);
> }
> } [/code]
>
> As soon as I try to call loadProjectNodes I get that
> exception though.
>
> I have to get this working by Tuesday. May seem like
> plenty of time but
> with my track record on these kind of things...
> --
> View this message in context: http://www.nabble.com/had-parsing-working-for-strings%2C-but-now-need-to-do-so-for-ArrayList-tp23896552p23896552.html
> Sent from the Simple XML Serialization mailing list archive
> at Nabble.com.
>
>
> ------------------------------------------------------------------------------
> OpenSolaris 2009.06 is a cutting edge operating system for
> enterprises
> looking to deploy the next generation of Solaris that
> includes the latest
> innovations from Sun and the OpenSource community. Download
> a copy and
> enjoy capabilities such as Networking, Storage and
> Virtualization.
> Go to: http://p.sf.net/sfu/opensolaris-get
> _______________________________________________
> Simple-support mailing list
> Sim...@li...
> https://lists.sourceforge.net/lists/listinfo/simple-support
>
|