Reputation: 387
I keep getting this error when I try to marshall an xml file into POJO's using xstream, im not sure what is going on , could do with a fresh eye to look at things.
Exception in thread "main" com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$UnknownFieldException: No such field org.smurk.webtest.domain.Attribute.class-title
---- Debugging information ----
field : class-title
class : org.smurk.webtest.domain.Attribute
required-type : org.smurk.webtest.domain.Attribute
converter-type : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
path : /classification/attributes/attribute/class-title
line number : 1
class[1] : org.smurk.webtest.domain.Attributes
class[2] : org.smurk.webtest.domain.Classification
version : 1.4.6
-------------------------------
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.handleUnknownField(AbstractReflectionConverter.java:495)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:351)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:257)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:474)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:406)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:257)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:474)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:406)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:257)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50)
at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:134)
at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1157)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1141)
at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1012)
at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1003)
at org.smurk.webtest.XmlRead.parseFile(XmlRead.java:31)
at org.smurk.webtest.Main.main(Main.java:15)
These are the relevant domain objects:
@XStreamAlias("attribute")
public class Attribute {
@XStreamAlias("class-title")
private ClassTitle classTitle;
@XStreamAlias("type")
private String type;
public ClassTitle getClassTitle() {
return classTitle;
}
public void setClassTitle(ClassTitle classTitle) {
this.classTitle = classTitle;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
@XStreamAlias("class-title")
public class ClassTitle {
@XStreamAlias("title-part")
private TitlePart titlePart;
public TitlePart getTitlePart() {
return titlePart;
}
public void setTitlePart(TitlePart titlePart) {
this.titlePart = titlePart;
}
}
this is the xml:
<classification symbol="A01B1/00" level="7" additional-only="false" status="PUBLISHED">
<attributes>
<attribute type="TITLES">
<class-title>
<title-part>
<text scheme="ipc">Hand tools</text>
<explanation>
<text scheme="ipc"> edge trimmers for lawns <class-ref scheme="cpc">A01G3/06</class-ref> ; </text>
<comment>
<text scheme="cpc"> machines for working soil <class-ref scheme="cpc">A01B35/00</class-ref> ; making hand tools <class-ref scheme="cpc">B21D</class-ref>
</text>
</comment>
</explanation>
</title-part>
</class-title>
</attribute>
</attributes>
</>
Upvotes: 3
Views: 6256
Reputation: 857
For me, i added below line to get rid of the exception:
xStream.ignoreUnknownElements();
Upvotes: 1
Reputation: 387
Just to answer the question, it seems I had some XStream annotation wrong in a parent class, this was causing an error further down the hierarchy.
Upvotes: 1