Hi Jeff,
Jeff Crump wrote:
> I'm having trouble unmarshalling a list of elements into a collection that
> itself has an attribute:
>
> <ipmiSensors>
> <psSensors redund="True">
> <powerSupply status="ok" present="True" name="Power Supply1"/>
> <powerSupply status="ok" present="True" name="Power Supply2"/>
> </psSensors>
> </ipmiSensors>
>
> If I ignore the 'redund' attribute, I can unmarshall this into a
> Collection<T> instance easily:
>
> <class name="mypackage.sensors.IPMISensors" auto-complete="false"
> verify-constructable="false">
> <field name="powerSupplySensors"
> type="mypackage.sensors.IPMIPowerSupplySensor"
> required="false" direct="false" transient="false"
> container="false" collection="collection">
> <bind-xml name="psSensors" node="element" />
> </field>
> </class>
>
> This does exactly what I would expect, and add the <powerSupply> instances
> to the Collection.
>
> But that attribute on the <psSensors> element is puzzling me. Obviously I
> can't unmarshall this into a Collection<T> anymore - I have to create my own
> subclass of, say, ArrayList<T>, right? Except nothing I try seems to work.
>
> Am I on the right track?
No, not really. Let me ask you a question and suggest one possible solution.
Question: where (in your object model) would you like to store the value
of the 'redund' attribute.
Possible solution:
a) Store the attribute value in a property on the class
mypackage.sensors.IPMISensors, and use a location in the XML binding for
this attribute.
b) Create an intermediate class for <psSensors> that has two members,
one for the collection of PowerSupply#s and one for the attribute value.
> I really don't want to create a collection within
> a collection -- I don't want to make this one class different than all of
> the others in the set I'm working with.
>
> Any advice?
>
> Jeff
>
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email