hi brian

i've added your name to the contributors list. send a patch if you'd like email address/organization/role filled in.

if you continue sending in patches and you're interested in developing betwixt over the long term, then we'll need to think about proposing you as a committer...

- robert

On 7 Apr 2004, at 23:27, b p wrote:

Thanks for committing the patch. That would be great to be added to the contributor list!

Thanks,
Brian



robert burrell donkin <[EMAIL PROTECTED]> wrote:
committed. many thanks.

BTW would you like to be added to the contributors list?

- robert

On 7 Apr 2004, at 05:26, b p wrote:

Hi Robert,

Thanks for commiting that last patch for Maps.

I ran into another problem as I tried to use a .betwixt file with a
Map. Comparing how descriptors are created with and without a
.betwixt file it seems that when a .betwixt file is used with a map,
the code to create a descriptor for the "entry" element is missing.
Below is a test case that shows the problem and a patch to the
ElementRule class that fixes the problem for this test case. Could
you take a look and put the patch in if the changes to ElementRule
look ok to you?

Thanks,
Brian

---test case---
MapBean.java

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

MapBean.betwixt








TestMap.java package org.apache.commons.betwixt.dotbetwixt; import junit.framework.TestCase; import java.io.StringWriter; import java.io.StringReader; import org.apache.commons.betwixt.io.BeanWriter; import org.apache.commons.betwixt.io.BeanReader; /** * @author Brian Pugh */ public class TestMap extends TestCase { public void testMapWithDotBetwixtFile() throws Exception { MapBean map = new MapBean(); String key = "one"; map.addValue(key, new Integer(1)); StringWriter outputWriter = new StringWriter(); outputWriter.write("\n"); BeanWriter beanWriter = new BeanWriter(outputWriter); beanWriter.enablePrettyPrint(); beanWriter.getBindingConfiguration().setMapIDs(true); beanWriter.write(map); BeanReader beanReader = new BeanReader(); // Configure the reader beanReader.registerBeanClass(MapBean.class); StringReader xmlReader = new StringReader(outputWriter.toString()); //Parse the xml MapBean result = (MapBean) beanReader.parse(xmlReader); assertNotNull("Should have deserialized a MapBean but got null.", result); assertEquals("Should have gotten the same value back from the Map after deserializing that was put in.", map.getValues().get(key), result.getValues().get(key));

}
}


--fix to element rule-- ? betwixt-refactor-branch-orig/src/test/org/apache/commons/betwixt/ dotbetwixt/MapBean.betwixt ? betwixt-refactor-branch-orig/src/test/org/apache/commons/betwixt/ dotbetwixt/MapBean.java ? betwixt-refactor-branch-orig/src/test/org/apache/commons/betwixt/ dotbetwixt/TestMap.java Index: betwixt-refactor-branch-orig/src/java/org/apache/commons/betwixt/ digester/ElementRule.java =================================================================== RCS file: /home/cvspublic/jakarta-commons/betwixt/src/java/org/apache/commons/ betwixt/digester/ElementRule.java,v retrieving revision 1.13.2.6 diff -u -r1.13.2.6 ElementRule.java --- betwixt-refactor-branch-orig/src/java/org/apache/commons/betwixt/ digester/ElementRule.java 8 Feb 2004 12:11:17 -0000 1.13.2.6 +++ betwixt-refactor-branch-orig/src/java/org/apache/commons/betwixt/ digester/ElementRule.java 7 Apr 2004 04:12:57 -0000 @@ -61,6 +61,7 @@ */ import java.beans.PropertyDescriptor; import java.lang.reflect.Method; +import java.util.Map;

import org.apache.commons.betwixt.ElementDescriptor;
import org.apache.commons.betwixt.XMLBeanInfo;
@@ -310,6 +311,19 @@
elementDescriptor.setHollow(true);

writeMethod = null;
+
+ if (Map.class.isAssignableFrom(type)) {
+ elementDescriptor.setLocalName( "entry" );
+ // add elements for reading
+ ElementDescriptor keyDescriptor = new
ElementDescriptor( "key" );
+ keyDescriptor.setHollow( true );
+ elementDescriptor.addElementDescriptor( keyDescriptor );
+
+ ElementDescriptor valueDescriptor = new
ElementDescriptor( "value" );
+ valueDescriptor.setHollow( true );
+ elementDescriptor.addElementDescriptor( valueDescriptor
);
+ }
+
} else {
log.trace( "Standard property" );
elementDescriptor.setHollow(true);




--------------------------------- Do you Yahoo!? Yahoo! Small Business $15K Web Design Giveaway - Enter today


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


--------------------------------- Do you Yahoo!? Yahoo! Small Business $15K Web Design Giveaway - Enter today


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to