Guillaume created XMLSCHEMA-54:
----------------------------------
Summary: 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
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.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]