Converting an object back from XML

classic Classic list List threaded Threaded
13 messages Options
Reply | Threaded
Open this post in threaded view
|

Converting an object back from XML

Dale Ellis

Hi all,

 

I’m facing an issue at the moment with xstream which I have pin pointed the problem.

 

I have an object called CaseType. What happens is I convert the object to xml, when I strip out all the id attributes and then convert it back. What happens is that depending on the case type object,  the fromXML() method just hangs forever.

 

The Code…

 

        // Remove all the ID's

        log.debug("Null all the ids");

        String xml = parser.toXML(contentObject);

        String idPattern = "<id>(.+?)</id>";

        xml = xml.replaceAll(idPattern, "");

 

        log.debug("Checking that export ("+ contentObject.getClass() +") data can be re-imported");

        Object testObject = parser.fromXML(xml);

        log.debug("Object (" + testObject.getClass() + ") Successfully imported back");

 

so the parser.fromXML() method hangs. If I remove the 2 lines that replace the id’s it works fine…

 

        // Remove all the ID's

        log.debug("Null all the ids");

        String xml = parser.toXML(contentObject);

 

        log.debug("Checking that export ("+ contentObject.getClass() +") data can be re-imported");

        Object testObject = parser.fromXML(xml);

        log.debug("Object (" + testObject.getClass() + ") Successfully imported back");

 

In the main, removing the ID’s doesn’t cause an issue but for some CaseType objects it does. Looking into the xstream source there doesn’t seem to be any debug I can turn on to better understand why is happening, I did start to step it, but looks to recursively call and I wasn’t really following the flow.

 

I have attached to xml files, one is the xml with the ID’s striped out, the other without (which works), using a compare tool, the XML looks exactly what I’d expect, can anyone suggest what is going on? For completeness here is the XStream object (parser variable) ….

 

    protected XStream getCaseTypeParser() {

        XStream xStream = new XStream();

 

        xStream.alias("caseType", CaseType.class);

        xStream.alias("template", CaseTypeTemplate.class);

        xStream.alias("templateIndex", CaseTypeTemplateIndex.class);

        xStream.alias("templateIndexData", CaseTypeTemplateIndexData.class);

        xStream.alias("caseTypeLink", CaseTypeLink.class);

        xStream.alias("stage", StageDefinition.class);

        xStream.alias("stageTransition", StageTransitionDefinition.class);

        xStream.alias("stageTransitionCondition", StageTransitionCondition.class);

        xStream.alias("stageTransitionAction", StageTransitionAction.class);

        xStream.alias("stageField", StageFieldDefinition.class);

        xStream.alias("action", CaseTypeAction.class);

        xStream.alias("task", TaskDefinition.class);

        xStream.alias("field", CaseTypeFieldConfig.class);

        xStream.alias("userValueListRule", UserValueListRule.class);

        xStream.alias("taskTypeAction", TaskTypeAction.class);

        xStream.alias("participantType", CaseTypeParticipantType.class);

        xStream.alias("interactionType", InteractionType.class);

 

        return xStream;

    }

 

Thanks

 

Dale Ellis

        

Senior Developer

   

Serengeti Systems

Part of the Netcall group

 

 

 

 

 

 

 

 



---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email

Compare XMLs.zip (63K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Converting an object back from XML

Jörg Schaible-3
Hello Dale,

which version of XStream are you using? What JDK (vendor and version)? Can
you paste the output of:

================ %< ==============
$ java -cp xstream-<VERSION>.jar com.thoughtworks.xstream.core.JVM
================ %< ==============

Basically I see no reason, why a field "id" should be problematic in any
way.

I can see quite a lot "sorted-set" types in the XML which are mapped to
java.util.TreeSet. What is the sort criteria, e.g. for StageFieldDefinition?
Just for looking at the XML it is not obvious. At least it is neither "id"
nor "sequence". Is it the name that is used in the compareTo method?

Regards,
Jörg


Dale Ellis wrote:

> Hi all,
>
> I'm facing an issue at the moment with xstream which I have pin pointed
> the problem.
>
> I have an object called CaseType. What happens is I convert the object to
> xml, when I strip out all the id attributes and then convert it back. What
> happens is that depending on the case type object,  the fromXML() method
> just hangs forever.
>
> The Code...
>
>         // Remove all the ID's
>         log.debug("Null all the ids");
>         String xml = parser.toXML(contentObject);
>         String idPattern = "<id>(.+?)</id>";
>         xml = xml.replaceAll(idPattern, "");
>
>         log.debug("Checking that export ("+ contentObject.getClass() +")
>         data can be re-imported"); Object testObject =
>         parser.fromXML(xml); log.debug("Object (" + testObject.getClass()
>         + ") Successfully imported back");
>
> so the parser.fromXML() method hangs. If I remove the 2 lines that replace
> the id's it works fine...
>
>         // Remove all the ID's
>         log.debug("Null all the ids");
>         String xml = parser.toXML(contentObject);
>
>         log.debug("Checking that export ("+ contentObject.getClass() +")
>         data can be re-imported"); Object testObject =
>         parser.fromXML(xml); log.debug("Object (" + testObject.getClass()
>         + ") Successfully imported back");
>
> In the main, removing the ID's doesn't cause an issue but for some
> CaseType objects it does. Looking into the xstream source there doesn't
> seem to be any debug I can turn on to better understand why is happening,
> I did start to step it, but looks to recursively call and I wasn't really
> following the flow.
>
> I have attached to xml files, one is the xml with the ID's striped out,
> the other without (which works), using a compare tool, the XML looks
> exactly what I'd expect, can anyone suggest what is going on? For
> completeness here is the XStream object (parser variable) ....
>
>     protected XStream getCaseTypeParser() {
>         XStream xStream = new XStream();
>
>         xStream.alias("caseType", CaseType.class);
>         xStream.alias("template", CaseTypeTemplate.class);
>         xStream.alias("templateIndex", CaseTypeTemplateIndex.class);
>         xStream.alias("templateIndexData",
>         CaseTypeTemplateIndexData.class); xStream.alias("caseTypeLink",
>         CaseTypeLink.class); xStream.alias("stage",
>         StageDefinition.class); xStream.alias("stageTransition",
>         StageTransitionDefinition.class);
>         xStream.alias("stageTransitionCondition",
>         StageTransitionCondition.class);
>         xStream.alias("stageTransitionAction",
>         StageTransitionAction.class); xStream.alias("stageField",
>         StageFieldDefinition.class); xStream.alias("action",
>         CaseTypeAction.class); xStream.alias("task",
>         TaskDefinition.class); xStream.alias("field",
>         CaseTypeFieldConfig.class); xStream.alias("userValueListRule",
>         UserValueListRule.class); xStream.alias("taskTypeAction",
>         TaskTypeAction.class); xStream.alias("participantType",
>         CaseTypeParticipantType.class); xStream.alias("interactionType",
>         InteractionType.class);
>
>         return xStream;
>     }
>
> Thanks
>
> Dale Ellis
>
>
>
> Senior Developer
>
>
>
> Serengeti Systems
>
> Part of the Netcall group



---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply | Threaded
Open this post in threaded view
|

Re: Converting an object back from XML

Dale Ellis
Thanks for your replies guys,

Apologies, should of thought to include version information.

I'm using JDK 1.6 and xstream is version 1.4.5, pulled in via maven dependency...

        <dependency>
            <groupId>com.thoughtworks.xstream</groupId>
            <artifactId>xstream</artifactId>
            <version>1.4.5</version>
        </dependency>

It did occur to me too that it might be related to the sets, maybe a compareTo() method is referencing an ID attribute which is getting it in a muddle but the ones I checked yesterday seem to order by sequence attributes or name attributes, I'll look further.

Also, I'll try different mode and see what happens, and let you know, hopefully will solve issue.

Thanks,
Dale

-----Original Message-----
From: Ken Campbell [mailto:[hidden email]]
Sent: 07 November 2013 10:49
To: [hidden email]
Cc: Dale Ellis
Subject: RE: [xstream-user] Re: Converting an object back from XML

Hi Dale

Have you tested with different XStream modes? You are using relative paths and nothing has a unique identifier after you strip them out. The ID mode might solve your problem.

Regards
Ken

-----Original Message-----
From: Jörg Schaible [mailto:[hidden email]]
Sent: 07 November 2013 10:23
To: [hidden email]
Subject: [xstream-user] Re: Converting an object back from XML

Hello Dale,

which version of XStream are you using? What JDK (vendor and version)? Can you paste the output of:

================ %< ==============
$ java -cp xstream-<VERSION>.jar com.thoughtworks.xstream.core.JVM ================ %< ==============

Basically I see no reason, why a field "id" should be problematic in any way.

I can see quite a lot "sorted-set" types in the XML which are mapped to java.util.TreeSet. What is the sort criteria, e.g. for StageFieldDefinition?
Just for looking at the XML it is not obvious. At least it is neither "id"
nor "sequence". Is it the name that is used in the compareTo method?

Regards,
Jörg


Dale Ellis wrote:

> Hi all,
>
> I'm facing an issue at the moment with xstream which I have pin
> pointed the problem.
>
> I have an object called CaseType. What happens is I convert the object
> to xml, when I strip out all the id attributes and then convert it
> back. What happens is that depending on the case type object,  the
> fromXML() method just hangs forever.
>
> The Code...
>
>         // Remove all the ID's
>         log.debug("Null all the ids");
>         String xml = parser.toXML(contentObject);
>         String idPattern = "<id>(.+?)</id>";
>         xml = xml.replaceAll(idPattern, "");
>
>         log.debug("Checking that export ("+ contentObject.getClass() +")
>         data can be re-imported"); Object testObject =
>         parser.fromXML(xml); log.debug("Object (" + testObject.getClass()
>         + ") Successfully imported back");
>
> so the parser.fromXML() method hangs. If I remove the 2 lines that
> replace the id's it works fine...
>
>         // Remove all the ID's
>         log.debug("Null all the ids");
>         String xml = parser.toXML(contentObject);
>
>         log.debug("Checking that export ("+ contentObject.getClass() +")
>         data can be re-imported"); Object testObject =
>         parser.fromXML(xml); log.debug("Object (" + testObject.getClass()
>         + ") Successfully imported back");
>
> In the main, removing the ID's doesn't cause an issue but for some
> CaseType objects it does. Looking into the xstream source there
> doesn't seem to be any debug I can turn on to better understand why is
> happening, I did start to step it, but looks to recursively call and I
> wasn't really following the flow.
>
> I have attached to xml files, one is the xml with the ID's striped
> out, the other without (which works), using a compare tool, the XML
> looks exactly what I'd expect, can anyone suggest what is going on?
> For completeness here is the XStream object (parser variable) ....
>
>     protected XStream getCaseTypeParser() {
>         XStream xStream = new XStream();
>
>         xStream.alias("caseType", CaseType.class);
>         xStream.alias("template", CaseTypeTemplate.class);
>         xStream.alias("templateIndex", CaseTypeTemplateIndex.class);
>         xStream.alias("templateIndexData",
>         CaseTypeTemplateIndexData.class); xStream.alias("caseTypeLink",
>         CaseTypeLink.class); xStream.alias("stage",
>         StageDefinition.class); xStream.alias("stageTransition",
>         StageTransitionDefinition.class);
>         xStream.alias("stageTransitionCondition",
>         StageTransitionCondition.class);
>         xStream.alias("stageTransitionAction",
>         StageTransitionAction.class); xStream.alias("stageField",
>         StageFieldDefinition.class); xStream.alias("action",
>         CaseTypeAction.class); xStream.alias("task",
>         TaskDefinition.class); xStream.alias("field",
>         CaseTypeFieldConfig.class); xStream.alias("userValueListRule",
>         UserValueListRule.class); xStream.alias("taskTypeAction",
>         TaskTypeAction.class); xStream.alias("participantType",
>         CaseTypeParticipantType.class); xStream.alias("interactionType",
>         InteractionType.class);
>
>         return xStream;
>     }
>
> Thanks
>
> Dale Ellis
>
>
>
> Senior Developer
>
>
>
> Serengeti Systems
>
> Part of the Netcall group



---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email



This message was scanned at Thursday, November 7, 2013 10:23:22 AM GMT by Trend Micro IMHS on behalf of White Clarke Group

This message was scanned by Symantec Messaging Gateway at White Clarke Group - www.whiteclarkegroup.com.

White Clarke Group Ltd - Registered in England - Registered number 03435619.
Registered address: 26 Red Lion Square, London, WC1R 4AG.


This message was scanned at Thursday, November 7, 2013 10:48:44 AM GMT by Trend Micro IMHS on behalf of White Clarke Group - www.whiteclarkegroup.com.

White Clarke Group Ltd - Registered in England - Registered number 03435619.
Registered address: 26 Red Lion Square, London, WC1R 4AG.
Reply | Threaded
Open this post in threaded view
|

RE: Re: Converting an object back from XML

Jörg Schaible-3
Hello Dale,

Dale Ellis wrote:

> Thanks for your replies guys,
>
> Apologies, should of thought to include version information.
>
> I'm using JDK 1.6 and xstream is version 1.4.5, pulled in via maven
> dependency...
>
>         <dependency>
>             <groupId>com.thoughtworks.xstream</groupId>
>             <artifactId>xstream</artifactId>
>             <version>1.4.5</version>
>         </dependency>
>
> It did occur to me too that it might be related to the sets, maybe a
> compareTo() method is referencing an ID attribute which is getting it in a
> muddle but the ones I checked yesterday seem to order by sequence
> attributes or name attributes, I'll look further.

If the TreeSetConverter can use its optimized mode, then the compareTo is
not called, but I cannot know without knowing Java version and vendor. For
your environment it should work without.
 
> Also, I'll try different mode and see what happens, and let you know,
> hopefully will solve issue.

For ID mode you have to set a system alias for "id", because you have
members of this name on your own. At least it will strip down the long
references at the end of your file to a plain number.

- Jörg


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply | Threaded
Open this post in threaded view
|

RE: Re: Converting an object back from XML

Dale Ellis
Thanks Jorg for your help...

Just run that line you asked for....

C:\Users\dale.ellis.SKY>java -cp M:\com\thoughtworks\xstream\xstream\1.4.5\xstream-1.4.5.jar com.thoughtworks.xstream.core.JVM
XStream JVM diagnostics
java.specification.version: 1.6
java.specification.vendor: Sun Microsystems Inc.
java.specification.name: Java Platform API Specification
java.vm.vendor: Sun Microsystems Inc.
java.vendor: Sun Microsystems Inc.
java.vm.name: Java HotSpot(TM) 64-Bit Server VM
Version: 1.6
XStream support for enhanced Mode: true
Supports AWT: true
Supports Swing: true
Supports SQL: true
Standard StAX XMLInputFactory: com.sun.xml.internal.stream.XMLInputFactoryImpl
Standard StAX XMLOutputFactory: com.sun.xml.internal.stream.XMLOutputFactoryImpl
Optimized TreeSet.addAll: true
Optimized TreeMap.putAll: true
Can parse UTC date format: true
Reverse field order detected (only if JVM class itself has been compiled): false

I just tried the IS references mode, not exactly sure what I was doing, but seemed to generate the xml with ids instead of the xpath's so guess it worked ok

        xStream.setMode(XStream.ID_REFERENCES);
        xStream.aliasSystemAttribute("xstreamId", "xstreamId");

Still have the same issue though, stripping out the <id>'s freezes for fromXml() still :o(

Any other suggestions?, I'm going to have a look through the xstream documentation to try get a better understanding of whats going on, I'm wondering if I can write a custom converter to strip out id values, all objects with the id extend AbstractEntity so maybe I can do something with that.

Thanks
Dale Ellis

-----Original Message-----
From: Jörg Schaible [mailto:[hidden email]]
Sent: 07 November 2013 11:48
To: [hidden email]
Subject: [xstream-user] RE: Re: Converting an object back from XML

Hello Dale,

Dale Ellis wrote:

> Thanks for your replies guys,
>
> Apologies, should of thought to include version information.
>
> I'm using JDK 1.6 and xstream is version 1.4.5, pulled in via maven
> dependency...
>
>         <dependency>
>             <groupId>com.thoughtworks.xstream</groupId>
>             <artifactId>xstream</artifactId>
>             <version>1.4.5</version>
>         </dependency>
>
> It did occur to me too that it might be related to the sets, maybe a
> compareTo() method is referencing an ID attribute which is getting it
> in a muddle but the ones I checked yesterday seem to order by sequence
> attributes or name attributes, I'll look further.

If the TreeSetConverter can use its optimized mode, then the compareTo is not called, but I cannot know without knowing Java version and vendor. For your environment it should work without.
 
> Also, I'll try different mode and see what happens, and let you know,
> hopefully will solve issue.

For ID mode you have to set a system alias for "id", because you have members of this name on your own. At least it will strip down the long references at the end of your file to a plain number.

- Jörg


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply | Threaded
Open this post in threaded view
|

RE: RE: Re: Converting an object back from XML

Jörg Schaible-3
Hi Dale,

Dale Ellis wrote:

> Thanks Jorg for your help...
>
> Just run that line you asked for....
>
> C:\Users\dale.ellis.SKY>java -cp
> M:\com\thoughtworks\xstream\xstream\1.4.5\xstream-1.4.5.jar
> com.thoughtworks.xstream.core.JVM XStream JVM diagnostics
> java.specification.version: 1.6 java.specification.vendor: Sun
> Microsystems Inc. java.specification.name: Java Platform API Specification
> java.vm.vendor: Sun Microsystems Inc.
> java.vendor: Sun Microsystems Inc.
> java.vm.name: Java HotSpot(TM) 64-Bit Server VM
> Version: 1.6
> XStream support for enhanced Mode: true
> Supports AWT: true
> Supports Swing: true
> Supports SQL: true
> Standard StAX XMLInputFactory:
> com.sun.xml.internal.stream.XMLInputFactoryImpl Standard StAX
> XMLOutputFactory: com.sun.xml.internal.stream.XMLOutputFactoryImpl
> Optimized TreeSet.addAll: true Optimized TreeMap.putAll: true
> Can parse UTC date format: true
> Reverse field order detected (only if JVM class itself has been compiled):
> false

It claims that the compareTo methods of your objects should not be called at
deserialization. Can you confirm this?

> I just tried the IS references mode, not exactly sure what I was doing,
> but seemed to generate the xml with ids instead of the xpath's so guess it
> worked ok
>
>         xStream.setMode(XStream.ID_REFERENCES);
>         xStream.aliasSystemAttribute("xstreamId", "xstreamId");

xStream.aliasSystemAttribute("xid", "id");

Just to give XStream's attribute 'id' a different name to avoid any clashes
with your if element.

> Still have the same issue though, stripping out the <id>'s freezes for
> fromXml() still :o(

s/stripping out/keeping/ ??

> Any other suggestions?, I'm going to have a look through the xstream
> documentation to try get a better understanding of whats going on, I'm
> wondering if I can write a custom converter to strip out id values, all
> objects with the id extend AbstractEntity so maybe I can do something with
> that.

Is it with any XML that you deserialize or just with this special one? Can
you try to minimize the objects in your graph to get a minimal number of
objects where this effect happens? When XStream hangs and you stop your
application in the debugger, what's the stack trace i.e. where does it hang?

- Jörg


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply | Threaded
Open this post in threaded view
|

RE: RE: Re: Converting an object back from XML

Dale Ellis
Hi Jorg,

Thanks again for you help, responses to your questions...

> It claims that the compareTo methods of your objects should not be called at deserialization. Can you confirm this?

It is hitting the breakpoints in the compare to methods, example grab from stack trace

btpool0-2@9146, prio=5, in group 'main', status: 'RUNNING'
          at com.serengetisystems.tcrm.domain.AbstractFieldDefinition.compareTo(AbstractFieldDefinition.java:160)
          at com.serengetisystems.tcrm.domain.AbstractFieldDefinition.compareTo(AbstractFieldDefinition.java:16)
          at java.util.TreeMap.put(TreeMap.java:545)
          at java.util.AbstractMap.putAll(AbstractMap.java:256)
          at java.util.TreeMap.putAll(TreeMap.java:304)
          at com.thoughtworks.xstream.converters.collections.TreeMapConverter.populateTreeMap(TreeMapConverter.java:122)
          at com.thoughtworks.xstream.converters.collections.TreeSetConverter.unmarshal(TreeSetConverter.java:94)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:71)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.addCurrentElementToCollection(CollectionConverter.java:98)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:91)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:85)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.unmarshal(CollectionConverter.java:80)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:71)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.addCurrentElementToCollection(CollectionConverter.java:98)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:91)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:85)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.unmarshal(CollectionConverter.java:80)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:71)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.addCurrentElementToCollection(CollectionConverter.java:98)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:91)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:85)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.unmarshal(CollectionConverter.java:80)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:71)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.addCurrentElementToCollection(CollectionConverter.java:98)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:91)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:85)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.unmarshal(CollectionConverter.java:80)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:71)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.addCurrentElementToCollection(CollectionConverter.java:98)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:91)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:85)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.unmarshal(CollectionConverter.java:80)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:71)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.addCurrentElementToCollection(CollectionConverter.java:98)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:91)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:85)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.unmarshal(CollectionConverter.java:80)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:71)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.addCurrentElementToCollection(CollectionConverter.java:98)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:91)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:85)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.unmarshal(CollectionConverter.java:80)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:71)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.addCurrentElementToCollection(CollectionConverter.java:98)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:91)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:85)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.unmarshal(CollectionConverter.java:80)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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:1156)
          at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1140)
          at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1011)
          at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1002)
          at com.serengetisystems.tcrm.service.CaseTypeExportService.addToZip(CaseTypeExportService.java:412)

Also added, couple of debug lines in the CompareTo() methods and it seems its Abstract Field that keeps getting called although debug seems to stop, unless Im just not waiting long enough...

Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Withdraw Case?, name2 = Detail for FLA01 Further Information Request]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Withdraw Case?, name2 = Reason returned form Digitisation]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Digitisation complete?, name2 = Additional information]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, provide reason, name2 = Additional information]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, provide reason, name2 = Digitisation complete?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Map acceptable?, name2 = Digitisation complete?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Map acceptable?, name2 = If No, provide reason]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Date of Assessment?, name2 = Assessment Notes]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Recommendation, name2 = Assessment Notes]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Recommendation, name2 = Date of Assessment?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Type of Assessment?, name2 = Date of Assessment?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Type of Assessment?, name2 = Recommendation]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 2, name2 = Consult 1]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 3, name2 = Consult 1]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 3, name2 = Consult 2]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 4, name2 = Consult 2]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 4, name2 = Consult 3]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 5, name2 = Consult 2]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 5, name2 = Consult 3]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 5, name2 = Consult 4]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 6, name2 = Consult 2]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 6, name2 = Consult 4]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 6, name2 = Consult 5]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 7, name2 = Consult 2]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 7, name2 = Consult 4]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 7, name2 = Consult 5]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 7, name2 = Consult 6]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 8, name2 = Consult 2]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 8, name2 = Consult 4]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 8, name2 = Consult 6]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 8, name2 = Consult 7]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 1, name2 = Consult 4]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 1, name2 = Consult 6]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 1, name2 = Consult 7]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 1, name2 = Consult 8]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 2, name2 = Consult 4]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 2, name2 = Consult 6]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 2, name2 = Consult 8]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 2, name2 = Notify 1]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 3, name2 = Consult 4]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 3, name2 = Consult 6]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 3, name2 = Consult 8]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 3, name2 = Notify 1]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 3, name2 = Notify 2]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 4, name2 = Consult 4]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 4, name2 = Consult 6]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 4, name2 = Consult 8]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 4, name2 = Notify 2]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 4, name2 = Notify 3]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Period of Licence (years)?, name2 = Consult 4]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Period of Licence (years)?, name2 = Consult 8]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Period of Licence (years)?, name2 = Notify 2]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Period of Licence (years)?, name2 = Notify 3]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Period of Licence (years)?, name2 = Notify 4]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Proceed to Consultation?, name2 = Consult 4]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Proceed to Consultation?, name2 = Consult 8]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Proceed to Consultation?, name2 = Notify 2]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Proceed to Consultation?, name2 = Notify 4]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Proceed to Consultation?, name2 = Period of Licence (years)?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consultation End Date, name2 = Applicant Response to conditions?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consultation Responses, name2 = Applicant Response to conditions?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consultation Responses, name2 = Consultation End Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Proceed to Draft Licence?, name2 = Consultation End Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Proceed to Draft Licence?, name2 = Consultation Responses]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notes, name2 = Approving Officer]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Proceed to formal Approval?, name2 = Approving Officer]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Proceed to formal Approval?, name2 = Notes]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Returned from approval notes, name2 = Notes]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Returned from approval notes, name2 = Proceed to formal Approval?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If Other, provide details, name2 = Approve Licence?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If approving Deforestation, provide reason, name2 = Approve Licence?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If approving Deforestation, provide reason, name2 = If Other, provide details]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If not Approving, provide reason, name2 = If Other, provide details]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If not Approving, provide reason, name2 = If approving Deforestation, provide reason]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Do you believe conditions have been met?, name2 = 2nd Restock Inspection Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Further Detail, name2 = 2nd Restock Inspection Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Further Detail, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Have you inspected this case?, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Have you inspected this case?, name2 = Further Detail]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, provide 2nd Restock Extension Date, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, provide 2nd Restock Extension Date, name2 = Further Detail]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, provide 2nd Restock Extension Date, name2 = Have you inspected this case?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = Have you inspected this case?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = If No, provide 2nd Restock Extension Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Do you believe conditions have been met?, name2 = 3rd Restock Inspection Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Further Detail, name2 = 3rd Restock Inspection Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Further Detail, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Have you inspected this case?, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Have you inspected this case?, name2 = Further Detail]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, provide Final Restock Extension Date, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, provide Final Restock Extension Date, name2 = Further Detail]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, provide Final Restock Extension Date, name2 = Have you inspected this case?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = Have you inspected this case?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = If No, provide Final Restock Extension Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Do you believe conditions have been met?, name2 = Corrective Action Required]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Further Detail, name2 = Corrective Action Required]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Further Detail, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Have you inspected this case?, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Have you inspected this case?, name2 = Further Detail]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, provide Maintenance Extension Date, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, provide Maintenance Extension Date, name2 = Further Detail]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, provide Maintenance Extension Date, name2 = Have you inspected this case?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Inspection Date, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Inspection Date, name2 = Have you inspected this case?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Inspection Date, name2 = If No, provide Maintenance Extension Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Further Detail, name2 = Do you believe conditions have now been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Have you inspected this case?, name2 = Do you believe conditions have now been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Have you inspected this case?, name2 = Further Detail]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, proceed to Enforcement, name2 = Further Detail]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, proceed to Enforcement, name2 = Have you inspected this case?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Inspection Date, name2 = Further Detail]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Inspection Date, name2 = Have you inspected this case?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Inspection Date, name2 = If No, proceed to Enforcement]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Enforcement Date, name2 = Do you believe conditions have now been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Enforcement Notes, name2 = Do you believe conditions have now been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Enforcement Notes, name2 = Enforcement Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Extension Period (months), name2 = Enforcement Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Extension Period (months), name2 = Enforcement Notes]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = Enforcement Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = Enforcement Notes]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = Extension Period (months)]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Final Restock Inspection Date, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Further Detail, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Further Detail, name2 = Final Restock Inspection Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Have you inspected this case?, name2 = Final Restock Inspection Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Have you inspected this case?, name2 = Further Detail]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, proceed to Enforcement, name2 = Final Restock Inspection Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, proceed to Enforcement, name2 = Further Detail]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, proceed to Enforcement, name2 = Have you inspected this case?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = Final Restock Inspection Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = Have you inspected this case?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = If No, proceed to Enforcement]
Thu Nov 07 14:38:37 GMT 2013 - Stage Compare [name1 = Condition 58, name2 = Condition 57]
Thu Nov 07 14:38:37 GMT 2013 - Stage Compare [name1 = Condition 59, name2 = Condition 57]
Thu Nov 07 14:38:37 GMT 2013 - Stage Compare [name1 = Condition 59, name2 = Condition 58]
Thu Nov 07 14:38:37 GMT 2013 - Stage Compare [name1 = Condition 60, name2 = Condition 58]
Thu Nov 07 14:38:37 GMT 2013 - Stage Compare [name1 = Condition 60, name2 = Condition 59]
Thu Nov 07 14:38:37 GMT 2013 - Stage Compare [name1 = Condition 61, name2 = Condition 58]
Thu Nov 07 14:38:37 GMT 2013 - Stage Compare [name1 = Condition 61, name2 = Condition 59]
Thu Nov 07 14:38:37 GMT 2013 - Stage Compare [name1 = Condition 61, name2 = Condition 60]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Further Detail, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Have you inspected this case?, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Have you inspected this case?, name2 = Further Detail]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = If No, provide 1st Restock Extension Date, name2 = Further Detail]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = If No, provide 1st Restock Extension Date, name2 = Have you inspected this case?]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = If partially felled, % of licenced area felled, name2 = Further Detail]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = If partially felled, % of licenced area felled, name2 = Have you inspected this case?]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = If partially felled, % of licenced area felled, name2 = If No, provide 1st Restock Extension Date]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Inspection Date, name2 = Further Detail]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Inspection Date, name2 = If No, provide 1st Restock Extension Date]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Inspection Date, name2 = If partially felled, % of licenced area felled]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Related Cases, name2 = Further Detail]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Related Cases, name2 = If No, provide 1st Restock Extension Date]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Related Cases, name2 = If partially felled, % of licenced area felled]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Related Cases, name2 = Inspection Date]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = Further Detail]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = If No, provide 1st Restock Extension Date]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = Inspection Date]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = Related Cases]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Status of licenced area, name2 = If No, provide 1st Restock Extension Date]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Status of licenced area, name2 = Inspection Date]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Status of licenced area, name2 = Related Cases]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Status of licenced area, name2 = Specify Maintenance Inspection Date, if applicable]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Restocking status, name2 = Further Restock Reminder Detail]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Restocking status, name2 = Restock Reminder Detail]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Reason for Closure, name2 = Detail for FLA18 Advise to Withdraw]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Has the Refusal been authorised?, name2 = Approving Officer]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Reason for Refusal, name2 = Approving Officer]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Reason for Refusal, name2 = Has the Refusal been authorised?]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Refusal Details, name2 = Has the Refusal been authorised?]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Refusal Details, name2 = Reason for Refusal]
Thu Nov 07 14:39:53 GMT 2013 - Abstract Field Compare [name1 = Consultation Responses, name2 = Consultation End Date]
Thu Nov 07 14:39:53 GMT 2013 - Abstract Field Compare [name1 = Proceed to Draft Licence?, name2 = Consultation End Date]
Thu Nov 07 14:39:53 GMT 2013 - Abstract Field Compare [name1 = Proceed to Draft Licence?, name2 = Consultation Responses]
Thu Nov 07 14:40:00 GMT 2013 - Abstract Field Compare [name1 = Proceed to Draft Licence?, name2 = Period of Licence (years)?]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 2, name2 = Consult 1]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 3, name2 = Consult 1]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 3, name2 = Consult 2]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 4, name2 = Consult 2]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 4, name2 = Consult 3]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 5, name2 = Consult 2]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 5, name2 = Consult 3]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 5, name2 = Consult 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 6, name2 = Consult 2]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 6, name2 = Consult 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 6, name2 = Consult 5]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 7, name2 = Consult 2]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 7, name2 = Consult 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 7, name2 = Consult 5]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 7, name2 = Consult 6]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 8, name2 = Consult 2]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 8, name2 = Consult 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 8, name2 = Consult 6]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 8, name2 = Consult 7]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 1, name2 = Consult 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 1, name2 = Consult 6]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 1, name2 = Consult 7]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 1, name2 = Consult 8]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 2, name2 = Consult 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 2, name2 = Consult 6]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 2, name2 = Consult 8]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 2, name2 = Notify 1]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 3, name2 = Consult 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 3, name2 = Consult 6]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 3, name2 = Consult 8]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 3, name2 = Notify 1]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 3, name2 = Notify 2]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 4, name2 = Consult 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 4, name2 = Consult 6]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 4, name2 = Consult 8]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 4, name2 = Notify 2]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 4, name2 = Notify 3]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Period of Licence (years)?, name2 = Consult 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Period of Licence (years)?, name2 = Consult 8]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Period of Licence (years)?, name2 = Notify 2]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Period of Licence (years)?, name2 = Notify 3]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Period of Licence (years)?, name2 = Notify 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Proceed to Public Register Consultation?, name2 = Consult 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Proceed to Public Register Consultation?, name2 = Consult 8]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Proceed to Public Register Consultation?, name2 = Notify 2]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Proceed to Public Register Consultation?, name2 = Notify 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Proceed to Public Register Consultation?, name2 = Period of Licence (years)?]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Restock Due Date?, name2 = Consult 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Restock Due Date?, name2 = Consult 8]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Restock Due Date?, name2 = Notify 2]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Restock Due Date?, name2 = Notify 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Restock Due Date?, name2 = Period of Licence (years)?]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Restock Due Date?, name2 = Proceed to Public Register Consultation?]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = When do you want Conditions to be sent?, name2 = Consult 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = When do you want Conditions to be sent?, name2 = Consult 8]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = When do you want Conditions to be sent?, name2 = Notify 2]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = When do you want Conditions to be sent?, name2 = Notify 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = When do you want Conditions to be sent?, name2 = Proceed to Public Register Consultation?]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = When do you want Conditions to be sent?, name2 = Restock Due Date?]
Thu Nov 07 14:40:27 GMT 2013 - Abstract Field Compare [name1 = Text to TPO Officer, name2 = TPO Officer]
Thu Nov 07 14:40:27 GMT 2013 - Abstract Field Compare [name1 = TPO Response Detail, name2 = TPO Officer Response]
Thu Nov 07 14:40:42 GMT 2013 - Abstract Field Compare [name1 = EIA Determination Outcome, name2 = EIA Determination Notes]

I've actually been in a meeting for a couple of hours and I had left the fromXML() running, looks like it finished with an error but the stack trace has been lost.

> Is it with any XML that you de-serialize or just with this special one? Can you try to minimize the objects in your graph to get a minimal number of objects where this effect happens? When XStream hangs and you stop your application in the debugger, what's the stack trace i.e. where does it hang?

This is the only CaseType that hangs now, I did have the same issue, serialising more data than I needed so when I cleaned it up it no longer had the issue, so I only have 1 example at the moment

Thanks
Dale Ellis

-----Original Message-----
From: Jörg Schaible [mailto:[hidden email]]
Sent: 07 November 2013 13:48
To: [hidden email]
Subject: [xstream-user] RE: RE: Re: Converting an object back from XML

Hi Dale,

Dale Ellis wrote:

> Thanks Jorg for your help...
>
> Just run that line you asked for....
>
> C:\Users\dale.ellis.SKY>java -cp
> M:\com\thoughtworks\xstream\xstream\1.4.5\xstream-1.4.5.jar
> com.thoughtworks.xstream.core.JVM XStream JVM diagnostics
> java.specification.version: 1.6 java.specification.vendor: Sun
> Microsystems Inc. java.specification.name: Java Platform API
> Specification
> java.vm.vendor: Sun Microsystems Inc.
> java.vendor: Sun Microsystems Inc.
> java.vm.name: Java HotSpot(TM) 64-Bit Server VM
> Version: 1.6
> XStream support for enhanced Mode: true Supports AWT: true Supports
> Swing: true Supports SQL: true Standard StAX XMLInputFactory:
> com.sun.xml.internal.stream.XMLInputFactoryImpl Standard StAX
> XMLOutputFactory: com.sun.xml.internal.stream.XMLOutputFactoryImpl
> Optimized TreeSet.addAll: true Optimized TreeMap.putAll: true Can
> parse UTC date format: true Reverse field order detected (only if JVM
> class itself has been compiled):
> false

It claims that the compareTo methods of your objects should not be called at deserialization. Can you confirm this?

> I just tried the IS references mode, not exactly sure what I was
> doing, but seemed to generate the xml with ids instead of the xpath's
> so guess it worked ok
>
>         xStream.setMode(XStream.ID_REFERENCES);
>         xStream.aliasSystemAttribute("xstreamId", "xstreamId");

xStream.aliasSystemAttribute("xid", "id");

Just to give XStream's attribute 'id' a different name to avoid any clashes with your if element.

> Still have the same issue though, stripping out the <id>'s freezes for
> fromXml() still :o(

s/stripping out/keeping/ ??

> Any other suggestions?, I'm going to have a look through the xstream
> documentation to try get a better understanding of whats going on, I'm
> wondering if I can write a custom converter to strip out id values,
> all objects with the id extend AbstractEntity so maybe I can do
> something with that.

Is it with any XML that you deserialize or just with this special one? Can you try to minimize the objects in your graph to get a minimal number of objects where this effect happens? When XStream hangs and you stop your application in the debugger, what's the stack trace i.e. where does it hang?

- Jörg


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply | Threaded
Open this post in threaded view
|

RE: RE: Re: Converting an object back from XML

Dale Ellis
Think I might have made a bit of a break through,

In my StageTransitionDefinition object, it references, StageTransition, and that compareTo method is....

    @Override
    public int compareTo(StageTransition o) {
        return getId().compareTo(o.getId());
    }

The StageTransition set doesn’t need to there, so I have removed it from StageTransitionDefintion, I'm hoping this is going to resolve the issue, going to test this afternoon

Thanks
Dale Ellis

-----Original Message-----
From: Dale Ellis [mailto:[hidden email]]
Sent: 07 November 2013 16:48
To: [hidden email]
Subject: RE: [xstream-user] RE: RE: Re: Converting an object back from XML

Hi Jorg,

Thanks again for you help, responses to your questions...

> It claims that the compareTo methods of your objects should not be called at deserialization. Can you confirm this?

It is hitting the breakpoints in the compare to methods, example grab from stack trace

btpool0-2@9146, prio=5, in group 'main', status: 'RUNNING'
          at com.serengetisystems.tcrm.domain.AbstractFieldDefinition.compareTo(AbstractFieldDefinition.java:160)
          at com.serengetisystems.tcrm.domain.AbstractFieldDefinition.compareTo(AbstractFieldDefinition.java:16)
          at java.util.TreeMap.put(TreeMap.java:545)
          at java.util.AbstractMap.putAll(AbstractMap.java:256)
          at java.util.TreeMap.putAll(TreeMap.java:304)
          at com.thoughtworks.xstream.converters.collections.TreeMapConverter.populateTreeMap(TreeMapConverter.java:122)
          at com.thoughtworks.xstream.converters.collections.TreeSetConverter.unmarshal(TreeSetConverter.java:94)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:71)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.addCurrentElementToCollection(CollectionConverter.java:98)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:91)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:85)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.unmarshal(CollectionConverter.java:80)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:71)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.addCurrentElementToCollection(CollectionConverter.java:98)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:91)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:85)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.unmarshal(CollectionConverter.java:80)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:71)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.addCurrentElementToCollection(CollectionConverter.java:98)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:91)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:85)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.unmarshal(CollectionConverter.java:80)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:71)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.addCurrentElementToCollection(CollectionConverter.java:98)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:91)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:85)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.unmarshal(CollectionConverter.java:80)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:71)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.addCurrentElementToCollection(CollectionConverter.java:98)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:91)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:85)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.unmarshal(CollectionConverter.java:80)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:71)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.addCurrentElementToCollection(CollectionConverter.java:98)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:91)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:85)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.unmarshal(CollectionConverter.java:80)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:71)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.addCurrentElementToCollection(CollectionConverter.java:98)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:91)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:85)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.unmarshal(CollectionConverter.java:80)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:71)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.addCurrentElementToCollection(CollectionConverter.java:98)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:91)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:85)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.unmarshal(CollectionConverter.java:80)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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:1156)
          at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1140)
          at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1011)
          at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1002)
          at com.serengetisystems.tcrm.service.CaseTypeExportService.addToZip(CaseTypeExportService.java:412)

Also added, couple of debug lines in the CompareTo() methods and it seems its Abstract Field that keeps getting called although debug seems to stop, unless Im just not waiting long enough...

Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Withdraw Case?, name2 = Detail for FLA01 Further Information Request]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Withdraw Case?, name2 = Reason returned form Digitisation]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Digitisation complete?, name2 = Additional information]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, provide reason, name2 = Additional information]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, provide reason, name2 = Digitisation complete?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Map acceptable?, name2 = Digitisation complete?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Map acceptable?, name2 = If No, provide reason]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Date of Assessment?, name2 = Assessment Notes]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Recommendation, name2 = Assessment Notes]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Recommendation, name2 = Date of Assessment?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Type of Assessment?, name2 = Date of Assessment?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Type of Assessment?, name2 = Recommendation]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 2, name2 = Consult 1]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 3, name2 = Consult 1]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 3, name2 = Consult 2]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 4, name2 = Consult 2]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 4, name2 = Consult 3]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 5, name2 = Consult 2]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 5, name2 = Consult 3]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 5, name2 = Consult 4]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 6, name2 = Consult 2]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 6, name2 = Consult 4]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 6, name2 = Consult 5]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 7, name2 = Consult 2]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 7, name2 = Consult 4]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 7, name2 = Consult 5]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 7, name2 = Consult 6]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 8, name2 = Consult 2]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 8, name2 = Consult 4]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 8, name2 = Consult 6]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 8, name2 = Consult 7]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 1, name2 = Consult 4]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 1, name2 = Consult 6]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 1, name2 = Consult 7]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 1, name2 = Consult 8]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 2, name2 = Consult 4]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 2, name2 = Consult 6]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 2, name2 = Consult 8]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 2, name2 = Notify 1]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 3, name2 = Consult 4]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 3, name2 = Consult 6]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 3, name2 = Consult 8]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 3, name2 = Notify 1]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 3, name2 = Notify 2]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 4, name2 = Consult 4]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 4, name2 = Consult 6]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 4, name2 = Consult 8]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 4, name2 = Notify 2]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 4, name2 = Notify 3]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Period of Licence (years)?, name2 = Consult 4]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Period of Licence (years)?, name2 = Consult 8]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Period of Licence (years)?, name2 = Notify 2]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Period of Licence (years)?, name2 = Notify 3]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Period of Licence (years)?, name2 = Notify 4]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Proceed to Consultation?, name2 = Consult 4]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Proceed to Consultation?, name2 = Consult 8]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Proceed to Consultation?, name2 = Notify 2]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Proceed to Consultation?, name2 = Notify 4]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Proceed to Consultation?, name2 = Period of Licence (years)?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consultation End Date, name2 = Applicant Response to conditions?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consultation Responses, name2 = Applicant Response to conditions?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consultation Responses, name2 = Consultation End Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Proceed to Draft Licence?, name2 = Consultation End Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Proceed to Draft Licence?, name2 = Consultation Responses]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notes, name2 = Approving Officer]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Proceed to formal Approval?, name2 = Approving Officer]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Proceed to formal Approval?, name2 = Notes]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Returned from approval notes, name2 = Notes]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Returned from approval notes, name2 = Proceed to formal Approval?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If Other, provide details, name2 = Approve Licence?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If approving Deforestation, provide reason, name2 = Approve Licence?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If approving Deforestation, provide reason, name2 = If Other, provide details]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If not Approving, provide reason, name2 = If Other, provide details]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If not Approving, provide reason, name2 = If approving Deforestation, provide reason]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Do you believe conditions have been met?, name2 = 2nd Restock Inspection Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Further Detail, name2 = 2nd Restock Inspection Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Further Detail, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Have you inspected this case?, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Have you inspected this case?, name2 = Further Detail]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, provide 2nd Restock Extension Date, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, provide 2nd Restock Extension Date, name2 = Further Detail]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, provide 2nd Restock Extension Date, name2 = Have you inspected this case?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = Have you inspected this case?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = If No, provide 2nd Restock Extension Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Do you believe conditions have been met?, name2 = 3rd Restock Inspection Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Further Detail, name2 = 3rd Restock Inspection Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Further Detail, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Have you inspected this case?, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Have you inspected this case?, name2 = Further Detail]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, provide Final Restock Extension Date, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, provide Final Restock Extension Date, name2 = Further Detail]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, provide Final Restock Extension Date, name2 = Have you inspected this case?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = Have you inspected this case?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = If No, provide Final Restock Extension Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Do you believe conditions have been met?, name2 = Corrective Action Required]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Further Detail, name2 = Corrective Action Required]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Further Detail, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Have you inspected this case?, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Have you inspected this case?, name2 = Further Detail]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, provide Maintenance Extension Date, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, provide Maintenance Extension Date, name2 = Further Detail]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, provide Maintenance Extension Date, name2 = Have you inspected this case?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Inspection Date, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Inspection Date, name2 = Have you inspected this case?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Inspection Date, name2 = If No, provide Maintenance Extension Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Further Detail, name2 = Do you believe conditions have now been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Have you inspected this case?, name2 = Do you believe conditions have now been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Have you inspected this case?, name2 = Further Detail]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, proceed to Enforcement, name2 = Further Detail]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, proceed to Enforcement, name2 = Have you inspected this case?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Inspection Date, name2 = Further Detail]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Inspection Date, name2 = Have you inspected this case?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Inspection Date, name2 = If No, proceed to Enforcement]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Enforcement Date, name2 = Do you believe conditions have now been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Enforcement Notes, name2 = Do you believe conditions have now been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Enforcement Notes, name2 = Enforcement Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Extension Period (months), name2 = Enforcement Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Extension Period (months), name2 = Enforcement Notes]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = Enforcement Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = Enforcement Notes]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = Extension Period (months)]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Final Restock Inspection Date, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Further Detail, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Further Detail, name2 = Final Restock Inspection Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Have you inspected this case?, name2 = Final Restock Inspection Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Have you inspected this case?, name2 = Further Detail]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, proceed to Enforcement, name2 = Final Restock Inspection Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, proceed to Enforcement, name2 = Further Detail]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, proceed to Enforcement, name2 = Have you inspected this case?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = Final Restock Inspection Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = Have you inspected this case?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = If No, proceed to Enforcement]
Thu Nov 07 14:38:37 GMT 2013 - Stage Compare [name1 = Condition 58, name2 = Condition 57]
Thu Nov 07 14:38:37 GMT 2013 - Stage Compare [name1 = Condition 59, name2 = Condition 57]
Thu Nov 07 14:38:37 GMT 2013 - Stage Compare [name1 = Condition 59, name2 = Condition 58]
Thu Nov 07 14:38:37 GMT 2013 - Stage Compare [name1 = Condition 60, name2 = Condition 58]
Thu Nov 07 14:38:37 GMT 2013 - Stage Compare [name1 = Condition 60, name2 = Condition 59]
Thu Nov 07 14:38:37 GMT 2013 - Stage Compare [name1 = Condition 61, name2 = Condition 58]
Thu Nov 07 14:38:37 GMT 2013 - Stage Compare [name1 = Condition 61, name2 = Condition 59]
Thu Nov 07 14:38:37 GMT 2013 - Stage Compare [name1 = Condition 61, name2 = Condition 60]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Further Detail, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Have you inspected this case?, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Have you inspected this case?, name2 = Further Detail]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = If No, provide 1st Restock Extension Date, name2 = Further Detail]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = If No, provide 1st Restock Extension Date, name2 = Have you inspected this case?]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = If partially felled, % of licenced area felled, name2 = Further Detail]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = If partially felled, % of licenced area felled, name2 = Have you inspected this case?]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = If partially felled, % of licenced area felled, name2 = If No, provide 1st Restock Extension Date]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Inspection Date, name2 = Further Detail]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Inspection Date, name2 = If No, provide 1st Restock Extension Date]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Inspection Date, name2 = If partially felled, % of licenced area felled]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Related Cases, name2 = Further Detail]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Related Cases, name2 = If No, provide 1st Restock Extension Date]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Related Cases, name2 = If partially felled, % of licenced area felled]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Related Cases, name2 = Inspection Date]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = Further Detail]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = If No, provide 1st Restock Extension Date]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = Inspection Date]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = Related Cases]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Status of licenced area, name2 = If No, provide 1st Restock Extension Date]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Status of licenced area, name2 = Inspection Date]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Status of licenced area, name2 = Related Cases]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Status of licenced area, name2 = Specify Maintenance Inspection Date, if applicable]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Restocking status, name2 = Further Restock Reminder Detail]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Restocking status, name2 = Restock Reminder Detail]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Reason for Closure, name2 = Detail for FLA18 Advise to Withdraw]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Has the Refusal been authorised?, name2 = Approving Officer]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Reason for Refusal, name2 = Approving Officer]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Reason for Refusal, name2 = Has the Refusal been authorised?]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Refusal Details, name2 = Has the Refusal been authorised?]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Refusal Details, name2 = Reason for Refusal]
Thu Nov 07 14:39:53 GMT 2013 - Abstract Field Compare [name1 = Consultation Responses, name2 = Consultation End Date]
Thu Nov 07 14:39:53 GMT 2013 - Abstract Field Compare [name1 = Proceed to Draft Licence?, name2 = Consultation End Date]
Thu Nov 07 14:39:53 GMT 2013 - Abstract Field Compare [name1 = Proceed to Draft Licence?, name2 = Consultation Responses]
Thu Nov 07 14:40:00 GMT 2013 - Abstract Field Compare [name1 = Proceed to Draft Licence?, name2 = Period of Licence (years)?]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 2, name2 = Consult 1]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 3, name2 = Consult 1]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 3, name2 = Consult 2]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 4, name2 = Consult 2]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 4, name2 = Consult 3]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 5, name2 = Consult 2]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 5, name2 = Consult 3]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 5, name2 = Consult 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 6, name2 = Consult 2]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 6, name2 = Consult 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 6, name2 = Consult 5]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 7, name2 = Consult 2]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 7, name2 = Consult 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 7, name2 = Consult 5]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 7, name2 = Consult 6]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 8, name2 = Consult 2]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 8, name2 = Consult 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 8, name2 = Consult 6]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 8, name2 = Consult 7]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 1, name2 = Consult 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 1, name2 = Consult 6]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 1, name2 = Consult 7]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 1, name2 = Consult 8]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 2, name2 = Consult 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 2, name2 = Consult 6]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 2, name2 = Consult 8]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 2, name2 = Notify 1]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 3, name2 = Consult 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 3, name2 = Consult 6]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 3, name2 = Consult 8]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 3, name2 = Notify 1]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 3, name2 = Notify 2]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 4, name2 = Consult 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 4, name2 = Consult 6]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 4, name2 = Consult 8]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 4, name2 = Notify 2]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 4, name2 = Notify 3]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Period of Licence (years)?, name2 = Consult 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Period of Licence (years)?, name2 = Consult 8]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Period of Licence (years)?, name2 = Notify 2]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Period of Licence (years)?, name2 = Notify 3]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Period of Licence (years)?, name2 = Notify 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Proceed to Public Register Consultation?, name2 = Consult 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Proceed to Public Register Consultation?, name2 = Consult 8]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Proceed to Public Register Consultation?, name2 = Notify 2]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Proceed to Public Register Consultation?, name2 = Notify 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Proceed to Public Register Consultation?, name2 = Period of Licence (years)?]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Restock Due Date?, name2 = Consult 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Restock Due Date?, name2 = Consult 8]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Restock Due Date?, name2 = Notify 2]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Restock Due Date?, name2 = Notify 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Restock Due Date?, name2 = Period of Licence (years)?]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Restock Due Date?, name2 = Proceed to Public Register Consultation?]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = When do you want Conditions to be sent?, name2 = Consult 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = When do you want Conditions to be sent?, name2 = Consult 8]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = When do you want Conditions to be sent?, name2 = Notify 2]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = When do you want Conditions to be sent?, name2 = Notify 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = When do you want Conditions to be sent?, name2 = Proceed to Public Register Consultation?]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = When do you want Conditions to be sent?, name2 = Restock Due Date?]
Thu Nov 07 14:40:27 GMT 2013 - Abstract Field Compare [name1 = Text to TPO Officer, name2 = TPO Officer]
Thu Nov 07 14:40:27 GMT 2013 - Abstract Field Compare [name1 = TPO Response Detail, name2 = TPO Officer Response]
Thu Nov 07 14:40:42 GMT 2013 - Abstract Field Compare [name1 = EIA Determination Outcome, name2 = EIA Determination Notes]

I've actually been in a meeting for a couple of hours and I had left the fromXML() running, looks like it finished with an error but the stack trace has been lost.

> Is it with any XML that you de-serialize or just with this special one? Can you try to minimize the objects in your graph to get a minimal number of objects where this effect happens? When XStream hangs and you stop your application in the debugger, what's the stack trace i.e. where does it hang?

This is the only CaseType that hangs now, I did have the same issue, serialising more data than I needed so when I cleaned it up it no longer had the issue, so I only have 1 example at the moment

Thanks
Dale Ellis

-----Original Message-----
From: Jörg Schaible [mailto:[hidden email]]
Sent: 07 November 2013 13:48
To: [hidden email]
Subject: [xstream-user] RE: RE: Re: Converting an object back from XML

Hi Dale,

Dale Ellis wrote:

> Thanks Jorg for your help...
>
> Just run that line you asked for....
>
> C:\Users\dale.ellis.SKY>java -cp
> M:\com\thoughtworks\xstream\xstream\1.4.5\xstream-1.4.5.jar
> com.thoughtworks.xstream.core.JVM XStream JVM diagnostics
> java.specification.version: 1.6 java.specification.vendor: Sun
> Microsystems Inc. java.specification.name: Java Platform API
> Specification
> java.vm.vendor: Sun Microsystems Inc.
> java.vendor: Sun Microsystems Inc.
> java.vm.name: Java HotSpot(TM) 64-Bit Server VM
> Version: 1.6
> XStream support for enhanced Mode: true Supports AWT: true Supports
> Swing: true Supports SQL: true Standard StAX XMLInputFactory:
> com.sun.xml.internal.stream.XMLInputFactoryImpl Standard StAX
> XMLOutputFactory: com.sun.xml.internal.stream.XMLOutputFactoryImpl
> Optimized TreeSet.addAll: true Optimized TreeMap.putAll: true Can
> parse UTC date format: true Reverse field order detected (only if JVM
> class itself has been compiled):
> false

It claims that the compareTo methods of your objects should not be called at deserialization. Can you confirm this?

> I just tried the IS references mode, not exactly sure what I was
> doing, but seemed to generate the xml with ids instead of the xpath's
> so guess it worked ok
>
>         xStream.setMode(XStream.ID_REFERENCES);
>         xStream.aliasSystemAttribute("xstreamId", "xstreamId");

xStream.aliasSystemAttribute("xid", "id");

Just to give XStream's attribute 'id' a different name to avoid any clashes with your if element.

> Still have the same issue though, stripping out the <id>'s freezes for
> fromXml() still :o(

s/stripping out/keeping/ ??

> Any other suggestions?, I'm going to have a look through the xstream
> documentation to try get a better understanding of whats going on, I'm
> wondering if I can write a custom converter to strip out id values,
> all objects with the id extend AbstractEntity so maybe I can do
> something with that.

Is it with any XML that you deserialize or just with this special one? Can you try to minimize the objects in your graph to get a minimal number of objects where this effect happens? When XStream hangs and you stop your application in the debugger, what's the stack trace i.e. where does it hang?

- Jörg


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply | Threaded
Open this post in threaded view
|

RE: RE: Re: Converting an object back from XML

Dale Ellis
Still can't get this working and have spent a day on it. It's definitely to do with the way the StageDefinition/StageTransition Sets, if I blank them the fromXml will work.

I'm just beaten now, so as a workaround I'm going to change this...

        String originalXml = parser.toXML(contentObject);
        String idPattern = "<id>(.+?)</id>";
        String xml = originalXml.replaceAll(idPattern, "");

To this

        String originalXml = parser.toXML(contentObject);
        String idPattern = "<id>(.+?)</id>";
        String xml = originalXml.replaceAll(idPattern, "<id>-1</id>");

Just going to have to write a method to loop through and null the id's

Thanks,
Dale Ellis

-----Original Message-----
From: Dale Ellis [mailto:[hidden email]]
Sent: 08 November 2013 11:21
To: [hidden email]
Subject: RE: [xstream-user] RE: RE: Re: Converting an object back from XML

Think I might have made a bit of a break through,

In my StageTransitionDefinition object, it references, StageTransition, and that compareTo method is....

    @Override
    public int compareTo(StageTransition o) {
        return getId().compareTo(o.getId());
    }

The StageTransition set doesn’t need to there, so I have removed it from StageTransitionDefintion, I'm hoping this is going to resolve the issue, going to test this afternoon

Thanks
Dale Ellis

-----Original Message-----
From: Dale Ellis [mailto:[hidden email]]
Sent: 07 November 2013 16:48
To: [hidden email]
Subject: RE: [xstream-user] RE: RE: Re: Converting an object back from XML

Hi Jorg,

Thanks again for you help, responses to your questions...

> It claims that the compareTo methods of your objects should not be called at deserialization. Can you confirm this?

It is hitting the breakpoints in the compare to methods, example grab from stack trace

btpool0-2@9146, prio=5, in group 'main', status: 'RUNNING'
          at com.serengetisystems.tcrm.domain.AbstractFieldDefinition.compareTo(AbstractFieldDefinition.java:160)
          at com.serengetisystems.tcrm.domain.AbstractFieldDefinition.compareTo(AbstractFieldDefinition.java:16)
          at java.util.TreeMap.put(TreeMap.java:545)
          at java.util.AbstractMap.putAll(AbstractMap.java:256)
          at java.util.TreeMap.putAll(TreeMap.java:304)
          at com.thoughtworks.xstream.converters.collections.TreeMapConverter.populateTreeMap(TreeMapConverter.java:122)
          at com.thoughtworks.xstream.converters.collections.TreeSetConverter.unmarshal(TreeSetConverter.java:94)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:71)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.addCurrentElementToCollection(CollectionConverter.java:98)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:91)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:85)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.unmarshal(CollectionConverter.java:80)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:71)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.addCurrentElementToCollection(CollectionConverter.java:98)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:91)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:85)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.unmarshal(CollectionConverter.java:80)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:71)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.addCurrentElementToCollection(CollectionConverter.java:98)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:91)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:85)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.unmarshal(CollectionConverter.java:80)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:71)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.addCurrentElementToCollection(CollectionConverter.java:98)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:91)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:85)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.unmarshal(CollectionConverter.java:80)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:71)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.addCurrentElementToCollection(CollectionConverter.java:98)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:91)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:85)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.unmarshal(CollectionConverter.java:80)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:71)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.addCurrentElementToCollection(CollectionConverter.java:98)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:91)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:85)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.unmarshal(CollectionConverter.java:80)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:71)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.addCurrentElementToCollection(CollectionConverter.java:98)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:91)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:85)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.unmarshal(CollectionConverter.java:80)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:71)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.addCurrentElementToCollection(CollectionConverter.java:98)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:91)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:85)
          at com.thoughtworks.xstream.converters.collections.CollectionConverter.unmarshal(CollectionConverter.java:80)
          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:464)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:396)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:247)
          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:1156)
          at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1140)
          at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1011)
          at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1002)
          at com.serengetisystems.tcrm.service.CaseTypeExportService.addToZip(CaseTypeExportService.java:412)

Also added, couple of debug lines in the CompareTo() methods and it seems its Abstract Field that keeps getting called although debug seems to stop, unless Im just not waiting long enough...

Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Withdraw Case?, name2 = Detail for FLA01 Further Information Request]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Withdraw Case?, name2 = Reason returned form Digitisation]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Digitisation complete?, name2 = Additional information]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, provide reason, name2 = Additional information]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, provide reason, name2 = Digitisation complete?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Map acceptable?, name2 = Digitisation complete?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Map acceptable?, name2 = If No, provide reason]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Date of Assessment?, name2 = Assessment Notes]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Recommendation, name2 = Assessment Notes]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Recommendation, name2 = Date of Assessment?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Type of Assessment?, name2 = Date of Assessment?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Type of Assessment?, name2 = Recommendation]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 2, name2 = Consult 1]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 3, name2 = Consult 1]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 3, name2 = Consult 2]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 4, name2 = Consult 2]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 4, name2 = Consult 3]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 5, name2 = Consult 2]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 5, name2 = Consult 3]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 5, name2 = Consult 4]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 6, name2 = Consult 2]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 6, name2 = Consult 4]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 6, name2 = Consult 5]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 7, name2 = Consult 2]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 7, name2 = Consult 4]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 7, name2 = Consult 5]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 7, name2 = Consult 6]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 8, name2 = Consult 2]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 8, name2 = Consult 4]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 8, name2 = Consult 6]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consult 8, name2 = Consult 7]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 1, name2 = Consult 4]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 1, name2 = Consult 6]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 1, name2 = Consult 7]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 1, name2 = Consult 8]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 2, name2 = Consult 4]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 2, name2 = Consult 6]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 2, name2 = Consult 8]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 2, name2 = Notify 1]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 3, name2 = Consult 4]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 3, name2 = Consult 6]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 3, name2 = Consult 8]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 3, name2 = Notify 1]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 3, name2 = Notify 2]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 4, name2 = Consult 4]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 4, name2 = Consult 6]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 4, name2 = Consult 8]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 4, name2 = Notify 2]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notify 4, name2 = Notify 3]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Period of Licence (years)?, name2 = Consult 4]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Period of Licence (years)?, name2 = Consult 8]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Period of Licence (years)?, name2 = Notify 2]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Period of Licence (years)?, name2 = Notify 3]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Period of Licence (years)?, name2 = Notify 4]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Proceed to Consultation?, name2 = Consult 4]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Proceed to Consultation?, name2 = Consult 8]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Proceed to Consultation?, name2 = Notify 2]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Proceed to Consultation?, name2 = Notify 4]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Proceed to Consultation?, name2 = Period of Licence (years)?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consultation End Date, name2 = Applicant Response to conditions?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consultation Responses, name2 = Applicant Response to conditions?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Consultation Responses, name2 = Consultation End Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Proceed to Draft Licence?, name2 = Consultation End Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Proceed to Draft Licence?, name2 = Consultation Responses]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Notes, name2 = Approving Officer]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Proceed to formal Approval?, name2 = Approving Officer]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Proceed to formal Approval?, name2 = Notes]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Returned from approval notes, name2 = Notes]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Returned from approval notes, name2 = Proceed to formal Approval?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If Other, provide details, name2 = Approve Licence?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If approving Deforestation, provide reason, name2 = Approve Licence?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If approving Deforestation, provide reason, name2 = If Other, provide details]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If not Approving, provide reason, name2 = If Other, provide details]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If not Approving, provide reason, name2 = If approving Deforestation, provide reason]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Do you believe conditions have been met?, name2 = 2nd Restock Inspection Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Further Detail, name2 = 2nd Restock Inspection Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Further Detail, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Have you inspected this case?, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Have you inspected this case?, name2 = Further Detail]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, provide 2nd Restock Extension Date, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, provide 2nd Restock Extension Date, name2 = Further Detail]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, provide 2nd Restock Extension Date, name2 = Have you inspected this case?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = Have you inspected this case?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = If No, provide 2nd Restock Extension Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Do you believe conditions have been met?, name2 = 3rd Restock Inspection Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Further Detail, name2 = 3rd Restock Inspection Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Further Detail, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Have you inspected this case?, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Have you inspected this case?, name2 = Further Detail]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, provide Final Restock Extension Date, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, provide Final Restock Extension Date, name2 = Further Detail]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, provide Final Restock Extension Date, name2 = Have you inspected this case?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = Have you inspected this case?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = If No, provide Final Restock Extension Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Do you believe conditions have been met?, name2 = Corrective Action Required]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Further Detail, name2 = Corrective Action Required]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Further Detail, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Have you inspected this case?, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Have you inspected this case?, name2 = Further Detail]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, provide Maintenance Extension Date, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, provide Maintenance Extension Date, name2 = Further Detail]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, provide Maintenance Extension Date, name2 = Have you inspected this case?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Inspection Date, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Inspection Date, name2 = Have you inspected this case?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Inspection Date, name2 = If No, provide Maintenance Extension Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Further Detail, name2 = Do you believe conditions have now been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Have you inspected this case?, name2 = Do you believe conditions have now been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Have you inspected this case?, name2 = Further Detail]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, proceed to Enforcement, name2 = Further Detail]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, proceed to Enforcement, name2 = Have you inspected this case?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Inspection Date, name2 = Further Detail]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Inspection Date, name2 = Have you inspected this case?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Inspection Date, name2 = If No, proceed to Enforcement]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Enforcement Date, name2 = Do you believe conditions have now been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Enforcement Notes, name2 = Do you believe conditions have now been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Enforcement Notes, name2 = Enforcement Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Extension Period (months), name2 = Enforcement Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Extension Period (months), name2 = Enforcement Notes]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = Enforcement Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = Enforcement Notes]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = Extension Period (months)]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Final Restock Inspection Date, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Further Detail, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Further Detail, name2 = Final Restock Inspection Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Have you inspected this case?, name2 = Final Restock Inspection Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Have you inspected this case?, name2 = Further Detail]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, proceed to Enforcement, name2 = Final Restock Inspection Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, proceed to Enforcement, name2 = Further Detail]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = If No, proceed to Enforcement, name2 = Have you inspected this case?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = Final Restock Inspection Date]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = Have you inspected this case?]
Thu Nov 07 14:38:36 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = If No, proceed to Enforcement]
Thu Nov 07 14:38:37 GMT 2013 - Stage Compare [name1 = Condition 58, name2 = Condition 57]
Thu Nov 07 14:38:37 GMT 2013 - Stage Compare [name1 = Condition 59, name2 = Condition 57]
Thu Nov 07 14:38:37 GMT 2013 - Stage Compare [name1 = Condition 59, name2 = Condition 58]
Thu Nov 07 14:38:37 GMT 2013 - Stage Compare [name1 = Condition 60, name2 = Condition 58]
Thu Nov 07 14:38:37 GMT 2013 - Stage Compare [name1 = Condition 60, name2 = Condition 59]
Thu Nov 07 14:38:37 GMT 2013 - Stage Compare [name1 = Condition 61, name2 = Condition 58]
Thu Nov 07 14:38:37 GMT 2013 - Stage Compare [name1 = Condition 61, name2 = Condition 59]
Thu Nov 07 14:38:37 GMT 2013 - Stage Compare [name1 = Condition 61, name2 = Condition 60]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Further Detail, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Have you inspected this case?, name2 = Do you believe conditions have been met?]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Have you inspected this case?, name2 = Further Detail]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = If No, provide 1st Restock Extension Date, name2 = Further Detail]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = If No, provide 1st Restock Extension Date, name2 = Have you inspected this case?]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = If partially felled, % of licenced area felled, name2 = Further Detail]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = If partially felled, % of licenced area felled, name2 = Have you inspected this case?]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = If partially felled, % of licenced area felled, name2 = If No, provide 1st Restock Extension Date]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Inspection Date, name2 = Further Detail]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Inspection Date, name2 = If No, provide 1st Restock Extension Date]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Inspection Date, name2 = If partially felled, % of licenced area felled]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Related Cases, name2 = Further Detail]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Related Cases, name2 = If No, provide 1st Restock Extension Date]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Related Cases, name2 = If partially felled, % of licenced area felled]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Related Cases, name2 = Inspection Date]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = Further Detail]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = If No, provide 1st Restock Extension Date]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = Inspection Date]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Specify Maintenance Inspection Date, if applicable, name2 = Related Cases]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Status of licenced area, name2 = If No, provide 1st Restock Extension Date]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Status of licenced area, name2 = Inspection Date]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Status of licenced area, name2 = Related Cases]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Status of licenced area, name2 = Specify Maintenance Inspection Date, if applicable]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Restocking status, name2 = Further Restock Reminder Detail]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Restocking status, name2 = Restock Reminder Detail]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Reason for Closure, name2 = Detail for FLA18 Advise to Withdraw]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Has the Refusal been authorised?, name2 = Approving Officer]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Reason for Refusal, name2 = Approving Officer]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Reason for Refusal, name2 = Has the Refusal been authorised?]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Refusal Details, name2 = Has the Refusal been authorised?]
Thu Nov 07 14:38:37 GMT 2013 - Abstract Field Compare [name1 = Refusal Details, name2 = Reason for Refusal]
Thu Nov 07 14:39:53 GMT 2013 - Abstract Field Compare [name1 = Consultation Responses, name2 = Consultation End Date]
Thu Nov 07 14:39:53 GMT 2013 - Abstract Field Compare [name1 = Proceed to Draft Licence?, name2 = Consultation End Date]
Thu Nov 07 14:39:53 GMT 2013 - Abstract Field Compare [name1 = Proceed to Draft Licence?, name2 = Consultation Responses]
Thu Nov 07 14:40:00 GMT 2013 - Abstract Field Compare [name1 = Proceed to Draft Licence?, name2 = Period of Licence (years)?]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 2, name2 = Consult 1]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 3, name2 = Consult 1]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 3, name2 = Consult 2]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 4, name2 = Consult 2]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 4, name2 = Consult 3]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 5, name2 = Consult 2]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 5, name2 = Consult 3]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 5, name2 = Consult 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 6, name2 = Consult 2]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 6, name2 = Consult 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 6, name2 = Consult 5]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 7, name2 = Consult 2]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 7, name2 = Consult 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 7, name2 = Consult 5]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 7, name2 = Consult 6]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 8, name2 = Consult 2]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 8, name2 = Consult 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 8, name2 = Consult 6]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Consult 8, name2 = Consult 7]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 1, name2 = Consult 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 1, name2 = Consult 6]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 1, name2 = Consult 7]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 1, name2 = Consult 8]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 2, name2 = Consult 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 2, name2 = Consult 6]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 2, name2 = Consult 8]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 2, name2 = Notify 1]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 3, name2 = Consult 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 3, name2 = Consult 6]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 3, name2 = Consult 8]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 3, name2 = Notify 1]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 3, name2 = Notify 2]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 4, name2 = Consult 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 4, name2 = Consult 6]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 4, name2 = Consult 8]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 4, name2 = Notify 2]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Notify 4, name2 = Notify 3]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Period of Licence (years)?, name2 = Consult 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Period of Licence (years)?, name2 = Consult 8]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Period of Licence (years)?, name2 = Notify 2]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Period of Licence (years)?, name2 = Notify 3]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Period of Licence (years)?, name2 = Notify 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Proceed to Public Register Consultation?, name2 = Consult 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Proceed to Public Register Consultation?, name2 = Consult 8]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Proceed to Public Register Consultation?, name2 = Notify 2]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Proceed to Public Register Consultation?, name2 = Notify 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Proceed to Public Register Consultation?, name2 = Period of Licence (years)?]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Restock Due Date?, name2 = Consult 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Restock Due Date?, name2 = Consult 8]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Restock Due Date?, name2 = Notify 2]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Restock Due Date?, name2 = Notify 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Restock Due Date?, name2 = Period of Licence (years)?]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = Restock Due Date?, name2 = Proceed to Public Register Consultation?]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = When do you want Conditions to be sent?, name2 = Consult 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = When do you want Conditions to be sent?, name2 = Consult 8]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = When do you want Conditions to be sent?, name2 = Notify 2]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = When do you want Conditions to be sent?, name2 = Notify 4]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = When do you want Conditions to be sent?, name2 = Proceed to Public Register Consultation?]
Thu Nov 07 14:40:06 GMT 2013 - Abstract Field Compare [name1 = When do you want Conditions to be sent?, name2 = Restock Due Date?]
Thu Nov 07 14:40:27 GMT 2013 - Abstract Field Compare [name1 = Text to TPO Officer, name2 = TPO Officer]
Thu Nov 07 14:40:27 GMT 2013 - Abstract Field Compare [name1 = TPO Response Detail, name2 = TPO Officer Response]
Thu Nov 07 14:40:42 GMT 2013 - Abstract Field Compare [name1 = EIA Determination Outcome, name2 = EIA Determination Notes]

I've actually been in a meeting for a couple of hours and I had left the fromXML() running, looks like it finished with an error but the stack trace has been lost.

> Is it with any XML that you de-serialize or just with this special one? Can you try to minimize the objects in your graph to get a minimal number of objects where this effect happens? When XStream hangs and you stop your application in the debugger, what's the stack trace i.e. where does it hang?

This is the only CaseType that hangs now, I did have the same issue, serialising more data than I needed so when I cleaned it up it no longer had the issue, so I only have 1 example at the moment

Thanks
Dale Ellis

-----Original Message-----
From: Jörg Schaible [mailto:[hidden email]]
Sent: 07 November 2013 13:48
To: [hidden email]
Subject: [xstream-user] RE: RE: Re: Converting an object back from XML

Hi Dale,

Dale Ellis wrote:

> Thanks Jorg for your help...
>
> Just run that line you asked for....
>
> C:\Users\dale.ellis.SKY>java -cp
> M:\com\thoughtworks\xstream\xstream\1.4.5\xstream-1.4.5.jar
> com.thoughtworks.xstream.core.JVM XStream JVM diagnostics
> java.specification.version: 1.6 java.specification.vendor: Sun
> Microsystems Inc. java.specification.name: Java Platform API
> Specification
> java.vm.vendor: Sun Microsystems Inc.
> java.vendor: Sun Microsystems Inc.
> java.vm.name: Java HotSpot(TM) 64-Bit Server VM
> Version: 1.6
> XStream support for enhanced Mode: true Supports AWT: true Supports
> Swing: true Supports SQL: true Standard StAX XMLInputFactory:
> com.sun.xml.internal.stream.XMLInputFactoryImpl Standard StAX
> XMLOutputFactory: com.sun.xml.internal.stream.XMLOutputFactoryImpl
> Optimized TreeSet.addAll: true Optimized TreeMap.putAll: true Can
> parse UTC date format: true Reverse field order detected (only if JVM
> class itself has been compiled):
> false

It claims that the compareTo methods of your objects should not be called at deserialization. Can you confirm this?

> I just tried the IS references mode, not exactly sure what I was
> doing, but seemed to generate the xml with ids instead of the xpath's
> so guess it worked ok
>
>         xStream.setMode(XStream.ID_REFERENCES);
>         xStream.aliasSystemAttribute("xstreamId", "xstreamId");

xStream.aliasSystemAttribute("xid", "id");

Just to give XStream's attribute 'id' a different name to avoid any clashes with your if element.

> Still have the same issue though, stripping out the <id>'s freezes for
> fromXml() still :o(

s/stripping out/keeping/ ??

> Any other suggestions?, I'm going to have a look through the xstream
> documentation to try get a better understanding of whats going on, I'm
> wondering if I can write a custom converter to strip out id values,
> all objects with the id extend AbstractEntity so maybe I can do
> something with that.

Is it with any XML that you deserialize or just with this special one? Can you try to minimize the objects in your graph to get a minimal number of objects where this effect happens? When XStream hangs and you stop your application in the debugger, what's the stack trace i.e. where does it hang?

- Jörg


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply | Threaded
Open this post in threaded view
|

RE: RE: RE: Re: Converting an object back from XML

Jörg Schaible-2
Hello Dale,

sorry, I was busy yesterday.

Dale Ellis wrote:

> Still can't get this working and have spent a day on it. It's definitely
> to do with the way the StageDefinition/StageTransition Sets, if I blank
> them the fromXml will work.

It's a general problem with TreeSet/TreeMap (sets use internally typically
maps). If the optimized addAll/putAll does not work, the order of every
element has to be recalculated when they are inserted. This is even worse
for deserialization frameworks, if the compareTo method accesses all kind of
other members that might have not yet been deserialized and operates
therefor on incomplete objects.

The JDK has typically an optimization if you try to put an already sorted
map into an empty one. From the stack trace below, it is visible, that the
condition for the optimization was not met, but I do not understand why.

> I'm just beaten now, so as a workaround I'm going to change this...
>
>         String originalXml = parser.toXML(contentObject);
>         String idPattern = "<id>(.+?)</id>";
>         String xml = originalXml.replaceAll(idPattern, "");
>
> To this
>
>         String originalXml = parser.toXML(contentObject);
>         String idPattern = "<id>(.+?)</id>";
>         String xml = originalXml.replaceAll(idPattern, "<id>-1</id>");
>
> Just going to have to write a method to loop through and null the id's

You may try to use omitField instead.

- Jörg


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply | Threaded
Open this post in threaded view
|

RE: RE: RE: Re: Converting an object back from XML

Dale Ellis
I was having a look in the JConsole at the stack of the hanging thread, I think the issue is to do with my abstractEntity class (which all the JPA entity objects extend) overrides the hascode with this...

    public int hashCode()    {
        if(getId() != null)
        {
            return new HashCodeBuilder().append(getId()).toHashCode();
        }
        else
        {
            return HashCodeBuilder.reflectionHashCode(this);
        }

When I remove this, the fromXML() works

Dale Ellis
Senior Developer

Serengeti Systems
Part of the Netcall Group
t 0330 333 7880
f 0330 333 0102
e [hidden email]
a Serengeti House, Hillside Business Park, 6 Hillside Road, Bury St Edmunds, IP32 7EA
w www.serengeti-systems.com
-----Original Message-----
From: Jörg Schaible [mailto:[hidden email]]
Sent: 09 November 2013 17:29
To: [hidden email]
Subject: [xstream-user] RE: RE: RE: Re: Converting an object back from XML

Hello Dale,

sorry, I was busy yesterday.

Dale Ellis wrote:

> Still can't get this working and have spent a day on it. It's
> definitely to do with the way the StageDefinition/StageTransition
> Sets, if I blank them the fromXml will work.

It's a general problem with TreeSet/TreeMap (sets use internally typically maps). If the optimized addAll/putAll does not work, the order of every element has to be recalculated when they are inserted. This is even worse for deserialization frameworks, if the compareTo method accesses all kind of other members that might have not yet been deserialized and operates therefor on incomplete objects.

The JDK has typically an optimization if you try to put an already sorted map into an empty one. From the stack trace below, it is visible, that the condition for the optimization was not met, but I do not understand why.

> I'm just beaten now, so as a workaround I'm going to change this...
>
>         String originalXml = parser.toXML(contentObject);
>         String idPattern = "<id>(.+?)</id>";
>         String xml = originalXml.replaceAll(idPattern, "");
>
> To this
>
>         String originalXml = parser.toXML(contentObject);
>         String idPattern = "<id>(.+?)</id>";
>         String xml = originalXml.replaceAll(idPattern, "<id>-1</id>");
>
> Just going to have to write a method to loop through and null the id's

You may try to use omitField instead.

- Jörg


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply | Threaded
Open this post in threaded view
|

RE: RE: RE: RE: Re: Converting an object back from XML

Jörg Schaible-3
Hi Dale,

Dale Ellis wrote:

> I was having a look in the JConsole at the stack of the hanging thread, I
> think the issue is to do with my abstractEntity class (which all the JPA
> entity objects extend) overrides the hascode with this...
>
>     public int hashCode()    {
>         if(getId() != null)
>         {
>             return new HashCodeBuilder().append(getId()).toHashCode();
>         }
>         else
>         {
>             return HashCodeBuilder.reflectionHashCode(this);
>         }
>
> When I remove this, the fromXML() works

The reflectionHashCode is a *very* dangerous tool (I don't give a bad mouth
here, I am committer to Apache Commons Lang myself). In your case you might
even break the hashCode contract. The hashCode is meant to be a *constant*
unique identifier, i.e. if you use your object as key in a HashMap, the hash
value should never change afterwards. Is getId() a pure getter or will it
also access other complex objects in the graph to get one?

From the XML structure I can see that some of your objects deep down in the
object graph contain back references to parents or siblings. A reflection-
based hash code builder will normally silently introduce an endless
recursion here - it just works, because the Apache implementation keeps
track of the accesses objects. However, this calculation is in any case
expensive.

BTW: Are you also sure you fullfill another hash code contract, i.e. equal
equal objects (calling equals()) means also equal hash codes (the reverse is
not guaranteed though)?

Apart from this, I still wonder, why TreeMap.putAll adds all elements
individually instead of using the optimized method that does not sort the
elements again and therefore omit all calls to compareTo ... :-/

Cheers,
Jörg


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply | Threaded
Open this post in threaded view
|

RE: RE: RE: RE: Re: Converting an object back from XML

Dale Ellis
To be honest,

I started on this project a couple of years ago and the abstract entity class has always contained the following and I have not really looked into what the reflection equals and hashcode do ...

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }

        if (this == obj) {
            return true;
        }

        if (!(obj instanceof AbstractEntity)) {
            return false;
        }

        AbstractEntity entity = (AbstractEntity) obj;
        if (getId() != null || entity.getId() != null) {
            return new EqualsBuilder().append(getId(), entity.getId()).isEquals();
        } else {
            return EqualsBuilder.reflectionEquals(this, obj);
        }
    }

    @Override
    public int hashCode() {
        if (getId() != null) {
            return new HashCodeBuilder().append(getId()).toHashCode();
        } else {
            return HashCodeBuilder.reflectionHashCode(this);
        }
    }

The getId() method is a pure getter, which relates to a PK in a DB table. There are some instances where the objects that implement the AbstractEntity override the equals method to include the use of a unique key, however, these objects generally don't override hashCode so I would think this would be a potential problem. I'm looking to corrected that where  find it.

So I'm removing the hashCode() out of the abstractEntity, hopefully if would affect performance too much, will implement the hashCode in objects that actually require it.

As for performance, as you say, that reflectionHashCode did make performance really slow, took almost 2 mins to copy an object, without it, about a second.

Thanks for your help

Dale Ellis

-----Original Message-----
From: Jörg Schaible [mailto:[hidden email]]
Sent: 15 November 2013 09:10
To: [hidden email]
Subject: [xstream-user] RE: RE: RE: RE: Re: Converting an object back from XML

Hi Dale,

Dale Ellis wrote:

> I was having a look in the JConsole at the stack of the hanging
> thread, I think the issue is to do with my abstractEntity class (which
> all the JPA entity objects extend) overrides the hascode with this...
>
>     public int hashCode()    {
>         if(getId() != null)
>         {
>             return new HashCodeBuilder().append(getId()).toHashCode();
>         }
>         else
>         {
>             return HashCodeBuilder.reflectionHashCode(this);
>         }
>
> When I remove this, the fromXML() works

The reflectionHashCode is a *very* dangerous tool (I don't give a bad mouth here, I am committer to Apache Commons Lang myself). In your case you might even break the hashCode contract. The hashCode is meant to be a *constant* unique identifier, i.e. if you use your object as key in a HashMap, the hash value should never change afterwards. Is getId() a pure getter or will it also access other complex objects in the graph to get one?

From the XML structure I can see that some of your objects deep down in the object graph contain back references to parents or siblings. A reflection- based hash code builder will normally silently introduce an endless recursion here - it just works, because the Apache implementation keeps track of the accesses objects. However, this calculation is in any case expensive.

BTW: Are you also sure you fullfill another hash code contract, i.e. equal equal objects (calling equals()) means also equal hash codes (the reverse is not guaranteed though)?

Apart from this, I still wonder, why TreeMap.putAll adds all elements individually instead of using the optimized method that does not sort the elements again and therefore omit all calls to compareTo ... :-/

Cheers,
Jörg


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email