[gxml] Fixed TwDocument write attribute with namespace already declared
- From: Daniel Espinosa Ortiz <despinosa src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gxml] Fixed TwDocument write attribute with namespace already declared
- Date: Wed, 13 May 2015 23:46:40 +0000 (UTC)
commit b1f3075f31352379daa0507585dc51574e513e35
Author: Daniel Espinosa <esodan gmail com>
Date: Wed May 13 17:13:21 2015 -0500
Fixed TwDocument write attribute with namespace already declared
gxml/TwAttribute.vala | 1 -
gxml/TwDocument.vala | 10 +++++++++-
test/SerializableGeeDualKeyMapTest.vala | 2 +-
test/SerializableGeeTreeMapTest.vala | 2 +-
test/SerializableObjectModel-Tw-Test.vala | 2 --
test/TwElementTest.vala | 25 +++++++++++++++++++++++++
6 files changed, 36 insertions(+), 6 deletions(-)
---
diff --git a/gxml/TwAttribute.vala b/gxml/TwAttribute.vala
index 991a234..bffebce 100644
--- a/gxml/TwAttribute.vala
+++ b/gxml/TwAttribute.vala
@@ -27,7 +27,6 @@ public class GXml.TwAttribute : GXml.TwNode, GXml.Attribute
requires (d is TwDocument)
{
_doc = d;
- ((TwDocument) document).tw = ((TwDocument) d).tw;
_name = name;
_value = value;
}
diff --git a/gxml/TwDocument.vala b/gxml/TwDocument.vala
index 11cf037..9f3ec64 100644
--- a/gxml/TwDocument.vala
+++ b/gxml/TwDocument.vala
@@ -229,7 +229,15 @@ public class GXml.TwDocument : GXml.TwNode, GXml.Document
#if DEBUG
GLib.message (@"Starting Element '$(node.name)': write attribute '$(attr.name)' with NS");
#endif
- size += tw.write_attribute_ns (attr.ns_prefix (), attr.name, attr.ns_uri (), attr.value);
+ if (!declared_ns.contains (attr.ns_uri ())) {
+ size += tw.write_attribute_ns (attr.ns_prefix (), attr.name, attr.ns_uri (), attr.value);
+ declared_ns.add (attr.ns_uri ());
+#if DEBUG
+ GLib.message (@"Declared NS: $(attr.ns_uri ()) Total declared = $(declared_ns.size.to_string
())");
+#endif
+ }
+ else
+ size += tw.write_attribute_ns (attr.ns_prefix (), attr.name, null, attr.value);
}
else {
#if DEBUG
diff --git a/test/SerializableGeeDualKeyMapTest.vala b/test/SerializableGeeDualKeyMapTest.vala
index f1fcd1a..c02e948 100644
--- a/test/SerializableGeeDualKeyMapTest.vala
+++ b/test/SerializableGeeDualKeyMapTest.vala
@@ -145,7 +145,7 @@ class SerializableGeeDualKeyMapTest : GXmlTest
var doc = new TwDocument ();
var root = doc.create_element ("root");
doc.childs.add (root);
- c.serialize ( (xNode) root);
+ c.serialize (root);
assert (root.childs.size == 4);
bool found1 = false;
bool found2 = false;
diff --git a/test/SerializableGeeTreeMapTest.vala b/test/SerializableGeeTreeMapTest.vala
index 839eae7..196b025 100644
--- a/test/SerializableGeeTreeMapTest.vala
+++ b/test/SerializableGeeTreeMapTest.vala
@@ -104,7 +104,7 @@ class SerializableGeeTreeMapTest : GXmlTest
var doc = new TwDocument ();
var root = doc.create_element ("root");
doc.childs.add (root);
- c.serialize ((xNode) root);
+ c.serialize (root);
assert (root.childs.size == 2);
bool found1 = false;
bool found2 = false;
diff --git a/test/SerializableObjectModel-Tw-Test.vala b/test/SerializableObjectModel-Tw-Test.vala
index 8538579..5912d7f 100644
--- a/test/SerializableObjectModel-Tw-Test.vala
+++ b/test/SerializableObjectModel-Tw-Test.vala
@@ -60,9 +60,7 @@ class SerializableObjectModelTwTest : GXmlTest
assert (manual.pages == 3);
assert (manual.get_contents () == "TEXT INTO THE MANUAL DOCUMENT");
try {
- GLib.message ("Before Serialize...");
manual.serialize (doc);
- GLib.message ("After Serialize...");
Element element = (Element) doc.root;
} catch (GLib.Error e) {
stdout.printf (@"$(e.message)");
diff --git a/test/TwElementTest.vala b/test/TwElementTest.vala
index fad0b82..d3134d7 100644
--- a/test/TwElementTest.vala
+++ b/test/TwElementTest.vala
@@ -497,5 +497,30 @@ class TwElementTest : GXmlTest {
assert ("</gxml:nons>" in str);
assert ("</gxml:child>" in str);
});
+ Test.add_func ("/gxml/tw-element/attr-namespace", () => {
+ var d = new TwDocument ();
+ var r = d.create_element ("root");
+ d.childs.add (r);
+ // Default NS
+ d.set_namespace ("http://git.gnome.org/browse/gxml", "gxml");
+ var c = (Element) d.create_element ("child");
+ r.childs.add (c);
+ c.set_attr ("at","val");
+ var a = c.get_attr ("at");
+ assert (a != null);
+#if DEBUG
+ GLib.message (@"$d");
+#endif
+ a.set_namespace ("http://git.gnome.org/browse/gxml", "gxml");
+ assert (a.namespaces.size == 1);
+ assert (d.namespaces.size == 1);
+ string str = d.to_string ();
+#if DEBUG
+ GLib.message (@"$d");
+#endif
+ assert ("<root xmlns:gxml=\"http://git.gnome.org/browse/gxml\">" in str);
+ assert ("<child gxml:at=\"val\"/>" in str);
+ assert ("</root>" in str);
+ });
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]