jstrachan 02/05/30 00:48:38 Modified: betwixt/src/java/org/apache/commons/betwixt/io BeanCreateRule.java Log: Patched the code to fix all the unit test cases. The handling of collections of primitive types are now handled correctly. I think Betwixt now works for all Maven test cases Revision Changes Path 1.11 +26 -28 jakarta-commons-sandbox/betwixt/src/java/org/apache/commons/betwixt/io/BeanCreateRule.java Index: BeanCreateRule.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/betwixt/src/java/org/apache/commons/betwixt/io/BeanCreateRule.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- BeanCreateRule.java 29 May 2002 12:26:51 -0000 1.10 +++ BeanCreateRule.java 30 May 2002 07:48:38 -0000 1.11 @@ -5,7 +5,7 @@ * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. * - * $Id: BeanCreateRule.java,v 1.10 2002/05/29 12:26:51 jvanzyl Exp $ + * $Id: BeanCreateRule.java,v 1.11 2002/05/30 07:48:38 jstrachan Exp $ */ package org.apache.commons.betwixt.io; @@ -33,7 +33,7 @@ * from the betwixt XML metadata.</p> * * @author <a href="mailto:[EMAIL PROTECTED]">James Strachan</a> - * @version $Revision: 1.10 $ + * @version $Revision: 1.11 $ */ public class BeanCreateRule extends Rule { @@ -218,16 +218,8 @@ String path = prefix + qualifiedName; if ( childDescriptor.getUpdater() != null ) { - if ( isPrimitiveType( childDescriptor ) ) { - Rule rule = new Rule() { - public void body(String text) throws Exception { - childDescriptor.getUpdater().update( context, text ); - } - }; - digester.addRule( path, rule ); - if ( log.isDebugEnabled() ) { - log.debug( "Added rule to path: "+ path + " rule: " + rule ); - } + if ( childDescriptor.isPrimitiveType() ) { + addPrimitiveTypeRule(path, childDescriptor); } else { // add the first child to the path @@ -240,14 +232,20 @@ } } - Rule rule = new BeanCreateRule( childDescriptor, context, path + "/" ); - digester.addRule( path, rule ); - if ( log.isDebugEnabled() ) { - log.debug( "Added rule to path: "+ path + " rule: " + rule ); + // maybe we are adding a primitve type to a collection/array + Class beanClass = childDescriptor.getSingularPropertyType(); + if ( XMLIntrospectorHelper.isPrimitiveType( beanClass ) ) { + addPrimitiveTypeRule(path, childDescriptor); + } + else { + Rule rule = new BeanCreateRule( childDescriptor, context, path + "/" ); + digester.addRule( path, rule ); + if ( log.isDebugEnabled() ) { + log.debug( "Added rule to path: "+ path + " rule: " + rule ); + } } } - } - + } ElementDescriptor[] grandChildren = childDescriptor.getElementDescriptors(); if ( grandChildren != null && grandChildren.length > 0 ) { @@ -282,17 +280,17 @@ } /** - * @return true if this descriptor is a primitive type or - * the property descriptor is a collection of primitive types + * Adds a new Digester rule to process the text as a primitive type */ - protected boolean isPrimitiveType( ElementDescriptor descriptor ) { - if ( descriptor.isPrimitiveType() ) { - return true; - } - else { - // maybe we are adding a primitve type to a collection/array - Class beanClass = descriptor.getSingularPropertyType(); - return XMLIntrospectorHelper.isPrimitiveType( beanClass ); + protected void addPrimitiveTypeRule(String path, final ElementDescriptor childDescriptor) { + Rule rule = new Rule() { + public void body(String text) throws Exception { + childDescriptor.getUpdater().update( context, text ); + } + }; + digester.addRule( path, rule ); + if ( log.isDebugEnabled() ) { + log.debug( "Added rule to path: "+ path + " rule: " + rule ); } } }
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>