[Simple-support] had parsing working for strings, but now need to do so for ArrayList
Brought to you by:
niallg
|
From: meghiddo <mat...@ho...> - 2009-06-05 22:32:46
|
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.
|