Can you make a JUnit test for that failing?
On Fri, Sep 19, 2014 at 6:32 AM, Petr Adamec <[email protected]>
wrote:
>
> Good morning,
> I have a problem with convert from xml to data (unmarshall) when I use xml
> which has unknown tags. Xstream write me Exception in thread "main"
> com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$UnknownFieldException:
> No such field.
> I was looking for solution for my problem on internet. I find some it but
> all of them do not working on my case.
>
> I override method wrapMapper but it still no working.
>
> XStream xstream = new XStream() {
>
> // to enable ignoring of unknown elements
>
> @Override
>
> protected MapperWrapper wrapMapper(MapperWrapper next) {
>
> return new MapperWrapper(next) {
>
> @Override
>
> public boolean shouldSerializeMember(Class definedIn,
> String fieldName) {
>
> if (definedIn == Object.class) {
>
> try {
>
> return this.realClass(fieldName) != null;
>
> } catch (Exception e) {
>
> return false;
>
> }
>
> }
>
> return super.shouldSerializeMember(definedIn,
> fieldName);
>
> }
>
> };
>
> }
>
> };
>
>
>
> Is it maybe because I have a collection at class. But every options which
> I try not works.
>
> My class which I need convert to/from is
>
> public class Configurations implements Serializable{
>
> private static final long serialVersionUID = 4392719277296957995L;
>
> private List<Class<? extends Updatable>> tableNames;
>
> private Map<Class<? extends Updatable>, List<? extends Updatable>> tables;
>
> ...
>
> }
>
>
> Updatable is only interface. I need convert to/from xml every class which
> implements this interface.
>
> In normal case, when I has right xml (get from marshell data) it is ok. I
> can convert data to this xml and xml back to data.
>
> <mypackage.Configurations>
>
> <tableNames>
>
> <java-class>mypackage.configuration.MyClass</java-class>
>
> </tableNames>
>
> <tables>
>
> <entry>
>
> <java-class>mypackage.configuration.MyClass</java-class>
>
> <list>
>
> <mypackage.configuration.MyClass>
>
> <id>0</id>
>
> <created>2014-09-19 08:49:34.649 UTC</created>
>
> <active>true</active>
>
> </mypackage.configuration.MyClass>
>
> </list>
>
> </entry>
>
> </tables>
>
> </mypackage.Configurations>
>
>
> But when I change xml (forr example add new tag newTag)
>
> <mypackage.Configurations>
>
> <tableNames>
>
> <java-class>mypackage.configuration.MyClass</java-class>
>
> </tableNames>
>
> <tables>
>
> <entry>
>
> <java-class>mypackage.configuration.MyClass</java-class>
>
> <list>
>
> <mypackage.configuration.MyClass>
>
> <id>0</id>
>
> <created>2014-09-19 08:49:34.649 UTC</created>
>
> <active>true</active>
>
> <newTag>exam</newTag>
>
> </mypackage.configuration.MyClass>
>
> </list>
>
> </entry>
>
> </tables>
>
> </mypackage.Configurations>
>
>
> Xstream ends with error AbstractReflectionConverter$UnknownFieldException:
> No such field. Is exists solution how can I solve this problem? I need
> convert to data (class) and if xml has unknown tags which does not exist at
> class, logg some message and skip tag.
>
> Thank you for your answer.
>
>
> Best Regards
> Petr
>
>
>
>
>
>