You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@xmlbeans.apache.org by Nick Burch <ni...@torchbox.com> on 2008/04/11 14:11:14 UTC

Two very similar beans, but no common class/interface

Hi All

For Apache POI, we're using xmlbeans to generate a whole bunch of classes
based on the ooxml schema files. One problem we've found is that some
things hold a CT_RPr, and others hold a CT_ParaRPr. Despite these two
entries being very similar, the two classes don't have a common class or
interface. So, we can't write code to work with the common bits of both
these entries very easily.

Is it possible to get xmlbeans to generate these two classes to share a
common superclass or interface, so we can easily get at the common parts?

The full schema is at http://people.apache.org/~nick/wml.xsd, and the
relevent bit is:
  <xsd:complexType name="CT_RPr">
    <xsd:sequence>
      <xsd:group ref="EG_RPrContent" minOccurs="0"></xsd:group>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="CT_ParaRPr">
    <xsd:sequence>
      <xsd:group ref="EG_ParaRPrTrackChanges" minOccurs="0"></xsd:group>
      <xsd:group ref="EG_RPrBase" minOccurs="0"></xsd:group>
      <xsd:element name="rPrChange" type="CT_ParaRPrChange" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation>Revision Information....</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:group name="EG_RPrContent">
    <xsd:sequence>
      <xsd:group ref="EG_RPrBase" minOccurs="0"></xsd:group>
      <xsd:element name="rPrChange" type="CT_RPrChange" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation>Revision Information for....</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>

(We're generally just after the common bits of EG_RPrBase on both CT_RPr
and CT_ParaRPr)

Thanks
Nick

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


RE: Two very similar beans, but no common class/interface

Posted by Radu Preotiuc-Pietro <ra...@bea.com>.
Unfortunately, since in XMLSchema the two types don't share a common
base type, there is no way XMLBeans can factor out a superclass. The
inheritance hierarchy in the generated classes matches the one in the
source XMLSchema. If you really want to use only one interface, then you
would have to use the Extension Interfaces feature
(http://wiki.apache.org/xmlbeans/ExtensionInterfacesFeature) to have
both types extend a common interface that you implement, so then the
rest of your code only deals with this one interface. But the
implementation of this interface may turn out to be tedious.

Radu

> -----Original Message-----
> From: Nick Burch [mailto:nick@torchbox.com] 
> Sent: Friday, April 11, 2008 5:11 AM
> To: user@xmlbeans.apache.org
> Subject: Two very similar beans, but no common class/interface
> 
> Hi All
> 
> For Apache POI, we're using xmlbeans to generate a whole 
> bunch of classes based on the ooxml schema files. One problem 
> we've found is that some things hold a CT_RPr, and others 
> hold a CT_ParaRPr. Despite these two entries being very 
> similar, the two classes don't have a common class or 
> interface. So, we can't write code to work with the common 
> bits of both these entries very easily.
> 
> Is it possible to get xmlbeans to generate these two classes 
> to share a common superclass or interface, so we can easily 
> get at the common parts?
> 
> The full schema is at http://people.apache.org/~nick/wml.xsd, 
> and the relevent bit is:
>   <xsd:complexType name="CT_RPr">
>     <xsd:sequence>
>       <xsd:group ref="EG_RPrContent" minOccurs="0"></xsd:group>
>     </xsd:sequence>
>   </xsd:complexType>
>   <xsd:complexType name="CT_ParaRPr">
>     <xsd:sequence>
>       <xsd:group ref="EG_ParaRPrTrackChanges" 
> minOccurs="0"></xsd:group>
>       <xsd:group ref="EG_RPrBase" minOccurs="0"></xsd:group>
>       <xsd:element name="rPrChange" type="CT_ParaRPrChange" 
> minOccurs="0">
>         <xsd:annotation>
>           <xsd:documentation>Revision 
> Information....</xsd:documentation>
>         </xsd:annotation>
>       </xsd:element>
>     </xsd:sequence>
>   </xsd:complexType>
>   <xsd:group name="EG_RPrContent">
>     <xsd:sequence>
>       <xsd:group ref="EG_RPrBase" minOccurs="0"></xsd:group>
>       <xsd:element name="rPrChange" type="CT_RPrChange" minOccurs="0">
>         <xsd:annotation>
>           <xsd:documentation>Revision Information 
> for....</xsd:documentation>
>         </xsd:annotation>
>       </xsd:element>
>     </xsd:sequence>
>   </xsd:group>
> 
> (We're generally just after the common bits of EG_RPrBase on 
> both CT_RPr and CT_ParaRPr)
> 
> Thanks
> Nick
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@xmlbeans.apache.org
> For additional commands, e-mail: user-help@xmlbeans.apache.org
> 
> 

Notice:  This email message, together with any attachments, may contain information  of  BEA Systems,  Inc.,  its subsidiaries  and  affiliated entities,  that may be confidential,  proprietary,  copyrighted  and/or legally privileged, and is intended solely for the use of the individual or entity named in this message. If you are not the intended recipient, and have received this message in error, please immediately return this by email and then delete it.

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