Compiler generates method for creating multiple root tags
---------------------------------------------------------
Key: XMLBEANS-434
URL: https://issues.apache.org/jira/browse/XMLBEANS-434
Project: XMLBeans
Issue Type: Bug
Components: Compiler
Affects Versions: Version 2.5
Reporter: John
While playing around with XMLBeans API in focus of following XML:
<?xml version="1.0"?>
<po:integration-design-patterns xmlns:po="http://openuri.org/easypo">
<po:integration-pattern>
<po:pattern-name>MVC</po:pattern-name>
<po:description>Separated business model, presentation layer &
controller</po:description>
<po:full-oop-support-required>true</po:full-oop-support-required>
<po:implementation-dependencies>
<po:pattern-name>Front Controller</po:pattern-name>
</po:implementation-dependencies xmlns:po>
<po:implemented-frameworks>
<po:framework>
<po:name>YII framework</po:name>
<po:language>PHP 5</po:language>
</po:framework>
<po:framework>
<po:name>Ruby On Rails</po:name>
<po:language>Ruby</po:language>
</po:framework>
<po:framework>
<po:name>DJango</po:name>
<po:language>Python</po:language>
</po:framework>
<po:framework>
<po:name>TurboGears</po:name>
<po:language>Python</po:language>
</po:framework>
</po:implemented-frameworks>
</po:integration-pattern>
<po:integration-pattern>
<po:pattern-name>Session></po:pattern-name>
<po:description>Provide distributed client session</po:description>
<po:full-oop-support-required>false</po:full-oop-support-required>
</po:integration-pattern>
</po:integration-design-patterns>
And describing the data model in the following way:
<xs:schema targetNamespace="http://openuri.org/easypo"
xmlns:po="http://openuri.org/easypo"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="integration-design-patterns">
<xs:complexType>
<xs:sequence>
<xs:element name="integration-pattern"
type="po:integration-pattern" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="integration-pattern">
<xs:sequence>
<xs:element name="pattern-name" type="xs:string" />
<xs:element name="description" type="xs:string" />
<xs:element name="full-oop-support-required" type="xs:boolean" />
<xs:element name="implementation-dependencies"
type="po:implementation-dependencies" xmlns: minOccurs="0" maxOccurs="3"/>
<xs:element name="implemented-frameworks"
type="po:implemented-frameworks" minOccurs="0" maxOccurs="10"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="implementation-dependencies">
<xs:sequence>
<xs:element name="pattern-name" type="xs:string" minOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="implemented-frameworks">
<xs:sequence>
<xs:element name="framework" type="po:framework" minOccurs="1"
maxOccurs="10"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="framework">
<xs:sequence>
<xs:element name="name" minOccurs="1" maxOccurs="1"
type="xs:string" />
<xs:element name="language" minOccurs="1" maxOccurs="1"
type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:schema>
The devasting thing is that there is a possibility to add more that one root
tag, which itself is incompatible with w3c rules:
import java.io.File;
import org.openuri.easypo.IntegrationDesignPatternsDocument;
import org.openuri.easypo.IntegrationPattern;
import org.openuri.easypo.ImplementationDependencies;
public class DesignPatternReference
{
public IntegrationDesignPatternsDocument generateDoc()
{
IntegrationDesignPatternsDocument entry =
IntegrationDesignPatternsDocument.Factory.newInstance();
entry.addNewIntegrationDesignPatterns().addNewIntegrationPattern();
IntegrationPattern patternInstance =
entry.getIntegrationDesignPatterns().addNewIntegrationPattern();
patternInstance.setPatternName("Facade");
patternInstance.setFullOopSupportRequired(true);
return entry;
}
public static void describePatterns(File po) throws Exception
{
IntegrationDesignPatternsDocument reference =
IntegrationDesignPatternsDocument.Factory.parse(po);
IntegrationPattern[] integrationPatterns =
reference.getIntegrationDesignPatterns().getIntegrationPatternArray();
IntegrationPattern pattern = integrationPatterns[0];
String patternName = pattern.getPatternName();
ImplementationDependencies[] deps =
pattern.getImplementationDependenciesArray();
for (int i=0; i<deps.length; i++)
{
System.out.println(deps[i].getPatternName());
}
//System.out.println("");
//ImplementedFrameworks frameworks =
pattern[0].getImplementedFrameworks();
//Framework[] frameworks = frameworks.getFrameworkArray();
}
}
Hence *.addNewIntegrationDesignPatterns();
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]