You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by Jason van Zyl <jv...@zenplex.com> on 2002/05/28 15:55:27 UTC
Re: cvs commit:
jakarta-commons-sandbox/betwixt/src/java/org/apache/commons/betwixt/digester
AddDefaultsRule.java RuleSupport.java XMLIntrospectorHelper.java
On Tue, 2002-05-28 at 09:38, jstrachan@apache.org wrote:
> jstrachan 02/05/28 06:38:27
>
> Modified: betwixt/src/test/org/apache/commons/betwixt
> TestMavenProject.java
> betwixt build.xml .cvsignore
> betwixt/src/java/org/apache/commons/betwixt
> XMLIntrospector.java
> betwixt/src/java/org/apache/commons/betwixt/digester
> AddDefaultsRule.java RuleSupport.java
> XMLIntrospectorHelper.java
> Added: betwixt/src/java/org/apache/commons/betwixt/strategy
> package.html DefaultPluralStemmer.java
> PluralStemmer.java
> Log:
> Added support for a pluggable Strategy for matching plural properties with singular adder methods.
>
> The default implementation seems to work for Maven's immediate requirements (or at least I've not found a case where it doesn't work ;-).
> It should be easy to plugin more comprehensive / complex strategies later on.
>
> Right now betwixt is close to being able to round trip Maven's Project object model; just need configurable extra wrapping elements around collections for Turbine/Maven style XML documents.
>
Cool!!!
James can we call this version of betwixt 0.3 or something like that
instead of the 1.0-dev name. I would like to cut a little release so
that I can integrate betwixt into maven with a uniquely identified
version.
> Revision Changes Path
> 1.2 +21 -0 jakarta-commons-sandbox/betwixt/src/test/org/apache/commons/betwixt/TestMavenProject.java
>
> Index: TestMavenProject.java
> ===================================================================
> RCS file: /home/cvs/jakarta-commons-sandbox/betwixt/src/test/org/apache/commons/betwixt/TestMavenProject.java,v
> retrieving revision 1.1
> retrieving revision 1.2
> diff -u -r1.1 -r1.2
> --- TestMavenProject.java 28 May 2002 11:49:29 -0000 1.1
> +++ TestMavenProject.java 28 May 2002 13:38:26 -0000 1.2
> @@ -68,6 +68,7 @@
> import java.io.StringWriter;
> import java.io.Writer;
> import java.net.URL;
> +import java.util.List;
>
> import junit.framework.Test;
> import junit.framework.TestCase;
> @@ -77,6 +78,8 @@
> import org.apache.commons.betwixt.io.BeanReader;
> import org.apache.commons.betwixt.io.BeanWriter;
>
> +import org.apache.maven.project.Dependency;
> +import org.apache.maven.project.Developer;
> import org.apache.maven.project.Project;
>
> import org.apache.commons.logging.Log;
> @@ -112,6 +115,9 @@
> // create a BeanReader
> BeanReader reader = new BeanReader();
>
> + // set elements for attributes to true
> + reader.getXMLIntrospector().setAttributesForPrimitives(false);
> +
> // #### remove the need to name the element, via a lower-case-naming strategy
> reader.registerBeanClass( "project", Project.class );
>
> @@ -123,6 +129,21 @@
> assertEquals( "commons-betwixt", project.getId() );
> assertEquals( "org.apache.commons.betwixt", project.getPackage() );
> assertEquals( "jakarta.apache.org", project.getSiteAddress() );
> +
> + List developers = project.getDevelopers();
> + assertTrue( "Found at least one developer", developers.size() > 0 );
> +
> + Developer developer = (Developer) developers.get(0);
> + assertEquals( "James Strachan", developer.getName() );
> + assertEquals( "jstrachan@apache.org", developer.getEmail() );
> +
> + List dependencies = project.getDependencies();
> + assertTrue( "Found at least one dependency", dependencies.size() > 0 );
> +
> + Dependency dependency = (Dependency) dependencies.get(0);
> + assertEquals( "commons-logging", dependency.getName() );
> + assertEquals( "required", dependency.getType() );
> +
> }
>
> /*
>
>
>
> 1.1 jakarta-commons-sandbox/betwixt/src/java/org/apache/commons/betwixt/strategy/package.html
>
> Index: package.html
> ===================================================================
> <html>
> <head>
> </head>
> <body>
>
> <p>This package contains a variety of plugin Strategy patterns that can be used to customize the
> default behaviour.of the XMLIntrospector
> </p>
>
> </body>
> </html>
>
>
>
> 1.1 jakarta-commons-sandbox/betwixt/src/java/org/apache/commons/betwixt/strategy/DefaultPluralStemmer.java
>
> Index: DefaultPluralStemmer.java
> ===================================================================
> /*
> * $Header: /home/cvs/jakarta-commons-sandbox/betwixt/src/java/org/apache/commons/betwixt/NodeDescriptor.java,v 1.8 2002/05/17 15:24:09 jstrachan Exp $
> * $Revision: 1.8 $
> * $Date: 2002/05/17 15:24:09 $
> *
> * ====================================================================
> *
> * The Apache Software License, Version 1.1
> *
> * Copyright (c) 1999-2002 The Apache Software Foundation. All rights
> * reserved.
> *
> * Redistribution and use in source and binary forms, with or without
> * modification, are permitted provided that the following conditions
> * are met:
> *
> * 1. Redistributions of source code must retain the above copyright
> * notice, this list of conditions and the following disclaimer.
> *
> * 2. Redistributions in binary form must reproduce the above copyright
> * notice, this list of conditions and the following disclaimer in
> * the documentation and/or other materials provided with the
> * distribution.
> *
> * 3. The end-user documentation included with the redistribution, if
> * any, must include the following acknowlegement:
> * "This product includes software developed by the
> * Apache Software Foundation (http://www.apache.org/)."
> * Alternately, this acknowlegement may appear in the software itself,
> * if and wherever such third-party acknowlegements normally appear.
> *
> * 4. The names "The Jakarta Project", "Commons", and "Apache Software
> * Foundation" must not be used to endorse or promote products derived
> * from this software without prior written permission. For written
> * permission, please contact apache@apache.org.
> *
> * 5. Products derived from this software may not be called "Apache"
> * nor may "Apache" appear in their names without prior written
> * permission of the Apache Group.
> *
> * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
> * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
> * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
> * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
> * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
> * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
> * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
> * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
> * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
> * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
> * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
> * SUCH DAMAGE.
> * ====================================================================
> *
> * This software consists of voluntary contributions made by many
> * individuals on behalf of the Apache Software Foundation. For more
> * information on the Apache Software Foundation, please see
> * <http://www.apache.org/>.
> *
> * $Id: NodeDescriptor.java,v 1.8 2002/05/17 15:24:09 jstrachan Exp $
> */
> package org.apache.commons.betwixt.strategy;
>
> /**
> * A default implementation of the plural name stemmer which
> * uses a simple starts-with algorithm and then tests for some common
> * english plural/singular patterns.
> *
> * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
> * @version $Revision: 1.8 $
> */
> public class DefaultPluralStemmer implements PluralStemmer {
>
> /**
> * @return true if the given plural name matches the singular name
> */
> public boolean isPluralNameFor(String pluralName, String singularName) {
> if ( pluralName.startsWith( singularName ) ) {
> return true;
> }
>
> // test for common english singlular/plural endings
> if ( pluralName.endsWith( "ies" ) && singularName.endsWith( "y" ) ) {
> String pluralStart = pluralName.substring(0, pluralName.length() - 3 );
> String singularStart = singularName.substring(0, singularName.length() - 1 );
> if ( pluralStart.equals( singularStart ) ) {
> return true;
> }
> }
>
> // None of the tests detected a plural
> return false;
> }
>
> }
>
>
>
> 1.1 jakarta-commons-sandbox/betwixt/src/java/org/apache/commons/betwixt/strategy/PluralStemmer.java
>
> Index: PluralStemmer.java
> ===================================================================
> /*
> * $Header: /home/cvs/jakarta-commons-sandbox/betwixt/src/java/org/apache/commons/betwixt/NodeDescriptor.java,v 1.8 2002/05/17 15:24:09 jstrachan Exp $
> * $Revision: 1.8 $
> * $Date: 2002/05/17 15:24:09 $
> *
> * ====================================================================
> *
> * The Apache Software License, Version 1.1
> *
> * Copyright (c) 1999-2002 The Apache Software Foundation. All rights
> * reserved.
> *
> * Redistribution and use in source and binary forms, with or without
> * modification, are permitted provided that the following conditions
> * are met:
> *
> * 1. Redistributions of source code must retain the above copyright
> * notice, this list of conditions and the following disclaimer.
> *
> * 2. Redistributions in binary form must reproduce the above copyright
> * notice, this list of conditions and the following disclaimer in
> * the documentation and/or other materials provided with the
> * distribution.
> *
> * 3. The end-user documentation included with the redistribution, if
> * any, must include the following acknowlegement:
> * "This product includes software developed by the
> * Apache Software Foundation (http://www.apache.org/)."
> * Alternately, this acknowlegement may appear in the software itself,
> * if and wherever such third-party acknowlegements normally appear.
> *
> * 4. The names "The Jakarta Project", "Commons", and "Apache Software
> * Foundation" must not be used to endorse or promote products derived
> * from this software without prior written permission. For written
> * permission, please contact apache@apache.org.
> *
> * 5. Products derived from this software may not be called "Apache"
> * nor may "Apache" appear in their names without prior written
> * permission of the Apache Group.
> *
> * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
> * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
> * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
> * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
> * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
> * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
> * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
> * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
> * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
> * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
> * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
> * SUCH DAMAGE.
> * ====================================================================
> *
> * This software consists of voluntary contributions made by many
> * individuals on behalf of the Apache Software Foundation. For more
> * information on the Apache Software Foundation, please see
> * <http://www.apache.org/>.
> *
> * $Id: NodeDescriptor.java,v 1.8 2002/05/17 15:24:09 jstrachan Exp $
> */
> package org.apache.commons.betwixt.strategy;
>
> /**
> * A plugin Strategy pattern for detecting matching singular and plural
> * names on bean properties. When composite properties (such as properties
> * of type Collection, List, Iterator, Enumeration) are used we need to
> * match the adder-method, which typically uses a singular name.
> * This interface allows a variety of different implementations to be used.
> *
> * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
> * @version $Revision: 1.8 $
> */
> public interface PluralStemmer {
>
> /**
> * @return true if the given plural name matches the singular name
> */
> boolean isPluralNameFor(String pluralName, String singularName);
>
> }
>
>
>
> 1.18 +4 -4 jakarta-commons-sandbox/betwixt/build.xml
>
> Index: build.xml
> ===================================================================
> RCS file: /home/cvs/jakarta-commons-sandbox/betwixt/build.xml,v
> retrieving revision 1.17
> retrieving revision 1.18
> diff -u -r1.17 -r1.18
> --- build.xml 28 May 2002 11:49:29 -0000 1.17
> +++ build.xml 28 May 2002 13:38:26 -0000 1.18
> @@ -1,6 +1,6 @@
> <?xml version="1.0"?>
>
> -<!-- $Id: build.xml,v 1.17 2002/05/28 11:49:29 jstrachan Exp $ -->
> +<!-- $Id: build.xml,v 1.18 2002/05/28 13:38:26 jstrachan Exp $ -->
> <project name="betwixt" default="maven:jar" basedir=".">
>
>
> @@ -247,14 +247,14 @@
> </target>
>
> <target name="test.maven"
> - description="Runs the RSS round trip unit tests">
> + description="Runs the Maven unit test">
> <property name="maven.testcase" value="org.apache.commons.betwixt.TestMavenProject"/>
> <maven-ant antfile="${maven.home}/plugins/test/build.xml" target="run-singletest"/>
> </target>
>
>
> - <target name="test.maven2" depends="compile.tests"
> - description="Runs the RSS round trip unit tests">
> + <target name="test.maven.debug" depends="compile.tests"
> + description="Runs the Maven unit test, with debugging on">
> <java classname="org.apache.commons.betwixt.TestMavenProject" fork="yes">
> <classpath refid="test.classpath"/>
> <sysproperty key="org.apache.commons.logging.simplelog.defaultlog" value="debug"/>
>
>
>
> 1.3 +1 -0 jakarta-commons-sandbox/betwixt/.cvsignore
>
> Index: .cvsignore
> ===================================================================
> RCS file: /home/cvs/jakarta-commons-sandbox/betwixt/.cvsignore,v
> retrieving revision 1.2
> retrieving revision 1.3
> diff -u -r1.2 -r1.3
> --- .cvsignore 22 May 2002 18:13:40 -0000 1.2
> +++ .cvsignore 28 May 2002 13:38:26 -0000 1.3
> @@ -4,3 +4,4 @@
> velocity.log
> .project
>
> +foo.txt
>
>
>
> 1.23 +47 -9 jakarta-commons-sandbox/betwixt/src/java/org/apache/commons/betwixt/XMLIntrospector.java
>
> Index: XMLIntrospector.java
> ===================================================================
> RCS file: /home/cvs/jakarta-commons-sandbox/betwixt/src/java/org/apache/commons/betwixt/XMLIntrospector.java,v
> retrieving revision 1.22
> retrieving revision 1.23
> diff -u -r1.22 -r1.23
> --- XMLIntrospector.java 17 May 2002 15:24:09 -0000 1.22
> +++ XMLIntrospector.java 28 May 2002 13:38:26 -0000 1.23
> @@ -1,7 +1,7 @@
> /*
> - * $Header: /home/cvs/jakarta-commons-sandbox/betwixt/src/java/org/apache/commons/betwixt/XMLIntrospector.java,v 1.22 2002/05/17 15:24:09 jstrachan Exp $
> - * $Revision: 1.22 $
> - * $Date: 2002/05/17 15:24:09 $
> + * $Header: /home/cvs/jakarta-commons-sandbox/betwixt/src/java/org/apache/commons/betwixt/XMLIntrospector.java,v 1.23 2002/05/28 13:38:26 jstrachan Exp $
> + * $Revision: 1.23 $
> + * $Date: 2002/05/28 13:38:26 $
> *
> * ====================================================================
> *
> @@ -57,7 +57,7 @@
> * information on the Apache Software Foundation, please see
> * <http://www.apache.org/>.
> *
> - * $Id: XMLIntrospector.java,v 1.22 2002/05/17 15:24:09 jstrachan Exp $
> + * $Id: XMLIntrospector.java,v 1.23 2002/05/28 13:38:26 jstrachan Exp $
> */
> package org.apache.commons.betwixt;
>
> @@ -91,6 +91,8 @@
> import org.apache.commons.betwixt.expression.StringExpression;
> import org.apache.commons.betwixt.digester.XMLBeanInfoDigester;
> import org.apache.commons.betwixt.digester.XMLIntrospectorHelper;
> +import org.apache.commons.betwixt.strategy.DefaultPluralStemmer;
> +import org.apache.commons.betwixt.strategy.PluralStemmer;
>
> /** <p><code>XMLIntrospector</code> an introspector of beans to create a XMLBeanInfo instance.</p>
> *
> @@ -100,20 +102,28 @@
> * Later requests for the same class will return the cached value.</p>
> *
> * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
> - * @version $Revision: 1.22 $
> + * @version $Revision: 1.23 $
> */
> public class XMLIntrospector {
>
> + /** Log used for logging (Doh!) */
> + protected Log log = LogFactory.getLog( XMLIntrospector.class );
> +
> /** should attributes or elements be used for primitive types */
> private boolean attributesForPrimitives = false;
> - /** Log used for logging (Doh!) */
> - protected Log log = LogFactory.getLog( XMLIntrospector.class );
> +
> /** Maps classes to <code>XMLBeanInfo</code>'s */
> protected HashMap cacheXMLBeanInfos = new HashMap();
> +
> /** Is <code>XMLBeanInfo</code> caching enabled? */
> boolean cachingEnabled = true;
> +
> /** Digester used to parse the XML descriptor files */
> private XMLBeanInfoDigester digester;
> +
> + /** The strategy used to detect matching singular and plural properties */
> + private PluralStemmer pluralStemmer;
> +
> /** Base constructor */
> public XMLIntrospector() {
> }
> @@ -261,10 +271,14 @@
> answer.setElementDescriptor( elementDescriptor );
>
> // default any addProperty() methods
> - XMLIntrospectorHelper.defaultAddMethods( elementDescriptor, beanClass );
> + XMLIntrospectorHelper.defaultAddMethods( this, elementDescriptor, beanClass );
>
> return answer;
> }
> +
> +
> + // Properties
> + //-------------------------------------------------------------------------
>
> /** Should attributes (or elements) be used for primitive types.
> */
> @@ -277,9 +291,33 @@
> this.attributesForPrimitives = attributesForPrimitives;
> }
>
> + /**
> + * @return the strategy used to detect matching singular and plural properties
> + */
> + public PluralStemmer getPluralStemmer() {
> + if ( pluralStemmer == null ) {
> + pluralStemmer = createPluralStemmer();
> + }
> + return pluralStemmer;
> + }
> +
> + /**
> + * Sets the strategy used to detect matching singular and plural properties
> + */
> + public void setPluralStemmer(PluralStemmer pluralStemmer) {
> + this.pluralStemmer = pluralStemmer;
> + }
> +
>
> // Implementation methods
> - //-------------------------------------------------------------------------
> + //-------------------------------------------------------------------------
> +
> + /**
> + * A Factory method to lazily create a new strategy to detect matching singular and plural properties
> + */
> + protected PluralStemmer createPluralStemmer() {
> + return new DefaultPluralStemmer();
> + }
>
> /**
> * Attempt to lookup the XML descriptor for the given class using the
>
>
>
> 1.5 +6 -6 jakarta-commons-sandbox/betwixt/src/java/org/apache/commons/betwixt/digester/AddDefaultsRule.java
>
> Index: AddDefaultsRule.java
> ===================================================================
> RCS file: /home/cvs/jakarta-commons-sandbox/betwixt/src/java/org/apache/commons/betwixt/digester/AddDefaultsRule.java,v
> retrieving revision 1.4
> retrieving revision 1.5
> diff -u -r1.4 -r1.5
> --- AddDefaultsRule.java 17 May 2002 15:24:12 -0000 1.4
> +++ AddDefaultsRule.java 28 May 2002 13:38:26 -0000 1.5
> @@ -1,7 +1,7 @@
> /*
> - * $Header: /home/cvs/jakarta-commons-sandbox/betwixt/src/java/org/apache/commons/betwixt/digester/AddDefaultsRule.java,v 1.4 2002/05/17 15:24:12 jstrachan Exp $
> - * $Revision: 1.4 $
> - * $Date: 2002/05/17 15:24:12 $
> + * $Header: /home/cvs/jakarta-commons-sandbox/betwixt/src/java/org/apache/commons/betwixt/digester/AddDefaultsRule.java,v 1.5 2002/05/28 13:38:26 jstrachan Exp $
> + * $Revision: 1.5 $
> + * $Date: 2002/05/28 13:38:26 $
> *
> * ====================================================================
> *
> @@ -57,7 +57,7 @@
> * information on the Apache Software Foundation, please see
> * <http://www.apache.org/>.
> *
> - * $Id: AddDefaultsRule.java,v 1.4 2002/05/17 15:24:12 jstrachan Exp $
> + * $Id: AddDefaultsRule.java,v 1.5 2002/05/28 13:38:26 jstrachan Exp $
> */
> package org.apache.commons.betwixt.digester;
>
> @@ -87,7 +87,7 @@
> * to the current element.</p>
> *
> * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
> - * @version $Revision: 1.4 $
> + * @version $Revision: 1.5 $
> */
> public class AddDefaultsRule extends RuleSupport {
>
> @@ -138,7 +138,7 @@
> }
>
> // default any addProperty() methods
> - XMLIntrospectorHelper.defaultAddMethods( getRootElementDescriptor(), beanClass );
> + XMLIntrospectorHelper.defaultAddMethods( getXMLIntrospector(), getRootElementDescriptor(), beanClass );
> }
>
>
>
>
>
> 1.3 +9 -5 jakarta-commons-sandbox/betwixt/src/java/org/apache/commons/betwixt/digester/RuleSupport.java
>
> Index: RuleSupport.java
> ===================================================================
> RCS file: /home/cvs/jakarta-commons-sandbox/betwixt/src/java/org/apache/commons/betwixt/digester/RuleSupport.java,v
> retrieving revision 1.2
> retrieving revision 1.3
> diff -u -r1.2 -r1.3
> --- RuleSupport.java 17 May 2002 15:24:12 -0000 1.2
> +++ RuleSupport.java 28 May 2002 13:38:26 -0000 1.3
> @@ -1,7 +1,7 @@
> /*
> - * $Header: /home/cvs/jakarta-commons-sandbox/betwixt/src/java/org/apache/commons/betwixt/digester/RuleSupport.java,v 1.2 2002/05/17 15:24:12 jstrachan Exp $
> - * $Revision: 1.2 $
> - * $Date: 2002/05/17 15:24:12 $
> + * $Header: /home/cvs/jakarta-commons-sandbox/betwixt/src/java/org/apache/commons/betwixt/digester/RuleSupport.java,v 1.3 2002/05/28 13:38:26 jstrachan Exp $
> + * $Revision: 1.3 $
> + * $Date: 2002/05/28 13:38:26 $
> *
> * ====================================================================
> *
> @@ -57,7 +57,7 @@
> * information on the Apache Software Foundation, please see
> * <http://www.apache.org/>.
> *
> - * $Id: RuleSupport.java,v 1.2 2002/05/17 15:24:12 jstrachan Exp $
> + * $Id: RuleSupport.java,v 1.3 2002/05/28 13:38:26 jstrachan Exp $
> */
> package org.apache.commons.betwixt.digester;
>
> @@ -89,7 +89,7 @@
> * helper methods.</p>
> *
> * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
> - * @version $Revision: 1.2 $
> + * @version $Revision: 1.3 $
> */
> public class RuleSupport extends Rule {
>
> @@ -106,6 +106,10 @@
> //-------------------------------------------------------------------------
> protected XMLBeanInfoDigester getXMLInfoDigester() {
> return (XMLBeanInfoDigester) getDigester();
> + }
> +
> + protected XMLIntrospector getXMLIntrospector() {
> + return getXMLInfoDigester().getXMLIntrospector();
> }
>
> protected Class getBeanClass() {
>
>
>
> 1.5 +17 -13 jakarta-commons-sandbox/betwixt/src/java/org/apache/commons/betwixt/digester/XMLIntrospectorHelper.java
>
> Index: XMLIntrospectorHelper.java
> ===================================================================
> RCS file: /home/cvs/jakarta-commons-sandbox/betwixt/src/java/org/apache/commons/betwixt/digester/XMLIntrospectorHelper.java,v
> retrieving revision 1.4
> retrieving revision 1.5
> diff -u -r1.4 -r1.5
> --- XMLIntrospectorHelper.java 17 May 2002 15:24:12 -0000 1.4
> +++ XMLIntrospectorHelper.java 28 May 2002 13:38:26 -0000 1.5
> @@ -1,7 +1,7 @@
> /*
> - * $Header: /home/cvs/jakarta-commons-sandbox/betwixt/src/java/org/apache/commons/betwixt/digester/XMLIntrospectorHelper.java,v 1.4 2002/05/17 15:24:12 jstrachan Exp $
> - * $Revision: 1.4 $
> - * $Date: 2002/05/17 15:24:12 $
> + * $Header: /home/cvs/jakarta-commons-sandbox/betwixt/src/java/org/apache/commons/betwixt/digester/XMLIntrospectorHelper.java,v 1.5 2002/05/28 13:38:26 jstrachan Exp $
> + * $Revision: 1.5 $
> + * $Date: 2002/05/28 13:38:26 $
> *
> * ====================================================================
> *
> @@ -57,7 +57,7 @@
> * information on the Apache Software Foundation, please see
> * <http://www.apache.org/>.
> *
> - * $Id: XMLIntrospectorHelper.java,v 1.4 2002/05/17 15:24:12 jstrachan Exp $
> + * $Id: XMLIntrospectorHelper.java,v 1.5 2002/05/28 13:38:26 jstrachan Exp $
> */
> package org.apache.commons.betwixt.digester;
>
> @@ -86,18 +86,20 @@
> import org.apache.commons.betwixt.ElementDescriptor;
> import org.apache.commons.betwixt.NodeDescriptor;
> import org.apache.commons.betwixt.XMLBeanInfo;
> +import org.apache.commons.betwixt.XMLIntrospector;
> import org.apache.commons.betwixt.expression.EmptyExpression;
> import org.apache.commons.betwixt.expression.Expression;
> import org.apache.commons.betwixt.expression.IteratorExpression;
> import org.apache.commons.betwixt.expression.MethodExpression;
> import org.apache.commons.betwixt.expression.MethodUpdater;
> import org.apache.commons.betwixt.expression.StringExpression;
> +import org.apache.commons.betwixt.strategy.PluralStemmer;
>
> /** <p><code>XMLIntrospectorHelper</code> a helper class for
> * common code shared between the digestor and introspector.</p>
> *
> * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
> - * @version $Revision: 1.4 $
> + * @version $Revision: 1.5 $
> */
> public class XMLIntrospectorHelper {
>
> @@ -311,7 +313,7 @@
> * the string. This should work for most use cases.
> * e.g. addChild() would match the children property.
> */
> - public static void defaultAddMethods( ElementDescriptor rootDescriptor, Class beanClass ) {
> + public static void defaultAddMethods( XMLIntrospector introspector, ElementDescriptor rootDescriptor, Class beanClass ) {
> // lets iterate over all methods looking for one of the form
> // add*(PropertyType)
> if ( beanClass != null ) {
> @@ -330,7 +332,7 @@
> // a property which starts with propertyName
> // and if so, we'll set a new Updater on it if there
> // is not one already
> - ElementDescriptor descriptor = findGetCollectionDescriptor( rootDescriptor, propertyName );
> + ElementDescriptor descriptor = findGetCollectionDescriptor( introspector, rootDescriptor, propertyName );
> if ( descriptor != null ) {
> if ( descriptor.getUpdater() == null ) {
> if ( log.isDebugEnabled() ) {
> @@ -390,16 +392,19 @@
> * to match. e.g. if an addChild() method is detected the
> * descriptor for the 'children' getter property should be returned.
> */
> - protected static ElementDescriptor findGetCollectionDescriptor( ElementDescriptor rootDescriptor, String propertyName ) {
> + protected static ElementDescriptor findGetCollectionDescriptor( XMLIntrospector introspector, ElementDescriptor rootDescriptor, String propertyName ) {
> + PluralStemmer stemmer = introspector.getPluralStemmer();
> ElementDescriptor[] children = rootDescriptor.getElementDescriptors();
> if ( children != null ) {
> for ( int i = 0, size = children.length; i < size; i++ ) {
> ElementDescriptor child = children[i];
> - String childPropertyName = child.getPropertyName();
> - if ( childPropertyName != null && childPropertyName.startsWith( propertyName ) ) {
> - return child;
> + String childPropertyName = child.getPropertyName();
> + if ( childPropertyName != null ) {
> + if ( stemmer.isPluralNameFor(childPropertyName, propertyName) ) {
> + return child;
> + }
> }
> - ElementDescriptor answer = findGetCollectionDescriptor( child, propertyName );
> + ElementDescriptor answer = findGetCollectionDescriptor( introspector, child, propertyName );
> if ( answer != null ) {
> return answer;
> }
> @@ -407,5 +412,4 @@
> }
> return null;
> }
> -
> }
>
>
>
>
> --
> To unsubscribe, e-mail: <ma...@jakarta.apache.org>
> For additional commands, e-mail: <ma...@jakarta.apache.org>
--
jvz.
Jason van Zyl
jvanzyl@apache.org
http://tambora.zenplex.org
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
[betwixt] release? (WAS: Re: cvs commit:jakarta-commons-sandbox/betwixt/src/java/org/apache/commons/betwixt/digester AddDefaultsRule.java RuleSupport.java XMLIntrospectorHelper.java
Posted by robert burrell donkin <ro...@mac.com>.
On Tuesday, May 28, 2002, at 05:50 PM, Jason van Zyl wrote:
> On Tue, 2002-05-28 at 12:47, robert burrell donkin wrote:
<snip>
>> jason - betwixt is missing a committer if we want to push for promotion
>> into the common proper. fancy volunteering?
>
> Definitely, I will write some docs for the strategies. And I will
> probably nick the plural stemmer in lucene to spruce up the baby plural
> stemmer that was in XO.
cool.
i suppose that the right order should be promotion then release. i don't
know if i think that there's anything particularly wrong with sandbox
components having releases but it'd certainly be neater to have the
release in the commons with all the rest.
- robert
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
Re: cvs
commit:jakarta-commons-sandbox/betwixt/src/java/org/apache/commons/betwixt/d
igester AddDefaultsRule.java RuleSupport.java XMLIntrospectorHelper.java
Posted by Jason van Zyl <jv...@zenplex.com>.
On Tue, 2002-05-28 at 12:47, robert burrell donkin wrote:
>
> On Tuesday, May 28, 2002, at 03:58 PM, Jason van Zyl wrote:
>
> > On Tue, 2002-05-28 at 10:53, James Strachan wrote:
> >> From: "Jason van Zyl" <jv...@zenplex.com>
> >>>> Right now betwixt is close to being able to round trip Maven's
> >>>> Project
> >> object model; just need configurable extra wrapping elements around
> >> collections for Turbine/Maven style XML documents.
> >>>>
> >>>
> >>> Cool!!!
> >>>
> >>> James can we call this version of betwixt 0.3 or something like that
> >>> instead of the 1.0-dev name. I would like to cut a little release so
> >>> that I can integrate betwixt into maven with a uniquely identified
> >>> version.
> >>
> >> Why don't we do a full 1.0 release? Its about time; the code has been
> >> pretty
> >> stable for some time.
> >>
> >> Let me do a bit more hacking to ensure a clean round trip from XML ->
> >> bean -> XML -> bean for Maven project beans; then thats a good time to
> >> do a
> >> release. I should get the code finished today I hope, then we can test it
> >> out for a few days.
> >
> > Sounds good to me, we should also push betwixt up to the commons proper.
>
> i think that there are some (obscure) bugs in the current round tripping
> code but i'm in favour of cutting a release now. so here's my +1.
>
> jason - betwixt is missing a committer if we want to push for promotion
> into the common proper. fancy volunteering?
Definitely, I will write some docs for the strategies. And I will
probably nick the plural stemmer in lucene to spruce up the baby plural
stemmer that was in XO.
> - robert
>
>
> --
> To unsubscribe, e-mail: <ma...@jakarta.apache.org>
> For additional commands, e-mail: <ma...@jakarta.apache.org>
--
jvz.
Jason van Zyl
jvanzyl@apache.org
http://tambora.zenplex.org
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
Re: cvs commit:jakarta-commons-sandbox/betwixt/src/java/org/apache/commons/betwixt/d igester AddDefaultsRule.java RuleSupport.java XMLIntrospectorHelper.java
Posted by robert burrell donkin <ro...@mac.com>.
On Tuesday, May 28, 2002, at 03:58 PM, Jason van Zyl wrote:
> On Tue, 2002-05-28 at 10:53, James Strachan wrote:
>> From: "Jason van Zyl" <jv...@zenplex.com>
>>>> Right now betwixt is close to being able to round trip Maven's
>>>> Project
>> object model; just need configurable extra wrapping elements around
>> collections for Turbine/Maven style XML documents.
>>>>
>>>
>>> Cool!!!
>>>
>>> James can we call this version of betwixt 0.3 or something like that
>>> instead of the 1.0-dev name. I would like to cut a little release so
>>> that I can integrate betwixt into maven with a uniquely identified
>>> version.
>>
>> Why don't we do a full 1.0 release? Its about time; the code has been
>> pretty
>> stable for some time.
>>
>> Let me do a bit more hacking to ensure a clean round trip from XML ->
>> bean -> XML -> bean for Maven project beans; then thats a good time to
>> do a
>> release. I should get the code finished today I hope, then we can test it
>> out for a few days.
>
> Sounds good to me, we should also push betwixt up to the commons proper.
i think that there are some (obscure) bugs in the current round tripping
code but i'm in favour of cutting a release now. so here's my +1.
jason - betwixt is missing a committer if we want to push for promotion
into the common proper. fancy volunteering?
- robert
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
Re: cvs
commit:jakarta-commons-sandbox/betwixt/src/java/org/apache/commons/betwixt/d
igester AddDefaultsRule.java RuleSupport.java XMLIntrospectorHelper.java
Posted by Jason van Zyl <jv...@zenplex.com>.
On Tue, 2002-05-28 at 10:53, James Strachan wrote:
> From: "Jason van Zyl" <jv...@zenplex.com>
> > > Right now betwixt is close to being able to round trip Maven's Project
> object model; just need configurable extra wrapping elements around
> collections for Turbine/Maven style XML documents.
> > >
> >
> > Cool!!!
> >
> > James can we call this version of betwixt 0.3 or something like that
> > instead of the 1.0-dev name. I would like to cut a little release so
> > that I can integrate betwixt into maven with a uniquely identified
> > version.
>
> Why don't we do a full 1.0 release? Its about time; the code has been pretty
> stable for some time.
>
> Let me do a bit more hacking to ensure a clean round trip from XML ->
> bean -> XML -> bean for Maven project beans; then thats a good time to do a
> release. I should get the code finished today I hope, then we can test it
> out for a few days.
Sounds good to me, we should also push betwixt up to the commons proper.
> James
>
>
> _________________________________________________________
> Do You Yahoo!?
> Get your free @yahoo.com address at http://mail.yahoo.com
>
>
> --
> To unsubscribe, e-mail: <ma...@jakarta.apache.org>
> For additional commands, e-mail: <ma...@jakarta.apache.org>
--
jvz.
Jason van Zyl
jvanzyl@apache.org
http://tambora.zenplex.org
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
Re: cvs commit:jakarta-commons-sandbox/betwixt/src/java/org/apache/commons/betwixt/digester AddDefaultsRule.java RuleSupport.java XMLIntrospectorHelper.java
Posted by James Strachan <ja...@yahoo.co.uk>.
From: "Jason van Zyl" <jv...@zenplex.com>
> > Right now betwixt is close to being able to round trip Maven's Project
object model; just need configurable extra wrapping elements around
collections for Turbine/Maven style XML documents.
> >
>
> Cool!!!
>
> James can we call this version of betwixt 0.3 or something like that
> instead of the 1.0-dev name. I would like to cut a little release so
> that I can integrate betwixt into maven with a uniquely identified
> version.
Why don't we do a full 1.0 release? Its about time; the code has been pretty
stable for some time.
Let me do a bit more hacking to ensure a clean round trip from XML ->
bean -> XML -> bean for Maven project beans; then thats a good time to do a
release. I should get the code finished today I hope, then we can test it
out for a few days.
James
_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>