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

Daniel Kulp reassigned CXF-2418:
--------------------------------

    Assignee: Daniel Kulp

> SchemaCollection throws StackOverflowError when schema contains circular 
> reference
> ----------------------------------------------------------------------------------
>
>                 Key: CXF-2418
>                 URL: https://issues.apache.org/jira/browse/CXF-2418
>             Project: CXF
>          Issue Type: Bug
>          Components: Aegis Databinding
>    Affects Versions: 2.2.3
>            Reporter: Fried Hoeben
>            Assignee: Daniel Kulp
>         Attachments: cxf-schemaCollection.patch
>
>
> When a schema contains a reference to an element inside itself, or there is 
> another circular reference between schemas,  
> SchemaCollection.addCrossImports() goes into infinite recursion ending with a 
> StackOverflowError.
> Sample stack (before the error):
>       SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) 
> line: 376        
>       SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 
> 366        
>       SchemaCollection.addElementCrossImportsElement(XmlSchema, 
> XmlSchemaObject) line: 353    
>       SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) 
> line: 376        
>       SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 
> 366        
>       SchemaCollection.addElementCrossImportsElement(XmlSchema, 
> XmlSchemaObject) line: 353    
>       SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) 
> line: 376        
>       SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 
> 366        
>       SchemaCollection.addElementCrossImportsElement(XmlSchema, 
> XmlSchemaObject) line: 353    
>       SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) 
> line: 376        
>       SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 
> 366        
>       SchemaCollection.addElementCrossImportsElement(XmlSchema, 
> XmlSchemaObject) line: 353    
>       SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) 
> line: 376        
>       SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 
> 366        
>       SchemaCollection.addElementCrossImportsElement(XmlSchema, 
> XmlSchemaObject) line: 353    
>       SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) 
> line: 376        
>       SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 
> 366        
>       SchemaCollection.addElementCrossImportsElement(XmlSchema, 
> XmlSchemaObject) line: 353    
>       SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) 
> line: 376        
>       SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 
> 366        
>       SchemaCollection.addElementCrossImportsElement(XmlSchema, 
> XmlSchemaObject) line: 353    
>       SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) 
> line: 376        
>       SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 
> 366        
>       SchemaCollection.addElementCrossImportsElement(XmlSchema, 
> XmlSchemaObject) line: 353    
>       SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) 
> line: 376        
>       SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 
> 366        
>       SchemaCollection.addElementCrossImportsElement(XmlSchema, 
> XmlSchemaObject) line: 353    
>       SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) 
> line: 376        
>       SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 
> 366        
>       SchemaCollection.addElementCrossImportsElement(XmlSchema, 
> XmlSchemaObject) line: 353    
>       SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) 
> line: 376        
>       SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 
> 366        
>       SchemaCollection.addElementCrossImportsElement(XmlSchema, 
> XmlSchemaObject) line: 353    
>       SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) 
> line: 376        
>       SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 
> 366        
>       SchemaCollection.addOneSchemaCrossImports(XmlSchema) line: 342  
>       SchemaCollection.addCrossImports() line: 321    
>       Databinding(AegisDatabinding).createSchemas(Service, Set<Type>) line: 
> 504       
>       Databinding(AegisDatabinding).initialize(Service) line: 285     
>       
> JaxWsServiceFactoryBean(ReflectionServiceFactoryBean).buildServiceFromWSDL(String)
>  line: 346    
>       
> JaxWsServiceFactoryBean(ReflectionServiceFactoryBean).initializeServiceModel()
>  line: 442        
>       JaxWsServiceFactoryBean(ReflectionServiceFactoryBean).create() line: 
> 195        
>       JaxWsServiceFactoryBean.create() line: 163      
>       
> JaxWsClientFactoryBean(AbstractWSDLBasedEndpointFactory).createEndpoint() 
> line: 100     
>       JaxWsClientFactoryBean(ClientFactoryBean).create() line: 52     
>       JaxWsProxyFactoryBean(ClientProxyFactoryBean).create() line: 102        
>       JaxWsProxyFactoryBean.create() line: 115        
> ...

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to