]> gerrit.simantics Code Review - simantics/interop.git/blobdiff - org.simantics.xml.sax/src/org/simantics/xml/sax/SchemaConversionBase.java
Handling ComplexTypes defined with SimpleContent
[simantics/interop.git] / org.simantics.xml.sax / src / org / simantics / xml / sax / SchemaConversionBase.java
index d80f94ce6b03950accf6c3673852826634182b75..5df8c4aefcbf4736d477410f4599c65c26286249 100644 (file)
@@ -38,6 +38,7 @@ import org.w3._2001.xmlschema.NamedAttributeGroup;
 import org.w3._2001.xmlschema.OpenAttrs;\r
 import org.w3._2001.xmlschema.Restriction;\r
 import org.w3._2001.xmlschema.Schema;\r
+import org.w3._2001.xmlschema.SimpleContent;\r
 import org.w3._2001.xmlschema.SimpleType;\r
 import org.w3._2001.xmlschema.TopLevelAttribute;\r
 import org.w3._2001.xmlschema.TopLevelComplexType;\r
@@ -265,6 +266,23 @@ public abstract class SchemaConversionBase {
                                                        throw new RuntimeException("Groups not supported");\r
                                        }\r
                                }\r
+                               if (ct.getSimpleContent() != null) {\r
+                                       SimpleContent cc = ct.getSimpleContent();\r
+                                       ExtensionType extensionType = cc.getExtension();\r
+                                       if (extensionType != null) {\r
+                                               if (extensionType.getChoice() != null) {\r
+                                                       preload(object,extensionType.getChoice(), stack);\r
+                                               }\r
+                                               if (extensionType.getSequence()!= null) {\r
+                                                       preload(object,extensionType.getSequence(), stack);\r
+                                               }\r
+                                               if (extensionType.getAll()!= null) {\r
+                                                       preload(object,extensionType.getAll(), stack);\r
+                                               }\r
+                                               if (extensionType.getGroup() != null)\r
+                                                       throw new RuntimeException("Groups not supported");\r
+                                       }\r
+                               }\r
                        } else if (object.getType() == ObjectType.ELEMENT) {\r
                                Element e = object.getElement();\r
                                if (e instanceof TopLevelElement)\r
@@ -330,6 +348,14 @@ public abstract class SchemaConversionBase {
                                return type;\r
                        }\r
                }\r
+//             SimpleContent simpleContent = complexType.getSimpleContent();\r
+//             if (simpleContent != null) {\r
+//                     ExtensionType extensionType = simpleContent.getExtension();\r
+//                     if (extensionType != null) {\r
+//                             QName type = extensionType.getBase();\r
+//                             return type;\r
+//                     }\r
+//             }\r
                return null;\r
        }\r
        \r
@@ -385,6 +411,13 @@ public abstract class SchemaConversionBase {
                                handleAttributes(complexType, extensionType.getAttributeOrAttributeGroup());\r
                        }\r
                }\r
+               SimpleContent simpleContent = complexType.getComplexType().getSimpleContent();\r
+               if (simpleContent != null) {\r
+                       ExtensionType extensionType = simpleContent.getExtension();\r
+                       if (extensionType != null) {\r
+                               handleAttributes(complexType, extensionType.getAttributeOrAttributeGroup());\r
+                       }\r
+               }\r
        }\r
        \r
        \r
@@ -696,6 +729,10 @@ public abstract class SchemaConversionBase {
                                        }\r
                                }\r
                        }\r
+//                     SimpleContent simpleContent = complexType.getSimpleContent();\r
+//                     if (simpleContent != null) {\r
+//                             ExtensionType extensionType = simpleContent.getExtension();\r
+//                     }\r
                }\r
        }\r
        \r
@@ -713,28 +750,15 @@ public abstract class SchemaConversionBase {
        \r
        \r
        protected boolean isElementRef(String ref) {\r
-//             for (OpenAttrs attrs : schema.getSimpleTypeOrComplexTypeOrGroup()) {\r
-//                     if (attrs instanceof TopLevelElement) {\r
-//                             TopLevelElement element = (TopLevelElement)attrs;\r
-//                             if (ref.equals(element.getName()))\r
-//                                     return true;\r
-//                     }\r
-//             }\r
-//             return false;\r
                return elementName.containsKey(ref);\r
        }\r
        \r
        protected boolean isComplexTypeRef(String ref) {\r
-//             for (OpenAttrs attrs : schema.getSimpleTypeOrComplexTypeOrGroup()) {\r
-//                     if (attrs instanceof TopLevelComplexType) {\r
-//                             TopLevelComplexType element = (TopLevelComplexType)attrs;\r
-//                             if (ref.equals(element.getName()))\r
-//                                     return true;\r
-//                     }\r
-//             }\r
-//             return false;\r
                return complexTypeName.containsKey(ref);\r
-               \r
+       }\r
+       \r
+       protected boolean isSimpleTypeRef(String ref) {\r
+               return simpleTypeName.containsKey(ref);\r
        }\r
        \r
        protected NamedAttributeGroup getAttributeGroup(String name) {\r