[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. |