You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xmlbeans.apache.org by da...@apache.org on 2003/09/24 21:01:29 UTC

cvs commit: xml-xmlbeans/v1/src/typeimpl/org/apache/xmlbeans/impl/values XmlComplexContentImpl.java

davidbau    2003/09/24 12:01:29

  Modified:    v1/src/typeimpl/org/apache/xmlbeans/impl/values
                        XmlComplexContentImpl.java
  Log:
  This fixes a code generation bug (i.e., code was being generated that wasn't linking)
  when dealing with a specific cosmic coincidence of different features:
  
  (1) When there is a complex type...
  (2) That has an element with maxOccurs > 1
  (3) Where the element is a substitution group head
  (4) And the element has type xs:anyType
  
  Then: we generated code that assumed that XmlComplexContentImpl had a helper method
  that it actually doesn't have.  This checkin adds that helper method.
  
  Code review: eric (thanks!)
  Regression tests: passed
  Diffs...
  
  ? v1/build
  Index: v1/src/typeimpl/org/apache/xmlbeans/impl/values/XmlComplexContentImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v1/src/typeimpl/org/apache/xmlbeans/impl/values/XmlComplexContentImpl.java,v
  retrieving revision 1.1
  diff -u -r1.1 XmlComplexContentImpl.java
  --- v1/src/typeimpl/org/apache/xmlbeans/impl/values/XmlComplexContentImpl.java	15 Sep 2003 18:20:30 -0000	1.1
  +++ v1/src/typeimpl/org/apache/xmlbeans/impl/values/XmlComplexContentImpl.java	24 Sep 2003 18:58:39 -0000
  @@ -1095,4 +1095,29 @@
       {
           get_store().array_setter( sources, elemName );
       }
  +
  +    protected void arraySetterHelper ( XmlObject[] sources, QName elemName, QNameSet set )
  +    {
  +        int n = sources == null ? 0 : sources.length;
  +
  +        TypeStore store = get_store();
  +
  +        int m = store.count_elements( set );
  +
  +        for ( ; m > n ; m-- )
  +            store.remove_element( set, m - 1 );
  +
  +        for ( int i = 0 ; i < n ; i++ )
  +        {
  +            TypeStoreUser user;
  +
  +            if (i >= m)
  +                user = store.add_element_user( elemName );
  +            else
  +                user = store.find_element_user( set, i );
  +
  +            ((XmlObjectBase) user).set( sources[ i ] );
  +        }
  +    }
  +
   }
  
  Revision  Changes    Path
  1.2       +25 -0     xml-xmlbeans/v1/src/typeimpl/org/apache/xmlbeans/impl/values/XmlComplexContentImpl.java
  
  Index: XmlComplexContentImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-xmlbeans/v1/src/typeimpl/org/apache/xmlbeans/impl/values/XmlComplexContentImpl.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- XmlComplexContentImpl.java	15 Sep 2003 18:20:30 -0000	1.1
  +++ XmlComplexContentImpl.java	24 Sep 2003 19:01:29 -0000	1.2
  @@ -1095,4 +1095,29 @@
       {
           get_store().array_setter( sources, elemName );
       }
  +
  +    protected void arraySetterHelper ( XmlObject[] sources, QName elemName, QNameSet set )
  +    {
  +        int n = sources == null ? 0 : sources.length;
  +        
  +        TypeStore store = get_store();
  +
  +        int m = store.count_elements( set );
  +
  +        for ( ; m > n ; m-- )
  +            store.remove_element( set, m - 1 );
  +
  +        for ( int i = 0 ; i < n ; i++ )
  +        {
  +            TypeStoreUser user;
  +            
  +            if (i >= m)
  +                user = store.add_element_user( elemName );
  +            else
  +                user = store.find_element_user( set, i );
  +
  +            ((XmlObjectBase) user).set( sources[ i ] );
  +        }
  +    }
  +
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xmlbeans-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xmlbeans-cvs-help@xml.apache.org