ws-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Guillaume (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (XMLSCHEMA-54) Circularity not handled in schema serialization
Date Wed, 22 Aug 2018 16:50:00 GMT

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

Guillaume updated XMLSCHEMA-54:
-------------------------------
    Description: 
Hello,

I am using version 2.2.3.

I am creating a Xml Schema using the classes defined in xmlschema-core, and expecting to write
out the schema to a file.
{code:java}
XmlSchemaCollection schemaCollection;
try {
    schemaCollection = schemaGenerator.generateSchema();
    logger.fine("Schema created");
} catch (Exception e) {
    e.printStackTrace();
    return;
}

XmlSchema schema = schemaCollection.getXmlSchemas()[0];
try {
    schema.write(System.out);
} catch (UnsupportedEncodingException e) {
    e.printStackTrace();
}
{code}
But I get the exception :
{code:java}
Exception in thread "main" java.lang.StackOverflowError
at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeElement(XmlSchemaSerializer.java:1031)
at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSequence(XmlSchemaSerializer.java:1749)
at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeComplexType(XmlSchemaSerializer.java:918)
at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeElement(XmlSchemaSerializer.java:1086)
at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSequence(XmlSchemaSerializer.java:1749)
at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeComplexType(XmlSchemaSerializer.java:918)
at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeElement(XmlSchemaSerializer.java:1086)
at 
{code}
and so on. It happens at the line :
{code:java}
XmlSchema schema = schemaCollection.getXmlSchemas()[0];{code}
I used the debugger and from what I see, the XmlSchemaSerializer does not handle the circularity.
It just do recursively without discriminating whether or not the XmlSchemaType is being serialized
already in an upper scope. Note that all my ComplexType instances are at the top level :
{code:java}
XmlSchemaComplexType xsType = new XmlSchemaComplexType(schema, true);
{code}
but in the code it doesn't seem to me that _XmlSchemaType.isTopLevel()_ is used anywhere
during the serialization, which is counter intuitive.

Am I doing it wrong ? I really think that this is a bug though.

 

Thank you,

Guillaume

 

  was:
Hello,

I am using version 2.2.3.

I am creating a Xml Schema using the classes defined in xmlschema-core, and expecting to write
out the schema to a file.

 
{code:java}
XmlSchemaCollection schemaCollection;
try {
    schemaCollection = schemaGenerator.generateSchema();
    logger.fine("Schema created");
} catch (Exception e) {
    e.printStackTrace();
    return;
}

XmlSchema schema = schemaCollection.getXmlSchemas()[0];
try {
    schema.write(System.out);
} catch (UnsupportedEncodingException e) {
    e.printStackTrace();
}
{code}
 

But I get the exception :

 
{code:java}
Exception in thread "main" java.lang.StackOverflowError
at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeElement(XmlSchemaSerializer.java:1031)
at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSequence(XmlSchemaSerializer.java:1749)
at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeComplexType(XmlSchemaSerializer.java:918)
at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeElement(XmlSchemaSerializer.java:1086)
at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSequence(XmlSchemaSerializer.java:1749)
at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeComplexType(XmlSchemaSerializer.java:918)
at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeElement(XmlSchemaSerializer.java:1086)
at 
{code}
and so on. It happens at the line :

 

 
{code:java}
XmlSchema schema = schemaCollection.getXmlSchemas()[0];{code}
 

I used the debugger and from what I see, the XmlSchemaSerializer does not handle the circularity.
It just do recursively without discriminating whether or not the XmlSchemaType is being serialized
already in an upper scope. Note that all my ComplexType instances are at the top level :

 
{code:java}
XmlSchemaComplexType xsType = new XmlSchemaComplexType(schema, true);
{code}
but in the code it doesn't seem to me that _XmlSchemaType.isTopLevel()_ is used anywhere
during the serialization, which is counter intuitive.

 

Am I doing it wrong ? I really think that this is a bug though.

 


> Circularity not handled in schema serialization
> -----------------------------------------------
>
>                 Key: XMLSCHEMA-54
>                 URL: https://issues.apache.org/jira/browse/XMLSCHEMA-54
>             Project: XmlSchema
>          Issue Type: Bug
>    Affects Versions: 2.2.3
>         Environment: Windows Server 2016
> IntelliJ IDEA 2018
>            Reporter: Guillaume
>            Priority: Major
>
> Hello,
> I am using version 2.2.3.
> I am creating a Xml Schema using the classes defined in xmlschema-core, and expecting
to write out the schema to a file.
> {code:java}
> XmlSchemaCollection schemaCollection;
> try {
>     schemaCollection = schemaGenerator.generateSchema();
>     logger.fine("Schema created");
> } catch (Exception e) {
>     e.printStackTrace();
>     return;
> }
> XmlSchema schema = schemaCollection.getXmlSchemas()[0];
> try {
>     schema.write(System.out);
> } catch (UnsupportedEncodingException e) {
>     e.printStackTrace();
> }
> {code}
> But I get the exception :
> {code:java}
> Exception in thread "main" java.lang.StackOverflowError
> at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeElement(XmlSchemaSerializer.java:1031)
> at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSequence(XmlSchemaSerializer.java:1749)
> at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeComplexType(XmlSchemaSerializer.java:918)
> at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeElement(XmlSchemaSerializer.java:1086)
> at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeSequence(XmlSchemaSerializer.java:1749)
> at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeComplexType(XmlSchemaSerializer.java:918)
> at org.apache.ws.commons.schema.XmlSchemaSerializer.serializeElement(XmlSchemaSerializer.java:1086)
> at 
> {code}
> and so on. It happens at the line :
> {code:java}
> XmlSchema schema = schemaCollection.getXmlSchemas()[0];{code}
> I used the debugger and from what I see, the XmlSchemaSerializer does not handle the
circularity. It just do recursively without discriminating whether or not the XmlSchemaType
is being serialized already in an upper scope. Note that all my ComplexType instances are
at the top level :
> {code:java}
> XmlSchemaComplexType xsType = new XmlSchemaComplexType(schema, true);
> {code}
> but in the code it doesn't seem to me that _XmlSchemaType.isTopLevel()_ is used anywhere
during the serialization, which is counter intuitive.
> Am I doing it wrong ? I really think that this is a bug though.
>  
> Thank you,
> Guillaume
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

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


Mime
View raw message