hi, all,

I use the an Integer as the key in map collection in my mapping file,
but it is always String. So I can't retrieve the value by providing an int key.

Am I missing something here? Thanks for all your help.

I am not subscribed to this list, please CC me. 

Enclosed are my testing files.

mapping::

<?xml version="1.0"?>

<mapping>
  <class name="com.Parent">
    <map-to xml="parent" />
    <field name="children" type="com.Child" collection="map">
      <bind-xml name="child">
      </bind-xml>
    </field>
  </class>

  <class name="com.Child" identity="id">
    <map-to xml="child" />
    <field name="id" type="integer">
      <bind-xml name="id" node="attribute">
      </bind-xml>
    </field>
  </class>
</mapping>

xml file:

<?xml version="1.0"?>

<parent>
  <child id="1"/>
  <child id="2"/>
</parent>

Parent.java

package com;

import java.util.HashMap;
import java.util.Map;

public class Parent {

    private HashMap<Integer, Child> children;

    public Map<Integer, Child> getChildren() {
        return children;
    }

    public void setChildren(Map<Integer, Child> children) {
        this.children = new HashMap<Integer, Child>(children);
    }
}

Child.java

package com;

public class Child {
    private int id;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
}

My unit test :

    @Test public void test() {
        try {
            InputStream is = getClass().getResourceAsStream("/mapping.xml");
            Mapping mapping = new Mapping(getClass().getClassLoader());
            mapping.loadMapping(new InputSource(is));
            unmar = new Unmarshaller(mapping);
            unmar.setIgnoreExtraElements(true);

            InputStream stream = getClass().getResourceAsStream("/test.xml");
            DocumentBuilder builder = dbf.newDocumentBuilder();
            Document doc = builder.parse(stream, "parent");
            doc.getDocumentElement().normalize();

            String exprStr = "/parent";
            XPathExpression expr = xpath.compile(exprStr);
            Node node = (Node)expr.evaluate(doc, XPathConstants.NODE);

            Parent parent = (Parent)unmar.unmarshal((Element)node);
            System.err.println(parent.getChildren());
            for (Map.Entry entry : parent.getChildren().entrySet()) {
                System.err.println("key class = " + entry.getKey().getClass());
        }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

The Result is :

    [junit] ------------- Standard Error -----------------
    [junit] [EMAIL PROTECTED], [EMAIL PROTECTED]
    [junit] key class = class java.lang.String
    [junit] key class = class java.lang.String
    [junit] ------------- ---------------- ---------------

-- 
A. Because it makes the logic of the discussion difficult to follow.
Q. Why shoudn't I top post?
A. No.
Q Should I top post?

A: Because it destroys the flow of the conversation
Q: Why is it bad?
A: No, it's bad.
Q: Should I top post in replies to mailing lists? 

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

    http://xircles.codehaus.org/manage_email

Reply via email to