Hi Robert,
 
I've gotten back to working with betwixt and I am still working off your refactoring 
branch.  I've found a problem in reading Maps because the "adder" is not getting 
called correctly in MapEntryAdder (seems to be confusing the types of the key and 
value).  I've included a patch that has a test case as well a fix to MapEntryAdder.  
Could you take a look and if this looks like a valid problem and fix commit the patch?
 
Thanks,
Brian
 
? betwixt-refactor-branch-orig/src/test/org/apache/commons/betwixt/IdMap.java
Index: 
betwixt-refactor-branch-orig/src/java/org/apache/commons/betwixt/expression/MapEntryAdder.java
===================================================================
RCS file: 
/home/cvspublic/jakarta-commons/betwixt/src/java/org/apache/commons/betwixt/expression/MapEntryAdder.java,v
retrieving revision 1.4
diff -u -r1.4 MapEntryAdder.java
--- 
betwixt-refactor-branch-orig/src/java/org/apache/commons/betwixt/expression/MapEntryAdder.java
 9 Oct 2003 20:52:04 -0000 1.4
+++ 
betwixt-refactor-branch-orig/src/java/org/apache/commons/betwixt/expression/MapEntryAdder.java
 17 Mar 2004 22:27:37 -0000
@@ -235,13 +235,13 @@
             if ( key instanceof String ) {
                 // try to convert into primitive types
                 key = context.getObjectStringConverter()
-                        .stringToObject( (String) key, valueType, null, context );
+                        .stringToObject( (String) key, keyType, null, context );
             }
             
             if ( value instanceof String ) {
                 // try to convert into primitive types
                 value = context.getObjectStringConverter()
-                        .stringToObject( (String) value, keyType, null, context );
+                        .stringToObject( (String) value, valueType, null, context );
             }
                  
             Object[] arguments = { key, value };
Index: 
betwixt-refactor-branch-orig/src/test/org/apache/commons/betwixt/TestBeanReader.java
===================================================================
RCS file: 
/home/cvspublic/jakarta-commons/betwixt/src/test/org/apache/commons/betwixt/TestBeanReader.java,v
retrieving revision 1.21.2.3
diff -u -r1.21.2.3 TestBeanReader.java
--- 
betwixt-refactor-branch-orig/src/test/org/apache/commons/betwixt/TestBeanReader.java 
18 Jan 2004 22:25:23 -0000 1.21.2.3
+++ 
betwixt-refactor-branch-orig/src/test/org/apache/commons/betwixt/TestBeanReader.java 
17 Mar 2004 22:27:37 -0000
@@ -686,7 +686,27 @@
         assertEquals("Bad address (11)",  "United Kingdom", address.getCountry());
         assertEquals("Bad address (12)", "BD18 2BJ", address.getCode());
     }
-    
+
+  public void testReadMap2() throws Exception{
+    IdMap idMap = new IdMap();
+    String id ="3920";
+    idMap.addId(id, new Integer(1));
+    StringWriter outputWriter = new StringWriter();
+    outputWriter.write("<?xml version='1.0' ?>\n");
+    BeanWriter beanWriter = new BeanWriter(outputWriter);
+    beanWriter.write(idMap);
+    String xml = outputWriter.toString();
+    System.out.println("Map test: " + xml);
+
+    BeanReader beanReader = new BeanReader();
+    beanReader.registerBeanClass(IdMap.class);
+    IdMap result = (IdMap)beanReader.parse(new StringReader(xml));
+    assertNotNull("didn't get an object back!", result);
+    assertNotNull("didn't get a Map out of the IdMap!", result.getIds());
+    assertEquals("Got the Map, but doesn't have an entry!", 1, 
result.getIds().size());
+    assertNotNull("Got the Map, but doesn't have correct values!", 
result.getIds().get(id));
+  }
+
     public void testIndirectReference() throws Exception
     { 
         Tweedledum dum = new Tweedledum();

 
 
-----------------------------------------------------------
 
package org.apache.commons.betwixt;
import java.util.HashMap;
import java.util.Map;
/**
 * @author Brian Pugh
 */
public class IdMap {
  private Map ids = new HashMap();
  public Map getIds() {
    return ids;
  }
  public void addId(String key, Integer value) {
    this.ids.put(key, value);
  }
}
 
 

Do you Yahoo!?
Yahoo! Mail - More reliable, more storage, less spam

Reply via email to