You are viewing a plain text version of this content. The canonical link for it is here.
Posted to xbean-scm@geronimo.apache.org by ch...@apache.org on 2011/10/27 14:59:56 UTC

svn commit: r1189729 - in /geronimo/xbean/trunk/xbean-spring/src/main/java/org/apache/xbean/spring/generator: MappingGeneratorTask.java XsdGenerator.java

Author: chirino
Date: Thu Oct 27 12:59:56 2011
New Revision: 1189729

URL: http://svn.apache.org/viewvc?rev=1189729&view=rev
Log:
Fixes XBEAN-191 : Support unordered elements in the XSD generated by XBean.

Modified:
    geronimo/xbean/trunk/xbean-spring/src/main/java/org/apache/xbean/spring/generator/MappingGeneratorTask.java
    geronimo/xbean/trunk/xbean-spring/src/main/java/org/apache/xbean/spring/generator/XsdGenerator.java

Modified: geronimo/xbean/trunk/xbean-spring/src/main/java/org/apache/xbean/spring/generator/MappingGeneratorTask.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-spring/src/main/java/org/apache/xbean/spring/generator/MappingGeneratorTask.java?rev=1189729&r1=1189728&r2=1189729&view=diff
==============================================================================
--- geronimo/xbean/trunk/xbean-spring/src/main/java/org/apache/xbean/spring/generator/MappingGeneratorTask.java (original)
+++ geronimo/xbean/trunk/xbean-spring/src/main/java/org/apache/xbean/spring/generator/MappingGeneratorTask.java Thu Oct 27 12:59:56 2011
@@ -42,6 +42,7 @@ public class MappingGeneratorTask extend
     private File destFile = new File("target/classes/schema.xsd");
     private String metaInfDir = "target/classes/";
     private String propertyEditorPaths = "org.apache.xbean.spring.context.impl";
+    private boolean strictXsdOrder = true;
 
     public File getDestFile() {
         return destFile;
@@ -83,6 +84,14 @@ public class MappingGeneratorTask extend
         this.propertyEditorPaths = propertyEditorPaths;
     }
 
+    public boolean isStrictXsdOrder() {
+        return strictXsdOrder;
+    }
+
+    public void setStrictXsdOrder(boolean strictXsdOrder) {
+        this.strictXsdOrder = strictXsdOrder;
+    }
+
     public void execute() throws BuildException {
         if (namespace == null) {
             throw new BuildException("'namespace' must be specified");
@@ -113,7 +122,7 @@ public class MappingGeneratorTask extend
             GeneratorPlugin[] plugins = new GeneratorPlugin[]{
                 new XmlMetadataGenerator(metaInfDir, destFile),
                 new DocumentationGenerator(destFile),
-                new XsdGenerator(destFile)
+                new XsdGenerator(destFile, strictXsdOrder)
             };
 
             // load the mappings

Modified: geronimo/xbean/trunk/xbean-spring/src/main/java/org/apache/xbean/spring/generator/XsdGenerator.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-spring/src/main/java/org/apache/xbean/spring/generator/XsdGenerator.java?rev=1189729&r1=1189728&r2=1189729&view=diff
==============================================================================
--- geronimo/xbean/trunk/xbean-spring/src/main/java/org/apache/xbean/spring/generator/XsdGenerator.java (original)
+++ geronimo/xbean/trunk/xbean-spring/src/main/java/org/apache/xbean/spring/generator/XsdGenerator.java Thu Oct 27 12:59:56 2011
@@ -31,9 +31,14 @@ import java.util.List;
 public class XsdGenerator implements GeneratorPlugin {
     private final File destFile;
     private LogFacade log;
+    private boolean strictOrder;
 
     public XsdGenerator(File destFile) {
+        this(destFile, true);
+    }
+    public XsdGenerator(File destFile, boolean strictOrder) {
         this.destFile = destFile;
+        this.strictOrder = strictOrder;
     }
 
     public void generate(NamespaceMapping namespaceMapping) throws IOException {
@@ -92,7 +97,11 @@ public class XsdGenerator implements Gen
             }
         }
         if (complexCount > 0) {
-            out.println("      <xs:sequence>");
+            if(strictOrder){
+                out.println("      <xs:sequence>");
+            } else {
+                out.println("      <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\"><xs:choice>");
+            }
             for (Iterator iterator = element.getAttributes().iterator(); iterator.hasNext();) {
                 AttributeMapping attributeMapping = (AttributeMapping) iterator.next();
                 if (!namespaceMapping.isSimpleType(attributeMapping.getType())) {
@@ -100,7 +109,11 @@ public class XsdGenerator implements Gen
                 }
             }
             out.println("        <xs:any namespace='##other' minOccurs='0' maxOccurs='unbounded'/>");
-            out.println("      </xs:sequence>");
+            if(strictOrder){
+                out.println("      </xs:sequence>");
+            } else {
+                out.println("      </xs:choice></xs:choice>");
+            }
         }
 
         for (Iterator iterator = element.getAttributes().iterator(); iterator.hasNext();) {