You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@poi.apache.org by "Peter Keller (Jira)" <ji...@apache.org> on 2020/08/18 17:04:00 UTC

[jira] [Updated] (XMLBEANS-550) Type change by restriction not implemented properly in Java API

     [ https://issues.apache.org/jira/browse/XMLBEANS-550?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Peter Keller updated XMLBEANS-550:
----------------------------------
    Description: 
Using the following schema as an example:
{code:xml}
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://openuri.org/easypo"
 xmlns:po="http://openuri.org/easypo"
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 elementFormDefault="qualified">

<xs:simpleType name="addressType">
 <xs:restriction base="xs:string"/>
</xs:simpleType>

<xs:simpleType name="specialAddressType">
 <xs:restriction base="po:addressType"/>
</xs:simpleType>

<xs:complexType name="customer">
 <xs:sequence>
  <xs:element name="name" type="xs:string"/>
  <xs:element name="address" type="po:addressType"/>
 </xs:sequence>
</xs:complexType>

<xs:complexType name="specialCustomer">
 <xs:complexContent>
  <xs:restriction base="po:customer">
   <xs:sequence>
    <xs:element name="name" type="xs:string" />
    <xs:element name="address" type="po:specialAddressType" />
   </xs:sequence>
  </xs:restriction>
 </xs:complexContent>
</xs:complexType>

</xs:schema>
{code}
scomp generates an interface {{SpecialAddressType}} but the interface {{SpecialCustomer}} does not make use of it:
{code:java}
public interface SpecialCustomer extends org.openuri.easypo.Customer
{
 public static final org.apache.xmlbeans.SchemaType type = (org.apache.xmlbeans.SchemaType)
 org.apache.xmlbeans.XmlBeans.typeSystemForClassLoader(SpecialCustomer.class.getClassLoader(), "schemaorg_apache_xmlbeans.system.s770F7AC969A9A1EBB5EE20A103CED4B6").resolveHandle("specialcustomera398type");
 
 /**
 * A factory class with static methods for creating instances
 * of this type.
 */
 
 public static final class Factory
  {
     ...
  }
}{code}
It should contain methods {{xsetAddress}} and {{xgetAddress}}  that:
 * override the corresponding methods in {{Customer}}
 * accept a parameter and return a value of the type {{SpecialAddressType}} respectively.

This issue affects both elements and attributes.

 I don't suppose that this will get sorted out in practice, but I am creating this issue for the record.

  was:
Using the following schema as an example:
{code:xml}
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://openuri.org/easypo"
 xmlns:po="http://openuri.org/easypo"
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 elementFormDefault="qualified">

<xs:simpleType name="addressType">
 <xs:restriction base="xs:string"/>
</xs:simpleType>

<xs:simpleType name="specialAddressType">
 <xs:restriction base="po:addressType"/>
</xs:simpleType>

<xs:complexType name="customer">
 <xs:sequence>
  <xs:element name="name" type="xs:string"/>
  <xs:element name="address" type="po:addressType"/>
 </xs:sequence>
</xs:complexType>

<xs:complexType name="specialCustomer">
 <xs:complexContent>
  <xs:restriction base="po:customer">
   <xs:sequence>
    <xs:element name="name" type="xs:string" />
    <xs:element name="address" type="po:specialAddressType" />
   </xs:sequence>
  </xs:restriction>
 </xs:complexContent>
</xs:complexType>

</xs:schema>
{code}
scomp generates an interface {{SpecialAddressType}} but the interface {{SpecialCustomer}} does not make use of it:
{code:java}
public interface SpecialCustomer extends org.openuri.easypo.Customer
{
 public static final org.apache.xmlbeans.SchemaType type = (org.apache.xmlbeans.SchemaType)
 org.apache.xmlbeans.XmlBeans.typeSystemForClassLoader(SpecialCustomer.class.getClassLoader(), "schemaorg_apache_xmlbeans.system.s770F7AC969A9A1EBB5EE20A103CED4B6").resolveHandle("specialcustomera398type");
 
 /**
 * A factory class with static methods for creating instances
 * of this type.
 */
 
 public static final class Factory
  {
     ...
  }
}{code}
It should contain methods {{xsetAddress}} and {{xgetAddress}}  that:
 * override the corresponding methods in {{Customer}}
 * accept a parameter and return a value of the type {{SpecialAddressType}} respectively.

 I don't suppose that this will get sorted out in practice, but I am creating this issue for the record.


> Type change by restriction not implemented properly in Java API
> ---------------------------------------------------------------
>
>                 Key: XMLBEANS-550
>                 URL: https://issues.apache.org/jira/browse/XMLBEANS-550
>             Project: XMLBeans
>          Issue Type: Bug
>          Components: Binding
>    Affects Versions: Version 3.1.0
>         Environment: openSUSE Linux; OpenJDK 1.8.0
>            Reporter: Peter Keller
>            Priority: Major
>
> Using the following schema as an example:
> {code:xml}
> <?xml version="1.0" encoding="UTF-8"?>
> <xs:schema targetNamespace="http://openuri.org/easypo"
>  xmlns:po="http://openuri.org/easypo"
>  xmlns:xs="http://www.w3.org/2001/XMLSchema"
>  elementFormDefault="qualified">
> <xs:simpleType name="addressType">
>  <xs:restriction base="xs:string"/>
> </xs:simpleType>
> <xs:simpleType name="specialAddressType">
>  <xs:restriction base="po:addressType"/>
> </xs:simpleType>
> <xs:complexType name="customer">
>  <xs:sequence>
>   <xs:element name="name" type="xs:string"/>
>   <xs:element name="address" type="po:addressType"/>
>  </xs:sequence>
> </xs:complexType>
> <xs:complexType name="specialCustomer">
>  <xs:complexContent>
>   <xs:restriction base="po:customer">
>    <xs:sequence>
>     <xs:element name="name" type="xs:string" />
>     <xs:element name="address" type="po:specialAddressType" />
>    </xs:sequence>
>   </xs:restriction>
>  </xs:complexContent>
> </xs:complexType>
> </xs:schema>
> {code}
> scomp generates an interface {{SpecialAddressType}} but the interface {{SpecialCustomer}} does not make use of it:
> {code:java}
> public interface SpecialCustomer extends org.openuri.easypo.Customer
> {
>  public static final org.apache.xmlbeans.SchemaType type = (org.apache.xmlbeans.SchemaType)
>  org.apache.xmlbeans.XmlBeans.typeSystemForClassLoader(SpecialCustomer.class.getClassLoader(), "schemaorg_apache_xmlbeans.system.s770F7AC969A9A1EBB5EE20A103CED4B6").resolveHandle("specialcustomera398type");
>  
>  /**
>  * A factory class with static methods for creating instances
>  * of this type.
>  */
>  
>  public static final class Factory
>   {
>      ...
>   }
> }{code}
> It should contain methods {{xsetAddress}} and {{xgetAddress}}  that:
>  * override the corresponding methods in {{Customer}}
>  * accept a parameter and return a value of the type {{SpecialAddressType}} respectively.
> This issue affects both elements and attributes.
>  I don't suppose that this will get sorted out in practice, but I am creating this issue for the record.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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