Here's a bit clearer example of the problem:

<?xml version="1.0" encoding="UTF-8"?>
<Visit sent-to-queue="false">
    <add-visit-datas id="0">
        <enhanced-session-id>123</enhanced-session-id>
        <name>foo</name>
        <value>bar</value>
    </add-visit-datas>
    <add-visit-datas id="0">
        <enhanced-session-id>123</enhanced-session-id>
        <name>foo2</name>
        <value>bar2</value>
    </add-visit-datas>
    <add-visit-datas id="0"
xsi:type="java:com.classesusa.beans.AddVisitData"
                     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
        <enhanced-session-id>123</enhanced-session-id>
        <name>foo</name>
        <value>bar</value>
    </add-visit-datas>
    <add-visit-datas id="0"
xsi:type="java:com.classesusa.beans.AddVisitData"
                     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
        <enhanced-session-id>123</enhanced-session-id>
        <name>foo2</name>
        <value>bar2</value>
    </add-visit-datas>
</Visit>


Just yesterday end-of-day, I realized that, if this is any problem at all,
it's not the problem that was actually holding me up with my work (that was
'downstream' of this Castor issue -- a Hibernate issue).  However, this
Castor problem is perhaps still bona fide in terms of efficiency.

That is, I now think that marshalling a Collection (in this case,
addVisitDatas) in such a way as to wrap sets of the members of the
Collection's element-type (in this case, AddVisitData) in an XML-element
named with the name of the Collection-variable (addVisitDatas) is preferable
to what one gets when one includes "container='false'", which wraps such
Collection-element data in an XML-element named with the Collection
element's type (AddVisitData).

I now think that's actually more efficient, in that it saves on XML-elements
in the way it deals with the effectively anonymous Collection-elements.

However, in the example above, those two add-visit-datas elements are
repeated.  The second time, the only differences are the xsi:type and
xmlns:xsi attributes.  Since, in this case, Castor is being used to marshall
objects through JMS-messaging, we're consequently sending messages that are
about twice as big as they need (or should need) to be.

So, the upshot is that I now think there's really only one problem; and it's
not really holding me up; it's just a matter of currently sending a
needlessly fat message through JMS.

Is there a way to send only the one set of two add-visit-datas elements, to
optimize the message?





Keith Visco wrote:
> 
> 
> I'm having a bit of a problem understanding the issue. Can you provide an 
> example of the object you are trying to marshal, the mapping file, the
> expected 
> result and the actual result. I know you've provided pieces of this with
> an 
> introductory explanation, but I am not following the problem with the
> pieces 
> that you have provided.
> 
> Thanks,
> 
> --Keith
> 
> 
> llefever wrote:
>> There are two problems with the following result of marshalling.
>> 
>> In that result, "more-visit-data" must have been derived from the
>> collection-variable named "moreVisitData" in class Visit; it appears as
>> many
>> times as should instances of the element it contains in Java -- of type
>> AddVisitData; meanwhile, the elements of the contained type are not in an
>> element called AddVisitData; I found something elsewhere about setting
>> "container='false'" on the field-element in the config; I tried that; it
>> seemed to work, except that there was still a doubling of the output,
>> with
>> the second instance of the whole message containing "xsi:type" and NOT
>> showing the beneficial effect of "container='false'".
>> 
>> The Visit class has these methods on it:
>> 
>>     public void setMoreVisitData(Set moreVisitData) {
>>         this.moreVisitData = moreVisitData;
>>     }
>> 
>>     public Set getMoreVisitData() {
>>         return moreVisitData;
>>     }
>> 
>> 
>> I've so far killed an entire day tried to solve this problem.  Any
>> feedback
>> would be much appreciated.
>> 
>> 
>> =======================================================
>> 
>> <?xml version="1.0" encoding="UTF-8"?>
>> 
>> <Visit>
>> 
>>   <more-visit-data id="0">
>>     <enhanced-session-id>127.0.0.11174943003584</enhanced-session-id>
>>     <name>foo</name>
>>     <value>bar</value>
>>   </more-visit-data>
>> 
>>   <more-visit-data id="0">
>>     <enhanced-session-id>127.0.0.11174943003597</enhanced-session-id>
>>     <name>foo2</name>
>>     <value>bar2</value>
>>   </more-visit-data>
>> 
>> ...
>> 
>>   <more-visit-data id="0" xsi:type="java:com.foo.beans.AddVisitData"
>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
>>     <enhanced-session-id>127.0.0.11174943003584</enhanced-session-id>
>>     <name>foo</name>
>>     <value>bar</value>
>>   </more-visit-data>
>> 
>> ...
>> 
>> </Visit>
>> 
>> 
>> =======================================================
>> 
>> Here's the config for that:
>> 
>>         <class name="com.foo.beans.Visit" auto-complete="true">
>>                 <map-to xml="Visit"/>
>> 
>>                 <field name="MoreVisitData" 
>> type="com.classesusa.beans.AddVisitData"  collection="set"/>
>>         </class>
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe from this list please visit:
> 
>     http://xircles.codehaus.org/manage_email
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/collection-var-name-misinterpreted-as-collection-element-type--hence-%27occurs-more-than-once%27--etc.-tf3470145.html#a9715061
Sent from the Castor - User mailing list archive at Nabble.com.


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

    http://xircles.codehaus.org/manage_email

Reply via email to