Hi Alan,

why not create a feature request over at http://jira.codehaus.org/browse/CASTOR, and work with us on gettin this collection type potentially added.

Kind Regards
Werner Guttmann

On 16.09.2011 17:29, Alan Hawrelak wrote:
I am trying to use castor 1.3.1, where a collection is a java.util.Queue.

Actually a ConcurrentLinkedQueue<TQueueElement>.

When I try:

Mapping mapping = new Mapping();

mapping.loadMapping("file://castorTestMapping.xml
<file:///\\castorTestMapping.xml>" );;

It causes the error:

Nested error: org.exolab.castor.xml.MarshalException:
java.lang.IllegalArgumentException: java.util.Queue is not a valid
FieldMappingCollectionType

Is there some other collection that will work for this? Or an alternate
way of doing this?

Thanks.

Here is the a part of the mapping file:

<class name="com.test.TQueue">

<field name="queue_" collection="java.util.Queue"
type="com.test.TQueueElement" get-method="getQueue" set-method="setQueue">

<bind-xml name="Queue"/>

</field>

<field name="name_" type="java.lang.String" get-method="getName"
set-method="setName" >

<bind-xml name="QueueName" node="attribute" />

</field>

<field name="type_" type="java.lang.String" get-method="getType"
set-method="setType" >

<bind-xml name="QueueType" node="attribute" />

</field>

</class>

<class name="com.test.TQueueElement">

<field name="payload_" type="org.exolab.castor.mapping.MapItem"
collection="map" get-method="getPayload" set-method="setPayload">

<bind-xml name="queueItem">

<class name="org.exolab.castor.mapping.MapItem">

<field name="key" type="java.lang.String">

</field>

<field name="value" type="java.lang.String" />

</class>

</bind-xml>

</field>

</class>

And the related java classes (simplified) are:

public class TQueue

{

private Queue<TQueueElement> queue_;

private String name_;

private String type_;

public TQueue()

{

queue_ = new ConcurrentLinkedQueue<TQueueElement>();

}

public void add(TQueueElement element)

{

if ( element == null ) {

throw new NullPointerException();

}

queue_.add(element);

}

public synchronized String getName()

{

return name_;

}

public synchronized String getType()

{

return type_;

}

public synchronized void setName(String name)

{

if ( name == null ) {

throw new NullPointerException();

}

name_ = name;

}

public synchronized void setType(String type)

{

if ( type == null ) {

throw new NullPointerException();

}

type_ = type;

}

}

public class TQueueElement implements Cloneable {

private Map<String,String> payload_;

public TQueueElement()

{

payload_ = new HashMap<String,String>();

}

public String getEntry(String name) {

return getPayload().get(name);

}

public Map<String,String> getPayload()

{

return payload_;

}

public String putEntry(String name, String value)

{

return getPayload().put(name, value);

}

public void setPayload(Map<String,String> payload)

{

if ( payload == null ) {

throw new NullPointerException();

}

payload_ = payload;

}

}


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

   http://xircles.codehaus.org/manage_email


Reply via email to