commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From robert burrell donkin <robertburrelldon...@blueyonder.co.uk>
Subject Re: [betwixt] [patch] lazy initialization bug in ElementDescriptor
Date Fri, 16 May 2003 13:34:01 GMT
committed. many thanks.

- robert

On Wednesday, May 14, 2003, at 11:29 PM, Neeme Praks wrote:

>
> The *bug*: when a user specifies the ID attribute in beaninfo file, then 
> the attribute declaration is ignored on the first bean and respected on 
> all the following beans.
> Example .betwixt file:
> <info>
>    <element name="Language">
>        <attribute name="id" property="id"/>
>        <addDefaults/>
>    </element>
> </info>
>
> The *cause*? The method XMLBeanInfo.findIDAttribute() uses 
> getElementDescriptor().hasAttributes() method to find out if the element 
> has any attributes defined. This method makes the following check:
>    return attributeDescriptors != null && attributeDescriptors.length > 0;
> Everything would be ok, if the attributeDescriptors field wouldn't be 
> lazily initialized (in getAttributeDescriptors() method). So, the fix is 
> to change the check to use this method instead.
> Also, similar issue with hasChildren() and hasContent() methods, but I'm 
> not sure if they would result in similar bugs. I fixed them also, just in 
> case.
>
> Patch attached.
>
> Rgds,
> Neeme
> Index: src/java/org/apache/commons/betwixt/ElementDescriptor.java
> ===================================================================
> RCS file: /home/cvspublic/jakarta-
> commons/betwixt/src/java/org/apache/commons/betwixt/ElementDescriptor.java,
> v
> retrieving revision 1.8
> diff -u -r1.8 ElementDescriptor.java
> --- src/java/org/apache/commons/betwixt/ElementDescriptor.java	19 Mar 2003 
> 22:59:01 -0000	1.8
> +++ src/java/org/apache/commons/betwixt/ElementDescriptor.java	14 May 2003 
> 22:15:05 -0000
> @@ -168,7 +168,7 @@
>       * @see #getElementDescriptors
>       */
>      public boolean hasChildren() {
> -        return elementDescriptors != null && elementDescriptors.length >

> 0;
> +        return getElementDescriptors().length > 0;
>      }
>
>      /**
> @@ -177,7 +177,7 @@
>       * @see #getAttributeDescriptors
>       */
>      public boolean hasAttributes() {
> -        return attributeDescriptors != null && 
> attributeDescriptors.length > 0;
> +        return getAttributeDescriptors().length > 0;
>      }
>
>      /**
> @@ -186,7 +186,7 @@
>       * @see #getContentDescriptors
>       */
>      public boolean hasContent() {
> -        return contentDescriptors != null && contentDescriptors.length >

> 0;
> +        return getContentDescriptors().length > 0;
>       }
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: commons-dev-help@jakarta.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org


Mime
View raw message