[gxml] Making GomXsd* have instantiable properties: Part I



commit dbe7bb96cd9bf3e3419db50ae27d91165ea427ca
Author: Daniel Espinosa <esodan gmail com>
Date:   Mon Jan 23 09:32:11 2017 -0600

    Making GomXsd* have instantiable properties: Part I
    
    Serialization process requires you have instantiable types, no
    interfaces ones, as properties. This make inviable to
    implement Xsd* interfaces and get access to parse XSD documents.
    
    In this part GomXsd* classes, now no implement XsdSchema to
    provide instantiable properties.
    
    Next step implement Xsd* interfaces, by prefixing them using "I"
    in order to avoid API conflicts.

 gxml/GomSchema.vala |  154 +++++++++++++++++++++++---------------------------
 gxml/Schema.vala    |    3 +
 2 files changed, 74 insertions(+), 83 deletions(-)
---
diff --git a/gxml/GomSchema.vala b/gxml/GomSchema.vala
index ff9d93c..9a132d9 100644
--- a/gxml/GomSchema.vala
+++ b/gxml/GomSchema.vala
@@ -21,9 +21,13 @@
  */
 using GXml;
 
-public class GXml.GomXsdSchema : GomElement, XsdSchema {
-  public XsdListElements elements { get; set; }
-  public XsdListSimpleTypes simple_types { get; set; }
+/**
+ * Reference interfaces for XSD support.
+ */
+public class GXml.GomXsdSchema : GomElement {
+  public GomXsdListElements elements { get; set; }
+  public GomXsdListSimpleTypes simple_type_definitions { get; set; }
+  public GomXsdListComplexTypes complex_type_definitions { get; set; }
   construct {
     initialize_with_namespace (XsdSchema.SCHEMA_NAMESPACE_URI,
                               XsdSchema.SCHEMA_NAMESPACE_PREFIX,
@@ -31,69 +35,55 @@ public class GXml.GomXsdSchema : GomElement, XsdSchema {
   }
 }
 
-public class GXml.GomXsdSimpleType : GomElement,
-                DomElement, XsdSimpleType, XsdBaseType
-{
+public class GXml.GomXsdSimpleType : GomElement {
   /**
    * (#all | List of (list | union | restriction | extension))
    */
   public string final { get; set; }
   public string name { get; set; }
-  public XsdAnnotation annotation { get; set; }
-  public XsdSimpleTypeDefinition definition { get; set; }
+  public GomXsdAnnotation annotation { get; set; }
+  public GomXsdSimpleTypeDefinition definition { get; set; }
   construct { initialize (GXml.XsdSimpleType.SCHEMA_NODE_NAME); }
 }
-public class GXml.GomXsdTypeRestriction : GomElement, XsdTypeRestriction, XsdSimpleTypeDefinition {
+
+public class GXml.GomXsdSimpleTypeDefinition : GomElement {
+  public GomXsdAnnotation annotation { get; set; }
+}
+public class GXml.GomXsdTypeRestriction : GomXsdSimpleTypeDefinition {
   public string base { get; set; }
   public string id { get; set; }
-  public XsdAnnotation annotation { get; set; }
-  public XsdSimpleType simple_type { get; set; }
+  public GomXsdSimpleType simple_type { get; set; }
   /**
-   * List of {link XsdTypeRestrictionDefinition} objects
+   * List of {link GomXsdTypeRestrictionDefinition} objects
    */
-  public XsdList definition { get; set; }
-}
-
-public class GXml.GomXsdTypeRestrictionDefinition : GomElement,
-              XsdTypeRestrictionDefinition {
-  public XsdAnnotation annotation { get; set; }
-}
-public class GXml.GomXsdTypeRestrictionMinExclusive : GomXsdTypeRestrictionDefinition,
-              XsdTypeRestrictionMinExclusive {}
-public class GXml.GomXsdTypeRestrictionMinInclusive : GomXsdTypeRestrictionDefinition,
-              XsdTypeRestrictionMinInclusive {}
-public class GXml.GomXsdTypeRestrictionMaxExclusive : GomXsdTypeRestrictionDefinition,
-              XsdTypeRestrictionMaxExclusive {}
-public class GXml.GomXsdTypeRestrictionMaxInclusive : GomXsdTypeRestrictionDefinition,
-              XsdTypeRestrictionMaxInclusive {}
-public class GXml.GomXsdTypeRestrictionTotalDigits : GomXsdTypeRestrictionDefinition,
-              XsdTypeRestrictionTotalDigits {}
-public class GXml.GomXsdTypeRestrictionFractionDigits : GomXsdTypeRestrictionDefinition,
-              XsdTypeRestrictionFractionDigits {}
-public class GXml.GomXsdTypeRestrictionLength : GomXsdTypeRestrictionDefinition,
-              XsdTypeRestrictionLength {}
-public class GXml.GomXsdTypeRestrictionMinLength : GomXsdTypeRestrictionDefinition,
-              XsdTypeRestrictionMinLength {}
-public class GXml.GomXsdTypeRestrictionMaxLength : GomXsdTypeRestrictionDefinition,
-              XsdTypeRestrictionMaxLength {}
-public class GXml.GomXsdTypeRestrictionEnumeration : GomXsdTypeRestrictionDefinition,
-              XsdTypeRestrictionEnumeration {
+  public GomXsdList definition { get; set; }
+}
+
+public class GXml.GomXsdTypeRestrictionDefinition : GomElement {
+  public GomXsdAnnotation annotation { get; set; }
+}
+public class GXml.GomXsdTypeRestrictionMinExclusive : GomXsdTypeRestrictionDefinition {}
+public class GXml.GomXsdTypeRestrictionMinInclusive : GomXsdTypeRestrictionDefinition {}
+public class GXml.GomXsdTypeRestrictionMaxExclusive : GomXsdTypeRestrictionDefinition {}
+public class GXml.GomXsdTypeRestrictionMaxInclusive : GomXsdTypeRestrictionDefinition {}
+public class GXml.GomXsdTypeRestrictionTotalDigits : GomXsdTypeRestrictionDefinition {}
+public class GXml.GomXsdTypeRestrictionFractionDigits : GomXsdTypeRestrictionDefinition {}
+public class GXml.GomXsdTypeRestrictionLength : GomXsdTypeRestrictionDefinition {}
+public class GXml.GomXsdTypeRestrictionMinLength : GomXsdTypeRestrictionDefinition {}
+public class GXml.GomXsdTypeRestrictionMaxLength : GomXsdTypeRestrictionDefinition {}
+public class GXml.GomXsdTypeRestrictionEnumeration : GomXsdTypeRestrictionDefinition {
   public string id { get; set; }
   public string value { get; set; }
   construct { initialize (GXml.XsdTypeRestrictionEnumeration.SCHEMA_NODE_NAME); }
 }
-public class GXml.GomXsdTypeRestrictionWhiteSpace: GomXsdTypeRestrictionDefinition,
-              XsdTypeRestrictionWhiteSpace {}
-public class GXml.GomXsdTypeRestrictionPattern : GomXsdTypeRestrictionDefinition,
-              XsdTypeRestrictionPattern {}
-public class GXml.GomXsdTypeRestrictionAssertion : GomXsdTypeRestrictionDefinition,
-              XsdTypeRestrictionAssertion {}
-public class GXml.GomXsdTypeRestrictionExplicitTimezone : GomXsdTypeRestrictionDefinition,
-              XsdTypeRestrictionExplicitTimezone {}
+public class GXml.GomXsdTypeRestrictionWhiteSpace: GomXsdTypeRestrictionDefinition {}
+public class GXml.GomXsdTypeRestrictionPattern : GomXsdTypeRestrictionDefinition {}
+public class GXml.GomXsdTypeRestrictionAssertion : GomXsdTypeRestrictionDefinition {}
+public class GXml.GomXsdTypeRestrictionExplicitTimezone : GomXsdTypeRestrictionDefinition {}
 
-public class GXml.GomXsdComplexType : GomXsdBaseType, XsdComplexType {
-  protected XsdList _type_attributes = null;
-  protected XsdList _group_attributes = null;
+public class GXml.GomXsdComplexType : GomXsdBaseType {
+  protected GomXsdList _type_attributes = null;
+  protected GomXsdList _group_attributes = null;
   /**
   * attribute name = abstract
   */
@@ -113,26 +103,26 @@ public class GXml.GomXsdComplexType : GomXsdBaseType, XsdComplexType {
    */
   public bool default_attributes_apply { get; set; default = true; }
   /**
-   * A {@link XsdComplexType} or {@link XsdSimpleType}
+   * A {@link GomXsdComplexType} or {@link GomXsdSimpleType}
    */
-  public XsdBaseContent content_type { get; set; }
+  public GomXsdBaseContent content_type { get; set; }
   /**
-   * List of type {@link XsdAttribute} definitions
+   * List of type {@link GomXsdAttribute} definitions
    */
-  public XsdList type_attributes { get { return _type_attributes; } }
+  public GomXsdList type_attributes { get { return _type_attributes; } }
   /**
-   * List of type {@link XsdGroupAttribute} definitions
+   * List of type {@link GomXsdGroupAttribute} definitions
    */
-  public XsdList group_attributes { get { return _group_attributes; } }
+  public GomXsdList group_attributes { get { return _group_attributes; } }
   construct { initialize (GXml.XsdComplexType.SCHEMA_NODE_NAME); }
 }
 
-public class GXml.GomXsdExtension : GomElement, XsdExtension {
+public class GXml.GomXsdExtension : GomElement {
   public string base { get; set; }
   construct { initialize (GXml.XsdExtension.SCHEMA_NODE_NAME); }
 }
 
-public class GXml.GomXsdElement : GomElement, XsdElement {
+public class GXml.GomXsdElement : GomElement {
   /**
   * attribute name = abstract
   */
@@ -174,40 +164,38 @@ public class GXml.GomXsdElement : GomElement, XsdElement {
    * attribute name = 'type'
    */
   public string object_type { get; set; }
-  public XsdAnnotation anotation { get; set; }
-  /**
-   * A {@link XsdComplexType} or {@link XsdSimpleType} list of elements
-   */
-  public XsdListBaseTypes type_definitions { get; set; }
+  public GomXsdAnnotation anotation { get; set; }
+  public GomXsdListSimpleTypes simple_type_definitions { get; set; }
+  public GomXsdListComplexTypes complex_type_definitions { get; set; }
   construct { initialize (GXml.XsdElement.SCHEMA_NODE_NAME); }
 }
 
 
-public class GXml.GomXsdAnnotation : GomElement, XsdAnnotation {
+public class GXml.GomXsdAnnotation : GomElement {
 }
 
-public class GXml.GomXsdBaseType : GomElement, XsdBaseType {
-  public XsdAnnotation anotation { get; set; }
+public class GXml.GomXsdBaseType : GomElement {
+  public GomXsdAnnotation anotation { get; set; }
 }
 
-public class GXml.GomXsdBaseContent : GomElement, XsdBaseContent {
-  public XsdAnnotation anotation { get; set; }
+public class GXml.GomXsdBaseContent : GomElement {
+  public GomXsdAnnotation anotation { get; set; }
 }
-public class GXml.GomXsdSimpleContent : GomXsdBaseContent, XsdBaseContent {
+public class GXml.GomXsdSimpleContent : GomXsdBaseContent {
   construct { initialize (GXml.XsdSimpleContent.SCHEMA_NODE_NAME); }
 }
-public class GXml.GomXsdComplexContent : GomXsdBaseContent, XsdBaseContent {
+public class GXml.GomXsdComplexContent : GomXsdBaseContent {
   construct { initialize (GXml.XsdComplexContent.SCHEMA_NODE_NAME); }
 }
-public class GXml.GomXsdOpenContent : GomXsdBaseContent, XsdBaseContent {}
+public class GXml.GomXsdOpenContent : GomXsdBaseContent {}
 
-public class GXml.GomXsdBaseAttribute : GomElement, XsdBaseAttribute  {
-  public XsdAnnotation anotation { get; set; }
+public class GXml.GomXsdBaseAttribute : GomElement  {
+  public GomXsdAnnotation anotation { get; set; }
 }
-public class GXml.GomXsdAttribute : GomXsdBaseAttribute, XsdAttribute {}
-public class GXml.GomXsdAttributeGroup : GomXsdBaseAttribute, XsdAttributeGroup {}
+public class GXml.GomXsdAttribute : GomXsdBaseAttribute {}
+public class GXml.GomXsdAttributeGroup : GomXsdBaseAttribute {}
 
-public class GXml.GomXsdList : GomArrayList, XsdList {
+public class GXml.GomXsdList : GomArrayList {
   public new int length {
     get { return (this as GomArrayList).length; }
   }
@@ -220,18 +208,18 @@ public class GXml.GomXsdList : GomArrayList, XsdList {
       if (get_item (i) == element) return i;
     }
     return -1;
-  }
-  public DomElement? XsdList.get_item (int index) {
+  }/*
+  public DomElement? GomXsdList.get_item (int index) {
     return (this as GomArrayList).get_item (index);
-  }
+  }*/
 }
 
-public class GXml.GomXsdListElements : GomXsdList, XsdListElements {
+public class GXml.GomXsdListElements : GomXsdList {
   construct { initialize (typeof (GomXsdElement)); }
 }
-public class GXml.GomXsdListSimpleTypes : GomXsdList, XsdListSimpleTypes {
+public class GXml.GomXsdListSimpleTypes : GomXsdList {
   construct { initialize (typeof (GomXsdSimpleType)); }
 }
-public class GXml.GomXsdListBaseTypes : GomXsdList, XsdListBaseTypes {
-  construct { initialize (typeof (GomXsdBaseType)); }
+public class GXml.GomXsdListComplexTypes : GomXsdList {
+  construct { initialize (typeof (GomXsdComplexType)); }
 }
diff --git a/gxml/Schema.vala b/gxml/Schema.vala
index acf502f..1d0790b 100644
--- a/gxml/Schema.vala
+++ b/gxml/Schema.vala
@@ -21,6 +21,9 @@
  */
 using GXml;
 
+/**
+ * Reference interfaces for XSD support.
+ */
 public interface GXml.XsdSchema : GLib.Object, DomElement {
   public const string SCHEMA_NODE_NAME = "schema";
   public const string SCHEMA_NAMESPACE_URI = "http://www.w3.org/2001/XMLSchema";;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]