[gxml] XParser: Fixed re-define node namespace



commit b097d37a68d79b945e95eb24c6d43fd4954a3052
Author: Daniel Espinosa <esodan gmail com>
Date:   Mon Jan 23 13:55:38 2017 -0600

    XParser: Fixed re-define node namespace
    
    Removed some message from unit tests

 gxml/GomElement.vala       |    8 +++++++-
 gxml/XParser.vala          |   16 +++++++++++++++-
 test/DomGDocumentTest.vala |   32 ++++++++++++++++++++++++++------
 test/GDocumentTest.vala    |    2 ++
 test/GomDocumentTest.vala  |    5 +++--
 test/GomElementTest.vala   |   11 +++++++----
 test/GomSchemaTest.vala    |    4 ++++
 test/TDocumentTest.vala    |   10 ++++++++++
 test/TElementTest.vala     |    2 ++
 9 files changed, 76 insertions(+), 14 deletions(-)
---
diff --git a/gxml/GomElement.vala b/gxml/GomElement.vala
index dc9e2b8..d5d1052 100644
--- a/gxml/GomElement.vala
+++ b/gxml/GomElement.vala
@@ -395,7 +395,7 @@ public class GXml.GomElement : GomNode,
           string ns_uri = _element.lookup_namespace_uri (null);
           if (ns_uri != null && ns_uri != node.node_value) {
 #if DEBUG
-            GLib.message ("NSURI: "+ns_uri+" NSURI Attr:"+node.node_value);
+            GLib.message ("Error: NSURI: "+ns_uri+" NSURI Attr:"+node.node_value);
 #endif
             throw new DomError.NAMESPACE_ERROR
                       (_("Redefinition of default namespace for %s")
@@ -409,6 +409,12 @@ public class GXml.GomElement : GomNode,
 #endif
           string nsprefix = _element.lookup_prefix (node.node_value);
           string nsuri = _element.lookup_namespace_uri ((node as DomAttr).local_name);
+
+#if DEBUG
+          if (nsprefix != null || nsuri != null)
+            GLib.message ("Ns Prefix = "+nsprefix
+                      + "Ns URI: "+nsuri);
+#endif
           if ((nsprefix != null || nsuri != null)
               && (nsprefix != (node as DomAttr).local_name
                   || nsuri != node.node_value)) {
diff --git a/gxml/XParser.vala b/gxml/XParser.vala
index e0d4e51..7656c1c 100644
--- a/gxml/XParser.vala
+++ b/gxml/XParser.vala
@@ -228,7 +228,6 @@ public class GXml.XParser : Object, GXml.Parser {
 #if DEBUG
           GLib.message ("Property Read: "+aprefix+":"+nsp+"="+ansuri);
 #endif
-          if (nsp == element.prefix && ansuri == element.namespace_uri) continue;
           string ansp = nsp;
           if (nsp != "xmlns")
             ansp = aprefix+":"+nsp;
@@ -634,6 +633,21 @@ public class GXml.XParser : Object, GXml.Parser {
     // DomElement attributes
     foreach (string ak in (node as DomElement).attributes.keys) {
       string v = ((node as DomElement).attributes as HashMap<string,string>).get (ak);
+      if ("xmlns:" in ak) {
+        string ns = (node as DomElement).namespace_uri;
+        if (ns != null) {
+          string[] strs = ak.split (":");
+          if (strs.length == 2) {
+            string nsp = strs[1];
+            if (ns == v && nsp == (node as DomElement).prefix) {
+#if DEBUG
+              message ("Attribute Is element NS, skiping...");
+#endif
+              continue;
+            }
+          }
+        }
+      }
       size += tw.write_attribute (ak, v);
       size += tw.end_attribute ();
       if (size > 1500)
diff --git a/test/DomGDocumentTest.vala b/test/DomGDocumentTest.vala
index 527224c..c1e42a3 100644
--- a/test/DomGDocumentTest.vala
+++ b/test/DomGDocumentTest.vala
@@ -68,7 +68,9 @@ const string XMLDOC ="<?xml version=\"1.0\"?>
        public static void add_tests () {
                Test.add_func ("/gxml/dom/document/children", () => {
                        try {
+#if DEBUG
                                GLib.message ("Doc: "+STRDOC);
+#endif
                                var doc = new GDocument.from_string (STRDOC) as DomDocument;
                                DomElement root = doc.document_element;
                                assert (root != null);
@@ -86,7 +88,9 @@ const string XMLDOC ="<?xml version=\"1.0\"?>
                });
                Test.add_func ("/gxml/dom/document/child_nodes", () => {
                        try {
+#if DEBUG
                                GLib.message ("Doc: "+STRDOC);
+#endif
                                var doc = new GDocument.from_string (STRDOC) as DomDocument;
                                assert (doc is DomDocument);
                                assert (doc.child_nodes != null);
@@ -107,7 +111,9 @@ const string XMLDOC ="<?xml version=\"1.0\"?>
                });
                Test.add_func ("/gxml/dom/document/element_collections", () => {
                        try {
+#if DEBUG
                                GLib.message ("Doc: "+STRDOC);
+#endif
                                var doc = new GDocument.from_string (HTMLDOC) as DomDocument;
                                assert (doc is DomDocument);
                                var le = doc.get_elements_by_tag_name ("p");
@@ -115,7 +121,9 @@ const string XMLDOC ="<?xml version=\"1.0\"?>
                                assert (le[0].get_attribute ("class") == "black");
                                assert (le[1].get_attribute ("id") == "p01");
                                var lc = doc.get_elements_by_class_name ("black");
+#if DEBUG
                                GLib.message ("DOC\n"+(doc as GDocument).to_string ());
+#endif
                                assert (lc.size == 2);
                                assert (lc[0].node_name == "p");
                                assert (lc[0].get_attribute ("class") == "black block");
@@ -283,7 +291,9 @@ const string XMLDOC ="<?xml version=\"1.0\"?>
                        assert (ng2.lookup_prefix ("http://live.gnome.org/GXml";) == null);
                        assert (ng2.tag_name == "OtherNode");
 
+#if DEBUG
                        GLib.message ("BODY:"+(doc.document_element as GXml.Node).to_string ());
+#endif
                        var l = doc.document_element.get_elements_by_tag_name ("p");
                        assert (l != null);
                        assert (l is DomHTMLCollection);
@@ -365,7 +375,9 @@ const string XMLDOC ="<?xml version=\"1.0\"?>
                        assert (n2.attributes.length == 1);
                        assert (n2.has_attribute_ns ("http://devel.org/","nice";));
                        assert (!n2.has_attribute_ns ("http://devel.org/","dev:nice";));
+#if DEBUG
                        GLib.message ("NODE:"+(n2 as GXml.Node).to_string ());
+#endif
                        assert (n2.get_attribute_ns ("http://devel.org/","nice";) == "good");
                        assert (n2.get_attribute_ns ("http://devel.org/","dev:nice";) == null);
                        } catch (GLib.Error e) {
@@ -375,7 +387,9 @@ const string XMLDOC ="<?xml version=\"1.0\"?>
                });
                Test.add_func ("/gxml/dom/document/api", () => {
                        try {
+#if DEBUG
                                GLib.message ("Doc: "+XMLDOC);
+#endif
                                var doc = new GDocument.from_string (XMLDOC) as DomDocument;
                                assert (doc.url == "about:blank");
                                assert (doc.document_uri == "about:blank");
@@ -414,8 +428,10 @@ const string XMLDOC ="<?xml version=\"1.0\"?>
                                var lec4 = doc.get_elements_by_class_name ("code parent");
                                assert (lec4.length == 0);
                                var lec5 = doc.get_elements_by_class_name ("node parent");
+#if DEBUG
                                GLib.message ("Doc in use:\n"+(doc as GDocument).libxml_to_string ());
                                GLib.message ("Class node found: "+lec5.length.to_string ());
+#endif
                                assert (lec5.length == 3);
                                assert (lec5.item (0) is DomElement);
                                assert (lec5.item (0).node_name == "MyNode");
@@ -433,7 +449,9 @@ const string XMLDOC ="<?xml version=\"1.0\"?>
                                assert (doc.document_element.last_child.node_value == "COMMENT");
                                var pi = doc.create_processing_instruction ("git","commit");
                                doc.document_element.append_child (pi);
+#if DEBUG
                                GLib.message ("DOC: "+(doc.document_element as GXml.Node).to_string ());
+#endif
                                assert (doc.document_element.last_child is DomProcessingInstruction);
                        } catch (GLib.Error e) {
                                GLib.message ("Error: "+ e.message);
@@ -442,7 +460,7 @@ const string XMLDOC ="<?xml version=\"1.0\"?>
                });
                Test.add_func ("/gxml/dom/document/import", () => {
                        try {
-                               GLib.message ("Doc: "+XMLDOC);
+                               Test.message ("Doc: "+XMLDOC);
                                var doc = new GDocument.from_string (XMLDOC) as DomDocument;
                                var doc2 = new GDocument.from_string (STRDOC) as DomDocument;
                                doc.import_node (doc2.document_element, false);
@@ -458,7 +476,7 @@ const string XMLDOC ="<?xml version=\"1.0\"?>
                });
                Test.add_func ("/gxml/dom/document/adopt", () => {
                        try {
-                               GLib.message ("Doc: "+XMLDOC);
+                               Test.message ("Doc: "+XMLDOC);
                                var doc = new GDocument.from_string (XMLDOC) as DomDocument;
                                var doc2 = new GDocument.from_string (STRDOC) as DomDocument;
                                doc2.adopt_node (doc.document_element.children.last ());
@@ -475,7 +493,7 @@ const string XMLDOC ="<?xml version=\"1.0\"?>
                });
                Test.add_func ("/gxml/dom/document/event", () => {
                        try {
-                               GLib.message ("No implemented...Skiping");
+                               Test.message ("No implemented...Skiping");
                                //TODO: implement
                        } catch (GLib.Error e) {
                                GLib.message ("Error: "+ e.message);
@@ -484,7 +502,7 @@ const string XMLDOC ="<?xml version=\"1.0\"?>
                });
                Test.add_func ("/gxml/dom/document/range", () => {
                        try {
-                               GLib.message ("No implemented...Skiping");
+                               Test.message ("No implemented...Skiping");
                                //TODO: implement
                        } catch (GLib.Error e) {
                                GLib.message ("Error: "+ e.message);
@@ -493,7 +511,7 @@ const string XMLDOC ="<?xml version=\"1.0\"?>
                });
                Test.add_func ("/gxml/dom/document/iterator", () => {
                        try {
-                               GLib.message ("No implemented...Skiping");
+                               Test.message ("No implemented...Skiping");
                                //TODO: implement
                        } catch (GLib.Error e) {
                                GLib.message ("Error: "+ e.message);
@@ -502,7 +520,7 @@ const string XMLDOC ="<?xml version=\"1.0\"?>
                });
                Test.add_func ("/gxml/dom/document/walker", () => {
                        try {
-                               GLib.message ("No implemented...Skiping");
+                               Test.message ("No implemented...Skiping");
                                //TODO: implement
                        } catch (GLib.Error e) {
                                GLib.message ("Error: "+ e.message);
@@ -555,7 +573,9 @@ const string XMLDOC ="<?xml version=\"1.0\"?>
                                // BUG: libxml2 doesn't support continuos DomText nodes
                                // when it is added, its data is concatecated in just text
                                // node
+#if DEBUG
                                GLib.message ("NTST: "+(ntst as GXml.Node).to_string ());
+#endif
                                assert (ntst.child_nodes.item (0) is DomText);
                                assert ((ntst.child_nodes.item (0) as DomText).data == "TEXT1TEXT2");
                                // BUG: DomText.whole_text
diff --git a/test/GDocumentTest.vala b/test/GDocumentTest.vala
index 601bcc7..9d7df8c 100644
--- a/test/GDocumentTest.vala
+++ b/test/GDocumentTest.vala
@@ -337,7 +337,9 @@ class GDocumentTest : GXmlTest {
                                var pt = c.attrs.get ("prop");
                                assert (pt != null);
                                var pt2 = (c as Element).get_ns_attr ("prop", doc.root.namespaces[0].uri);
+#if DEBUG
                                GLib.message ("ROOT: "+doc.root.to_string ());
+#endif
                                assert (doc.root.to_string () == "<root 
xmlns:gxml=\"http://www.gnome.org/GXml\";><child xmlns:gxml2=\"http://www.gnome.org/GXml2\"; 
gxml:prop=\"Ten\"/></root>");
                        } catch (GLib.Error e) {
                                GLib.message ("ERROR: "+ e.message);
diff --git a/test/GomDocumentTest.vala b/test/GomDocumentTest.vala
index b7a6f86..2a2ac8d 100644
--- a/test/GomDocumentTest.vala
+++ b/test/GomDocumentTest.vala
@@ -167,8 +167,9 @@ class GomDocumentTest : GXmlTest {
                                assert ("<shortdesc xml:lang=\"en\">GObject XML and Serialization 
API</shortdesc>"
                                                                in s);
                                assert ("<homepage rdf:resource=\"https://wiki.gnome.org/GXml\"/>" in s);
-                               assert ("<foaf:Person>" in s);
-                               assert ("<foaf:name>Daniel Espinosa</foaf:name>" in s);
+                               assert ("<foaf:Person" in s);
+                               assert ("<foaf:name " in s);
+                               assert ("Daniel Espinosa</foaf:name>"in s);
                        } catch (GLib.Error e) {
                                GLib.message ("Error: "+e.message);
                                assert_not_reached ();
diff --git a/test/GomElementTest.vala b/test/GomElementTest.vala
index 64693b4..2936811 100644
--- a/test/GomElementTest.vala
+++ b/test/GomElementTest.vala
@@ -74,13 +74,16 @@ class GomElementTest : GXmlTest  {
                                assert (node.node_name == "magic:Potion");
                                assert ((node as DomElement).namespace_uri == "http://hogwarts.co.uk/magic";);
                                assert ((node as DomElement).prefix == "magic");
-                               assert ((node as DomElement).attributes.size == 2);
-                               GLib.message ("Attributes: "+(node as DomElement).attributes.size.to_string 
());
-                               /*foreach (string k in (node as DomElement).attributes.keys) {
+#if DEBUG
+                               message ("Element: "+(node as GomElement).write_string ());
+                               message ("Attributes: "+(node as DomElement).attributes.length.to_string ());
+                               foreach (string k in (node as DomElement).attributes.keys) {
                                        string v = (node as DomElement).get_attribute (k);
                                        if (v == null) v = "NULL";
                                        GLib.message ("Attribute: "+k+"="+v);
-                               }*/
+                               }
+#endif
+                               assert ((node as DomElement).attributes.length == 2);
                                assert ((node as DomElement).get_attribute ("xmlns:magic") == 
"http://hogwarts.co.uk/magic";);
                                assert ((node as DomElement).get_attribute_ns 
("http://www.w3.org/2000/xmlns/";, "magic") == "http://hogwarts.co.uk/magic";);
                                assert ((node as DomElement).get_attribute ("xmlns:products") == 
"http://diagonalley.co.uk/products";);
diff --git a/test/GomSchemaTest.vala b/test/GomSchemaTest.vala
index 50526d8..04c1a54 100644
--- a/test/GomSchemaTest.vala
+++ b/test/GomSchemaTest.vala
@@ -29,11 +29,15 @@ class GomSchemaTest : GXmlTest  {
                                var f = GLib.File.new_for_path (GXmlTestConfig.TEST_DIR+"/schema-test.xsd");
                                assert (f.query_exists ());
                                var sch = new GomXsdSchema ();
+#if DEBUG
                                message ("XSD Empty: "+sch.write_string ());
                                message ("XSD node name: "+sch.node_name);
+#endif
                                assert (sch.local_name == "schema");
                                sch.read_from_file (f);
+#if DEBUG
                                message ("XSD: "+sch.write_string ());
+#endif
                                assert (sch.simple_type_definitions != null);
                                var st = sch.simple_type_definitions.get_item (0) as GomXsdSimpleType;
                                assert (st != null);
diff --git a/test/TDocumentTest.vala b/test/TDocumentTest.vala
index 2c65afc..6f211cf 100644
--- a/test/TDocumentTest.vala
+++ b/test/TDocumentTest.vala
@@ -723,7 +723,9 @@ class TDocumentTest : GXmlTest {
                                assert (d.root.name == "root");
                                assert (d.root.children_nodes[0] != null);
                                assert (d.root.children_nodes[0].name == "child");
+#if DEBUG
                                GLib.message ("child attri: "+(d.root.children_nodes[0].attrs.size).to_string 
());
+#endif
                                assert (d.root.children_nodes[0].attrs.size == 2);
                                assert (d.root.children_nodes[0].attrs["v"] != null);
                                assert (d.root.children_nodes[0].children_nodes[0] is GXml.Text);
@@ -757,7 +759,9 @@ class TDocumentTest : GXmlTest {
                                assert (nc != null);
                                assert (nc.name == "Read");
                                assert (nc.children_nodes.size == 2);
+#if DEBUG
                                GLib.message ("from file");
+#endif
                                // Remove all unwanted
                                TDocument.ReadTypeFunc f1 = (node, tr)=>{
                                        Test.message ("ReadType check node: "+node.name);
@@ -803,7 +807,9 @@ class TDocumentTest : GXmlTest {
                                assert (nc3.name == "Read");
                                assert (nc3.children_nodes.size == 1);
                                // From URI
+#if DEBUG
                                GLib.message ("from uri");
+#endif
                                var d4 = new TDocument.from_uri_with_readtype_func (file.get_uri (), f2);
                                Test.message (@"$d3");
                                assert (d4.root != null);
@@ -817,7 +823,9 @@ class TDocumentTest : GXmlTest {
                                assert (nc4.name == "Read");
                                assert (nc4.children_nodes.size == 1);
                                // From Stream
+#if DEBUG
                                GLib.message ("from stream");
+#endif
                                var file2 = GLib.File.new_for_path 
(GXmlTestConfig.TEST_DIR+"/t-read-test.xml");
                                var d5 = new TDocument.from_stream_with_readtype_func (file2.read (), f1);
                                assert (d5.root != null);
@@ -832,7 +840,9 @@ class TDocumentTest : GXmlTest {
                                assert (nc5.name == "Read");
                                assert (nc5.children_nodes.size == 1);
                                // From string
+#if DEBUG
                                GLib.message ("from string");
+#endif
                                var d6 = new TDocument.from_string_with_readtype_func 
("<root><Read/><NoRead/><NoRead/><Read/><NoRead/></root>", f1);
                                assert (d6.root != null);
                                assert (d6.root.children_nodes.size == 2);
diff --git a/test/TElementTest.vala b/test/TElementTest.vala
index f83ab91..048dd77 100644
--- a/test/TElementTest.vala
+++ b/test/TElementTest.vala
@@ -657,7 +657,9 @@ class TElementTest : GXmlTest {
                                };
                                var d2 = new TDocument ();
                                TDocument.read_doc (d2, file, f1);
+#if DEBUG
                                GLib.message (@"$d2");
+#endif
                                assert (d2.root != null);
                                assert (d2.root.children_nodes.size == 7);
                                var n2 = d2.root.children_nodes[6];


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