I've still not been able to resolve this issue, does anyone have any
suggestions?
Thanks in advance
Matthew Wilson.
On Fri, 2007-03-02 at 15:56 +0000, Matthew Wilson wrote:
> Hi,
> I am trying to unmarshall a Map called "class mappings" in which the
> keys are Strings and the values are references to objects of type
> QoSClass which are specified in the same instance document. The
> relevant parts of the mapping file and instance document are shown
> below. I have tried many different permutations such as making the
> MapItem value field an entity, setting it's type to java.lang.Object and
> using xsi:type, but all produce exceptions similar to following:
>
> unable to resolve reference: besteffort{File: [not available]; line:
> 70; column: 30}
> at org.exolab.castor.xml.Unmarshaller.unmarshal(Unmarshaller.java:740)
> at org.exolab.castor.xml.Unmarshaller.unmarshal(Unmarshaller.java:596)
> at
> uk.ac.soton.ecs.mpw104.main.tests.XMLRuleConfigTest.<init>(XMLRuleConfigTest.java:35)
> at
> uk.ac.soton.ecs.mpw104.main.tests.XMLRuleConfigTest.main(XMLRuleConfigTest.java:54)
> Caused by: 1. ValidationException: unable to resolve reference:
> besteffort
>
> I have probably made a silly mistake - could someone point it out for me
> please?
>
> Thanks in advance
> Matthew Wilson.
>
> Mapping file:
>
> <class name="uk.ac.soton.ecs.mpw104.actions.QoS.QoSNode"
> identity="name">
> <field name="children"
> type="uk.ac.soton.ecs.mpw104.actions.QoS.QoSNode"
> collection="arraylist" set-method="addChild">
> <bind-xml auto-naming="deriveByClass" node="element"
> required="true"/>
> </field>
> <field name="name" type="java.lang.String">
> <bind-xml name="id" node="attribute"/>
> </field>
> <!-- other stuff here -->
> </class>
>
> <class name="uk.ac.soton.ecs.mpw104.actions.QoS.QosFlowAction">
> <field name="rootNode"
> type="uk.ac.soton.ecs.mpw104.actions.QoS.QoSQdisc">
> <bind-xml name="root" node="element"/>
> </field>
> <field name="classMappings" collection="map">
> <bind-xml name="classify">
> <class name="org.exolab.castor.mapping.MapItem">
> <field name="key" type="java.lang.String">
> <bind-xml name="classification"
> node="attribute"/>
> </field>
> <field name="value"
> type="uk.ac.soton.ecs.mpw104.actions.QoS.QoSClass">
> <bind-xml name="trafficclass"
> reference="true"
> node="attribute"/>
> </field>
> </class>
> </bind-xml>
> </field>
>
> </class>
> <class name="uk.ac.soton.ecs.mpw104.actions.QoS.QoSClass"
> extends="uk.ac.soton.ecs.mpw104.actions.QoS.QoSNode">
> <map-to xml="class"/>
> </class>
>
> Instance document:
> <Action
> xsi:type="java:uk.ac.soton.ecs.mpw104.actions.QoS.QosFlowAction">
> <root dev="eth0" type="htb">
> <parameter name="default" value="30"/>
> <class type="htb">
>
> <class type="htb" id="besteffort">
> <!-- stuff here -->
> </class>
> </class>
> </root>
> <classify classification="BULK" trafficclass="besteffort"/>
>
> Java declarations:
>
> public class QosFlowAction extends OutputAction {
> protected Map<String,QoSClass> classMappings;
> // Other fields here
> public QosFlowAction() {
> classMappings = new HashMap<String,QoSClass>();
> }
>
> public Map<String, QoSClass> getClassMappings() {
> return classMappings;
> }
>
> public void setClassMappings(Map<String, QoSClass> classMappings) {
> this.classMappings = classMappings;
> }
> // other methods here
> }
>
> public abstract class QoSNode implements Scriptable {
> // other fields here
> protected String name;
>
> public QoSNode() {
> children = new LinkedList<QoSNode>();
> parameters = new HashMap<String,String>();
> }
> // other stuff here
> public String getName() {
> return name;
> }
>
> public void setName(String name) {
> this.name = name;
> }
> }
> public class QoSClass extends QoSNode {
> // no other useful stuff in here
> }
>
>
> ---------------------------------------------------------------------
> To unsubscribe from this list please visit:
>
> http://xircles.codehaus.org/manage_email
>
---------------------------------------------------------------------
To unsubscribe from this list please visit:
http://xircles.codehaus.org/manage_email