[Practicalxml-commits] SF.net SVN: practicalxml:[53] trunk/src
Brought to you by:
kdgregory
|
From: Auto-Generated S. C. M. <pra...@li...> - 2008-12-14 17:22:32
|
Revision: 53
http://practicalxml.svn.sourceforge.net/practicalxml/?rev=53&view=rev
Author: kdgregory
Date: 2008-12-14 17:22:13 +0000 (Sun, 14 Dec 2008)
Log Message:
-----------
NamespaceResolver: add clone()
Modified Paths:
--------------
trunk/src/main/java/net/sf/practicalxml/misc/NamespaceResolver.java
trunk/src/test/java/net/sf/practicalxml/misc/TestNamespaceResolver.java
Modified: trunk/src/main/java/net/sf/practicalxml/misc/NamespaceResolver.java
===================================================================
--- trunk/src/main/java/net/sf/practicalxml/misc/NamespaceResolver.java 2008-12-14 17:07:45 UTC (rev 52)
+++ trunk/src/main/java/net/sf/practicalxml/misc/NamespaceResolver.java 2008-12-14 17:22:13 UTC (rev 53)
@@ -178,6 +178,9 @@
@Override
public final boolean equals(Object obj)
{
+ if (this == obj)
+ return true;
+
if (obj instanceof NamespaceResolver)
{
NamespaceResolver that = (NamespaceResolver)obj;
@@ -208,7 +211,7 @@
{
buf.append("xmlns=\"").append(_defaultNS).append("\"");
}
- for (String prefix : new TreeSet<String>(_prefix2ns.keySet()))
+ for (String prefix : getAllPrefixes())
{
if (buf.length() > 0)
buf.append(" ");
@@ -219,10 +222,28 @@
}
+ /**
+ * Returns a deep clone of this object, that can then be independently
+ * manipulated.
+ */
+ @Override
+ protected NamespaceResolver clone()
+ {
+ NamespaceResolver that = new NamespaceResolver()
+ .setDefaultNamespace(getDefaultNamespace());
+ for (String prefix : getAllPrefixes())
+ {
+ that.addNamespace(prefix, getNamespaceURI(prefix));
+ }
+ return that;
+ }
+
+
//----------------------------------------------------------------------------
// Internals
//----------------------------------------------------------------------------
+
/**
* Returns the set of prefixes for a given namespace, creating a new
* entry if one doesn't already exist.
Modified: trunk/src/test/java/net/sf/practicalxml/misc/TestNamespaceResolver.java
===================================================================
--- trunk/src/test/java/net/sf/practicalxml/misc/TestNamespaceResolver.java 2008-12-14 17:07:45 UTC (rev 52)
+++ trunk/src/test/java/net/sf/practicalxml/misc/TestNamespaceResolver.java 2008-12-14 17:22:13 UTC (rev 53)
@@ -275,4 +275,34 @@
assertTrue(str3.contains("xmlns:zippy=\"pinhead\""));
assertEquals(3, str3.split(" +").length);
}
+
+
+ public void testClone() throws Exception
+ {
+ NamespaceResolver resolv1 = new NamespaceResolver()
+ .setDefaultNamespace("foo")
+ .addNamespace("argle", "bargle");
+
+ NamespaceResolver resolv2 = resolv1.clone();
+ assertNotSame(resolv1, resolv2);
+ assertEquals(resolv1, resolv2);
+
+ resolv2.setDefaultNamespace("bar");
+ assertFalse(resolv1.equals(resolv2));
+ assertEquals("foo", resolv1.getDefaultNamespace());
+ assertEquals("bar", resolv2.getDefaultNamespace());
+
+ resolv2.addNamespace("argle", "zargle");
+ assertEquals("bargle", resolv1.getNamespaceURI("argle"));
+ assertEquals("zargle", resolv2.getNamespaceURI("argle"));
+
+ resolv2.addNamespace("wargle", "qwerty");
+ assertNull(resolv1.getPrefix("qwerty"));
+ assertNull(resolv1.getNamespaceURI("wargle"));
+
+ resolv1.addNamespace("wargle", "asdfg");
+ assertNull(resolv2.getPrefix("asdfg"));
+ assertEquals("qwerty", resolv2.getNamespaceURI("wargle"));
+ }
+
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|