[gxml] Fixed GAttribute implementation



commit 217f66320b26c6ec14e719773d71ddbf7f3dbabd
Author: Daniel Espinosa <esodan gmail com>
Date:   Fri Feb 5 15:40:08 2016 -0600

    Fixed GAttribute implementation

 gxml/GXmlAttribute.vala                 |   14 ++++++++++++++
 gxml/GXmlDocument.vala                  |    8 ++++++++
 gxml/GXmlElement.vala                   |   19 ++++++++++++++++---
 test/SerializableGeeDualKeyMapTest.vala |    5 -----
 test/SerializableGeeTreeMapTest.vala    |   15 +++++----------
 5 files changed, 43 insertions(+), 18 deletions(-)
---
diff --git a/gxml/GXmlAttribute.vala b/gxml/GXmlAttribute.vala
index 4963767..49339d0 100644
--- a/gxml/GXmlAttribute.vala
+++ b/gxml/GXmlAttribute.vala
@@ -30,6 +30,7 @@ public class GXml.GAttribute : GXml.GNode, GXml.Attribute
   public GAttribute (GDocument doc, Xml.Attr *node)
   {
     _attr = node;
+    Test.message ("Attr Name: "+node->name);
     _node = _attr->parent;
     _doc = doc;
   }
@@ -43,6 +44,19 @@ public class GXml.GAttribute : GXml.GNode, GXml.Attribute
       
     }
   }
+  public override string name {
+    owned get {
+      return _attr->name.dup ();
+    }
+  }
+  public override string value {
+    owned get {
+      return _node->get_prop (_attr->name);
+    }
+    set {
+      _node->set_prop (_attr->name, value);
+    }
+  }
   public string prefix {
     owned get {
       if (_attr == null) return "";
diff --git a/gxml/GXmlDocument.vala b/gxml/GXmlDocument.vala
index 110829d..d8c8930 100644
--- a/gxml/GXmlDocument.vala
+++ b/gxml/GXmlDocument.vala
@@ -162,6 +162,14 @@ public class GXml.GDocument : GXml.GNode, GXml.Document
     doc.dump_memory (out str, out size);
     return str;
   }
+  /**
+   * Uses libxml2 internal dump to memory function over owned 
+   */
+  public string libxml_to_string () {
+    string buffer;
+    doc->dump_memory (out buffer);
+    return buffer;
+  }
   public virtual bool save (GLib.Cancellable? cancellable = null)
     throws GLib.Error
   {
diff --git a/gxml/GXmlElement.vala b/gxml/GXmlElement.vala
index 0b4ef49..360ff13 100644
--- a/gxml/GXmlElement.vala
+++ b/gxml/GXmlElement.vala
@@ -39,13 +39,26 @@ public class GXml.GElement : GXml.GNode, GXml.Element
     set { content = value; }
   }
   // GXml.Element
-  public void set_attr (string name, string value)
+  public void set_attr (string aname, string avalue)
   {
-    _node->new_prop (name, value);
+    if (":" in aname) {
+      string[] cname = aname.split(":");
+      if (cname.length > 2) return;
+      bool found = false;
+      foreach (Namespace ns in namespaces) {
+        if (ns.prefix == cname[0]) found = true;
+      }
+      if (!found) return;
+    }
+    var a = _node->set_prop (aname, avalue);
   }
   public GXml.Node get_attr (string name)
   {
-    return new GAttribute (_doc, _node->get_prop (name));
+    if (_node == null) return null;
+    var a = _node->has_prop (name);
+    if (a == null) return null;
+    Test.message ("Element Prop: "+a->name);
+    return new GAttribute (_doc, a);
   }
   public void normalize () {}
   public string content {
diff --git a/test/SerializableGeeDualKeyMapTest.vala b/test/SerializableGeeDualKeyMapTest.vala
index a288c90..30fbd17 100644
--- a/test/SerializableGeeDualKeyMapTest.vala
+++ b/test/SerializableGeeDualKeyMapTest.vala
@@ -50,7 +50,6 @@ class SerializableGeeDualKeyMapTest : GXmlTest
   {
     Test.add_func ("/gxml/serializable/serializable_dual_key_map/api",
     () => {
-      try {
         var c = new SerializableDualKeyMap<string,string,Spaces> ();
         var o1 = new Spaces.full ("Floor", "Big");
         var o2 = new Spaces.full ("Wall", "Small");
@@ -125,10 +124,6 @@ class SerializableGeeDualKeyMapTest : GXmlTest
           stdout.printf (@"Not found 'Wall' & 'Smallest':\n");
           assert_not_reached ();
         }
-      }
-      catch (GLib.Error e) {
-        stdout.printf (@"ERROR: $(e.message)");
-      }
     });
     Test.add_func ("/gxml/serializable/serializable_dual_key_map/serialize",
     () => {
diff --git a/test/SerializableGeeTreeMapTest.vala b/test/SerializableGeeTreeMapTest.vala
index 196b025..968f981 100644
--- a/test/SerializableGeeTreeMapTest.vala
+++ b/test/SerializableGeeTreeMapTest.vala
@@ -55,7 +55,6 @@ class SerializableGeeTreeMapTest : GXmlTest
   {
     Test.add_func ("/gxml/serializable/serializable_tree_map/api",
     () => {
-      try {
         var c = new SerializableTreeMap<string,Space> ();
         var o1 = new Space.named ("Big");
         var o2 = new Space.named ("Small");
@@ -88,10 +87,6 @@ class SerializableGeeTreeMapTest : GXmlTest
           stdout.printf (@"Small key value is not found\n");
           assert_not_reached ();
         }
-      }
-      catch (GLib.Error e) {
-        stdout.printf (@"ERROR: $(e.message)");
-      }
     });
     Test.add_func ("/gxml/serializable/serializable_tree_map/serialize",
     () => {
@@ -103,12 +98,12 @@ class SerializableGeeTreeMapTest : GXmlTest
         c.set (o2.name, o2);
         var doc = new TwDocument ();
         var root = doc.create_element ("root");
-        doc.childs.add (root);
+        doc.children.add (root);
         c.serialize (root);
-        assert (root.childs.size == 2);
+        assert (root.children.size == 2);
         bool found1 = false;
         bool found2 = false;
-        foreach (GXml.Node n in root.childs) {
+        foreach (GXml.Node n in root.children) {
           if (n is Element && n.name == "space") {
             var name = n.attrs.get ("name");
             if (name != null) {
@@ -221,10 +216,10 @@ class SerializableGeeTreeMapTest : GXmlTest
           assert_not_reached ();
         }
         var root = doc.root;
-        assert (root.childs.size == 2);
+        assert (root.children.size == 2);
         bool found1 = false;
         bool found2 = false;
-        foreach (GXml.Node n in root.childs) {
+        foreach (GXml.Node n in root.children) {
           if (n is Element && n.name == "space") {
             var name = n.attrs.get ("name");
             if (name != null) {


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