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

Reply via email to