[prev in list] [next in list] [prev in thread] [next in thread] 

List:       xmlrpc-dev
Subject:    [jira] [Updated] (XMLSCHEMA-54) Circularity not handled in schema serialization
From:       "Guillaume (JIRA)" <jira () apache ! org>
Date:       2018-08-24 12:42:00
Message-ID: JIRA.13180515.1534956487000.153742.1535114520108 () Atlassian ! JIRA
[Download RAW message or body]


     [ 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}
schema.write(System.out);{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.

  

Thank you,

Guillaume

  


> 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}
> schema.write(System.out);{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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic