Rich,
Seems like this commit has some JDK1.5 specific stuff [1]... Today I
switched to 1.4 and build was failing..
Thanks
~Thilina
[1]
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html#contains(java.lang.CharSequence)
On 2/4/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
> Author: scheu
> Date: Sat Feb 3 13:11:39 2007
> New Revision: 503313
>
> URL: http://svn.apache.org/viewvc?view=rev&rev=503313
> Log:
> WSCOMMONS-161
> Contributor: Rich Scheuerle
> Fix to OMSourcedElementImpl. Force expansion now updates the prefix of the
element. Also supplied validation tests.
>
> Modified:
>
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSourcedElementImpl.java
>
webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/impl/llom/OMSourcedElementTest.java
>
> Modified:
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSourcedElementImpl.java
> URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSourcedElementImpl.java?view=diff&rev=503313&r1=503312&r2=503313
> ==============================================================================
> ---
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSourcedElementImpl.java
(original)
> +++
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSourcedElementImpl.java
Sat Feb 3 13:11:39 2007
> @@ -54,9 +54,6 @@
>
> /** Namespace for element, needed in order to bypass base class
handling. */
> private OMNamespace definedNamespace = null;
> -
> - /** Namespace for element, needed in order to bypass base class
handling. */
> - private QName definedQName = null;
>
> /** Flag for parser provided to base element class. */
> private boolean isParserSet;
> @@ -90,7 +87,7 @@
> //create a namespace
> super(qName.getLocalPart(), null, factory);
> dataSource = source;
> - definedQName = qName;
> + definedNamespace = new OMNamespaceImpl(qName.getNamespaceURI(),
qName.getPrefix());
> }
>
> /**
> @@ -153,7 +150,7 @@
> e.getMessage());
> }
>
> - // make sure element name matches what was expected
> + // make sure element local name and namespace matches what was
expected
> if (!reader.getLocalName().equals(getLocalName())) {
> log.error("forceExpand: expected element name " +
> getLocalName() + ", found " + reader.getLocalName());
> @@ -170,10 +167,27 @@
> readerURI + ", not the expected " + uri);
> }
>
> + // Get the current prefix and the reader's prefix
> + String readerPrefix = reader.getPrefix();
> + readerPrefix = (readerPrefix == null) ? "" : readerPrefix;
> + String prefix = getNamespace().getPrefix();
> +
> // set the builder for this element
> isParserSet = true;
> super.setBuilder(new StAXOMBuilder(getOMFactory(), reader,
this));
> setComplete(false);
> +
> + // Update the prefix if necessary. This must be done after
> + // isParserSet to avoid a recursive call
> +
> + if (!readerPrefix.equals(prefix) ||
> + getNamespace() == null) {
> + if (log.isDebugEnabled()) {
> + log.debug("forceExpand: changing prefix from " + prefix + "
to " + readerPrefix);
> + }
> + setNamespace(new OMNamespaceImpl(readerURI, readerPrefix));
> + }
> +
> }
> }
>
> @@ -420,8 +434,8 @@
> * @see org.apache.axiom.om.OMElement#getNamespace()
> */
> public OMNamespace getNamespace() throws OMException {
> - if(definedNamespace == null && definedQName != null) {
> - definedNamespace =
factory.createOMNamespace(definedQName.getNamespaceURI(),
definedQName.getPrefix());
> + if (isExpanded()) {
> + return super.getNamespace();
> }
> return definedNamespace;
> }
> @@ -450,7 +464,7 @@
> return super.getQName();
> } else if (getNamespace() != null) {
> // always ignore prefix on name from sourced element
> - return new QName(definedNamespace.getNamespaceURI(),
getLocalName());
> + return new QName(getNamespace().getNamespaceURI(),
getLocalName());
> } else {
> return new QName(getLocalName());
> }
>
> Modified:
webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/impl/llom/OMSourcedElementTest.java
> URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/impl/llom/OMSourcedElementTest.java?view=diff&rev=503313&r1=503312&r2=503313
> ==============================================================================
> ---
webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/impl/llom/OMSourcedElementTest.java
(original)
> +++
webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/impl/llom/OMSourcedElementTest.java
Sat Feb 3 13:11:39 2007
> @@ -61,6 +61,26 @@
> "<author>DuCharme, Bob</author><publisher>Manning</publisher>" +
> "<price>29.95</price></book></library>";
>
> + // Same as testDocument except that an non-default prefix is used
> + private static String testDocument2 =
> + "<pre:library xmlns:pre=\"http://www.sosnoski.com/uwjws/library\"
books=\"1\">" +
> + "<pre:type id=\"java\" category=\"professional\"
deductable=\"true\">"+
> + "<pre:name>Java Reference</pre:name></pre:type><pre:type id=\"xml\"
"+
> + "category=\"professional\" deductable=\"true\"><pre:name>XML
Reference</pre:name>" +
> + "</pre:type><pre:book isbn=\"1930110111\" type=\"xml\"><pre:title>XSLT
Quickly</pre:title>" +
> + "<pre:author>DuCharme,
Bob</pre:author><pre:publisher>Manning</pre:publisher>" +
> + "<pre:price>29.95</pre:price></pre:book></pre:library>";
> +
> + // Same as testDocument exception that the elements are unqualified
> + private static String testDocument3 =
> + "<library books=\"1\">" +
> + "<type id=\"java\" category=\"professional\" deductable=\"true\">"+
> + "<name>Java Reference</name></type><type id=\"xml\" "+
> + "category=\"professional\" deductable=\"true\"><name>XML
Reference</name>" +
> + "</type><book isbn=\"1930110111\" type=\"xml\"><title>XSLT
Quickly</title>" +
> + "<author>DuCharme, Bob</author><publisher>Manning</publisher>" +
> + "<price>29.95</price></book></library>";
> +
> private OMSourcedElementImpl element;
> private OMElement root;
>
> @@ -121,8 +141,6 @@
> ByteArrayOutputStream bos = new ByteArrayOutputStream();
> element.serialize(bos);
> String newText = new String(bos.toByteArray());
> - System.out.println(testDocument);
> - System.out.println(newText);
> assertEquals("Serialized text error", testDocument, newText);
> assertTrue("Element not expanded when serializing",
element.isExpanded());
>
> @@ -235,6 +253,609 @@
> }
>
> /**
> + * Tests the OMSourcedElement localName, namespace and prefix settings
> + * before and after serialization
> + * Document: testDocument (which uses the default namespace)
> + * Type of Serialization: Serialize and cache
> + * Prefix test
> + * @throws Exception
> + */
> + public void testName1DefaultPrefix() throws Exception {
> +
> + OMFactory f = new OMLinkedListImplFactory();
> +
> + // Create OMSE with a DUMMYPREFIX prefix even though the underlying
element uses the default prefix
> + OMNamespace rootNS = new OMNamespaceImpl("http://sampleroot",
"rootPrefix");
> + OMNamespace ns = new OMNamespaceImpl("http://www.sosnoski.com/uwjws/library",
"DUMMYPREFIX");
> + OMElement element = new OMSourcedElementImpl("library", ns, f, new
TestDataSource(testDocument));
> + OMElement root = f.createOMElement("root", rootNS);
> + root.addChild(element);
> +
> + // Test getting the namespace, localpart and prefix. This should
used not result in expansion
> + assertTrue(element.getLocalName().equals("library"));
> +
assertTrue(element.getNamespace().getNamespaceURI().equals("http://www.sosnoski.com/uwjws/library"));
> + assertTrue(element.getNamespace().getPrefix().equals("DUMMYPREFIX"));
> +
> + // Serialize and cache. This should cause expansion. The prefix
should be updated to match the testDocument string
> + StringWriter writer = new StringWriter();
> + XMLStreamWriter xmlwriter =
XMLOutputFactory.newInstance().createXMLStreamWriter(writer);
> + root.serialize(writer);
> + xmlwriter.flush();
> + String result = writer.toString();
> +
> + assertTrue(element.getLocalName().equals("library"));
> +
assertTrue(element.getNamespace().getNamespaceURI().equals("http://www.sosnoski.com/uwjws/library"));
> + assertTrue(element.getNamespace().getPrefix().equals(""));
> + assertTrue(element.getDefaultNamespace() != null);
> + assertTrue(!result.contains("DUMMYPREFIX")); // Make sure that the
serialized string does not contain DUMMYPREFIX
> + assertTrue("Serialized text error" + result,
result.indexOf("1930110111") > 0);
> +
> + // Serialize again
> + writer = new StringWriter();
> + xmlwriter =
XMLOutputFactory.newInstance().createXMLStreamWriter(writer);
> + root.serialize(writer);
> + xmlwriter.flush();
> + result = writer.toString();
> +
> + assertTrue(element.getLocalName().equals("library"));
> +
assertTrue(element.getNamespace().getNamespaceURI().equals("http://www.sosnoski.com/uwjws/library"));
> + assertTrue(element.getNamespace().getPrefix().equals(""));
> + assertTrue(element.getDefaultNamespace() != null);
> + assertTrue(!result.contains("DUMMYPREFIX")); // Make sure that the
serialized string does not contain DUMMYPREFIX
> + assertTrue("Serialized text error" + result,
result.indexOf("1930110111") > 0);
> +
> + }
> +
> + /**
> + * Tests the OMSourcedElement localName, namespace and prefix settings
> + * before and after serialization
> + * Document: testDocument (which uses the default namespace)
> + * Type of Serialization: Serialize and consume
> + * Tests update of prefix
> + * @throws Exception
> + */
> + public void testName2DefaultPrefix() throws Exception {
> +
> + OMFactory f = new OMLinkedListImplFactory();
> +
> + // Create OMSE with a DUMMYPREFIX prefix even though the underlying
element uses the default prefix
> + OMNamespace rootNS = new OMNamespaceImpl("http://sampleroot",
"rootPrefix");
> + OMNamespace ns = new OMNamespaceImpl("http://www.sosnoski.com/uwjws/library",
"DUMMYPREFIX");
> + OMElement element = new OMSourcedElementImpl("library", ns, f, new
TestDataSource(testDocument));
> + OMElement root = f.createOMElement("root", rootNS);
> + root.addChild(element);
> +
> + // Test getting the namespace, localpart and prefix. This should
used not result in expansion
> + assertTrue(element.getLocalName().equals("library"));
> +
assertTrue(element.getNamespace().getNamespaceURI().equals("http://www.sosnoski.com/uwjws/library"));
> + assertTrue(element.getNamespace().getPrefix().equals("DUMMYPREFIX"));
> +
> + // Serialize and consume. This should not cause expansion and
currently won't update
> + // the name of the element.
> + StringWriter writer = new StringWriter();
> + XMLStreamWriter xmlwriter =
XMLOutputFactory.newInstance().createXMLStreamWriter(writer);
> + root.serializeAndConsume(writer);
> + xmlwriter.flush();
> + String result = writer.toString();
> +
> + assertTrue(element.getLocalName().equals("library"));
> +
assertTrue(element.getNamespace().getNamespaceURI().equals("http://www.sosnoski.com/uwjws/library"));
> + assertTrue(element.getNamespace().getPrefix().equals("DUMMYPREFIX"));
> + assertTrue(!result.contains("DUMMYPREFIX")); // Make sure that the
serialized string does not contain DUMMYPREFIX
> +
> + assertTrue("Serialized text error" + result,
result.indexOf("1930110111") > 0);
> + }
> +
> + /**
> + * Tests the OMSourcedElement localName, namespace and prefix settings
> + * before and after serialization
> + * Document: testDocument (which uses the default namespace)
> + * Type of Serialization: Serialize and cache
> + * Tests attempt to rename namespace and localpart, which is not
allowed
> + * @throws Exception
> + */
> + public void testName3DefaultPrefix() throws Exception {
> +
> + OMFactory f = new OMLinkedListImplFactory();
> +
> + // Create OMSE with a DUMMYPREFIX prefix even though the underlying
element uses the default prefix
> + OMNamespace rootNS = new OMNamespaceImpl("http://sampleroot",
"rootPrefix");
> + OMNamespace ns = new OMNamespaceImpl("http://DUMMYNS",
"DUMMYPREFIX");
> + OMElement element = new OMSourcedElementImpl("DUMMYNAME", ns, f, new
TestDataSource(testDocument));
> + OMElement root = f.createOMElement("root", rootNS);
> + root.addChild(element);
> +
> + // Test getting the namespace, localpart and prefix. This should
used not result in expansion
> + assertTrue(element.getLocalName().equals("DUMMYNAME"));
> +
assertTrue(element.getNamespace().getNamespaceURI().equals("http://DUMMYNS"));
> + assertTrue(element.getNamespace().getPrefix().equals("DUMMYPREFIX"));
> +
> + // Serialize and cache. This should cause expansion and update the
name to match the testDocument string
> + StringWriter writer = new StringWriter();
> + XMLStreamWriter xmlwriter =
XMLOutputFactory.newInstance().createXMLStreamWriter(writer);
> +
> + try {
> + root.serialize(writer);
> + } catch (Exception e) {
> + // Current Behavior
> + // The current OMSourceElementImpl ensures that the namespace
and localName
> + // are consistent with the original setting.
> + return;
> + }
> +
> + xmlwriter.flush();
> + String result = writer.toString();
> +
> + assertTrue(element.getLocalName().equals("library"));
> +
assertTrue(element.getNamespace().getNamespaceURI().equals("http://www.sosnoski.com/uwjws/library"));
> + assertTrue(element.getNamespace().getPrefix().equals(""));
> + assertTrue(!result.contains("DUMMY")); // Make sure that the
serialized string does not contain the DUMMY values
> +
> + assertTrue("Serialized text error" + result,
result.indexOf("1930110111") > 0);
> +
> + // Serialize again
> + writer = new StringWriter();
> + xmlwriter =
XMLOutputFactory.newInstance().createXMLStreamWriter(writer);
> + root.serialize(writer);
> + xmlwriter.flush();
> + result = writer.toString();
> +
> + assertTrue(element.getLocalName().equals("library"));
> +
assertTrue(element.getNamespace().getNamespaceURI().equals("http://www.sosnoski.com/uwjws/library"));
> + assertTrue(element.getNamespace().getPrefix().equals(""));
> + assertTrue(!result.contains("DUMMY")); // Make sure that the
serialized string does not contain the DUMMY values
> +
> + assertTrue("Serialized text error" + result,
result.indexOf("1930110111") > 0);
> +
> +
> +
> + }
> +
> + /**
> + * Tests the OMSourcedElement localName, namespace and prefix settings
> + * before and after serialization
> + * Document: testDocument (which uses the default namespace)
> + * Type of Serialization: Serialize and consume
> + * Tests that the namespace and localName are not affected by the
serializeAndConsume
> + * @throws Exception
> + */
> + public void testName4DefaultPrefix() throws Exception {
> +
> + OMFactory f = new OMLinkedListImplFactory();
> +
> + // Create OMSE with a DUMMYPREFIX prefix even though the underlying
element uses the default prefix
> + OMNamespace rootNS = new OMNamespaceImpl("http://sampleroot",
"rootPrefix");
> + OMNamespace ns = new OMNamespaceImpl("http://DUMMYNS",
"DUMMYPREFIX");
> + OMElement element = new OMSourcedElementImpl("DUMMYNAME", ns, f, new
TestDataSource(testDocument));
> + OMElement root = f.createOMElement("root", rootNS);
> + root.addChild(element);
> +
> + // Test getting the namespace, localpart and prefix. This should
used not result in expansion
> + assertTrue(element.getLocalName().equals("DUMMYNAME"));
> +
assertTrue(element.getNamespace().getNamespaceURI().equals("http://DUMMYNS"));
> + assertTrue(element.getNamespace().getPrefix().equals("DUMMYPREFIX"));
> +
> + // Serialize and consume. This should not cause expansion and
currently won't update
> + // the name of the element.
> + StringWriter writer = new StringWriter();
> + XMLStreamWriter xmlwriter =
XMLOutputFactory.newInstance().createXMLStreamWriter(writer);
> + root.serializeAndConsume(writer);
> + xmlwriter.flush();
> + String result = writer.toString();
> +
> + assertTrue(element.getLocalName().equals("DUMMYNAME"));
> +
assertTrue(element.getNamespace().getNamespaceURI().equals("http://DUMMYNS"));
> + assertTrue(element.getNamespace().getPrefix().equals("DUMMYPREFIX"));
> + assertTrue(!result.contains("DUMMY")); // Make sure that the
serialized string does not contain the DUMMY values
> +
> + assertTrue("Serialized text error" + result,
result.indexOf("1930110111") > 0);
> + }
> +
> + /**
> + * Tests the OMSourcedElement localName, namespace and prefix settings
> + * before and after serialization
> + * Document: testDocument2 (which uses a qualified prefix)
> + * Type of Serialization: Serialize and cache
> + * Prefix test
> + * @throws Exception
> + */
> + public void testName1QualifiedPrefix() throws Exception {
> +
> + OMFactory f = new OMLinkedListImplFactory();
> +
> + // Create OMSE with a DUMMYPREFIX prefix even though the underlying
element uses the default prefix
> + OMNamespace rootNS = new OMNamespaceImpl("http://sampleroot",
"rootPrefix");
> + OMNamespace ns = new OMNamespaceImpl("http://www.sosnoski.com/uwjws/library",
"");
> + OMElement element = new OMSourcedElementImpl("library", ns, f, new
TestDataSource(testDocument2));
> + OMElement root = f.createOMElement("root", rootNS);
> + root.addChild(element);
> +
> + // Test getting the namespace, localpart and prefix. This should
used not result in expansion
> + assertTrue(element.getLocalName().equals("library"));
> +
assertTrue(element.getNamespace().getNamespaceURI().equals("http://www.sosnoski.com/uwjws/library"));
> + assertTrue(element.getNamespace().getPrefix().equals(""));
> +
> + // Serialize and cache. This should cause expansion and update the
name to match the testDocument string
> + StringWriter writer = new StringWriter();
> + XMLStreamWriter xmlwriter =
XMLOutputFactory.newInstance().createXMLStreamWriter(writer);
> + root.serialize(writer);
> + xmlwriter.flush();
> + String result = writer.toString();
> +
> + assertTrue(element.getLocalName().equals("library"));
> +
assertTrue(element.getNamespace().getNamespaceURI().equals("http://www.sosnoski.com/uwjws/library"));
> + assertTrue(element.getNamespace().getPrefix().equals("pre"));
> + assertTrue(element.getDefaultNamespace() == null);
> + assertTrue(!result.contains("xmlns=")); // Make sure that the
serialized string does not contain default prefix declaration
> + assertTrue("Serialized text error" + result,
result.indexOf("1930110111") > 0);
> +
> + // Serialize again
> + writer = new StringWriter();
> + xmlwriter =
XMLOutputFactory.newInstance().createXMLStreamWriter(writer);
> + root.serialize(writer);
> + xmlwriter.flush();
> + result = writer.toString();
> +
> + assertTrue(element.getLocalName().equals("library"));
> +
assertTrue(element.getNamespace().getNamespaceURI().equals("http://www.sosnoski.com/uwjws/library"));
> + assertTrue(element.getNamespace().getPrefix().equals("pre"));
> + assertTrue(!result.contains("xmlns=")); // Make sure that the
serialized string does not contain default prefix declaration
> + assertTrue(element.getDefaultNamespace() == null);
> + assertTrue("Serialized text error" + result,
result.indexOf("1930110111") > 0);
> +
> + }
> +
> + /**
> + * Tests the OMSourcedElement localName, namespace and prefix settings
> + * before and after serialization
> + * Document: testDocument2 (which uses a qualified prefix)
> + * Type of Serialization: Serialize and consume
> + * Tests update of prefix
> + * @throws Exception
> + */
> + public void testName2QualifiedPrefix() throws Exception {
> +
> + OMFactory f = new OMLinkedListImplFactory();
> +
> + // Create OMSE with a DUMMYPREFIX prefix even though the underlying
element uses the default prefix
> + OMNamespace rootNS = new OMNamespaceImpl("http://sampleroot",
"rootPrefix");
> + OMNamespace ns = new OMNamespaceImpl("http://www.sosnoski.com/uwjws/library",
"");
> + OMElement element = new OMSourcedElementImpl("library", ns, f, new
TestDataSource(testDocument2));
> + OMElement root = f.createOMElement("root", rootNS);
> + root.addChild(element);
> +
> + // Test getting the namespace, localpart and prefix. This should
used not result in expansion
> + assertTrue(element.getLocalName().equals("library"));
> +
assertTrue(element.getNamespace().getNamespaceURI().equals("http://www.sosnoski.com/uwjws/library"));
> + assertTrue(element.getNamespace().getPrefix().equals(""));
> +
> + // Serialize and consume. This should not cause expansion and
currently won't update
> + // the name of the element.
> + StringWriter writer = new StringWriter();
> + XMLStreamWriter xmlwriter =
XMLOutputFactory.newInstance().createXMLStreamWriter(writer);
> + root.serializeAndConsume(writer);
> + xmlwriter.flush();
> + String result = writer.toString();
> +
> + assertTrue(element.getLocalName().equals("library"));
> +
assertTrue(element.getNamespace().getNamespaceURI().equals("http://www.sosnoski.com/uwjws/library"));
> + assertTrue(element.getNamespace().getPrefix().equals(""));
> + assertTrue(!result.contains("xmlns=")); // Make sure that the
serialized string does not contain default prefix declaration
> +
> + assertTrue("Serialized text error" + result,
result.indexOf("1930110111") > 0);
> + }
> +
> + /**
> + * Tests the OMSourcedElement localName, namespace and prefix settings
> + * before and after serialization
> + * Document: testDocument2 (which uses a qualified prefix)
> + * Type of Serialization: Serialize and cache
> + * Tests attempt to rename namespace and localpart, which is not
allowed
> + * @throws Exception
> + */
> + public void testName3QualifiedPrefix() throws Exception {
> +
> + OMFactory f = new OMLinkedListImplFactory();
> +
> + // Create OMSE with a DUMMYPREFIX prefix even though the underlying
element uses the default prefix
> + OMNamespace rootNS = new OMNamespaceImpl("http://sampleroot",
"rootPrefix");
> + OMNamespace ns = new OMNamespaceImpl("http://DUMMYNS",
"DUMMYPREFIX");
> + OMElement element = new OMSourcedElementImpl("DUMMYNAME", ns, f, new
TestDataSource(testDocument2));
> + OMElement root = f.createOMElement("root", rootNS);
> + root.addChild(element);
> +
> + // Test getting the namespace, localpart and prefix. This should
used not result in expansion
> + assertTrue(element.getLocalName().equals("DUMMYNAME"));
> +
assertTrue(element.getNamespace().getNamespaceURI().equals("http://DUMMYNS"));
> + assertTrue(element.getNamespace().getPrefix().equals("DUMMYPREFIX"));
> +
> + // Serialize and cache. This should cause expansion and update the
name to match the testDocument string
> + StringWriter writer = new StringWriter();
> + XMLStreamWriter xmlwriter =
XMLOutputFactory.newInstance().createXMLStreamWriter(writer);
> +
> + try {
> + root.serialize(writer);
> + } catch (Exception e) {
> + // Current Behavior
> + // The current OMSourceElementImpl ensures that the namespace
and localName
> + // are consistent with the original setting.
> + return;
> + }
> +
> +
> + xmlwriter.flush();
> + String result = writer.toString();
> +
> + assertTrue(element.getLocalName().equals("library"));
> +
assertTrue(element.getNamespace().getNamespaceURI().equals("http://www.sosnoski.com/uwjws/library"));
> + assertTrue(element.getNamespace().getPrefix().equals(""));
> + assertTrue(!result.contains("DUMMY")); // Make sure that the
serialized string does not contain the DUMMY values
> +
> + assertTrue("Serialized text error" + result,
result.indexOf("1930110111") > 0);
> +
> + // Serialize again
> + writer = new StringWriter();
> + xmlwriter =
XMLOutputFactory.newInstance().createXMLStreamWriter(writer);
> + root.serialize(writer);
> + xmlwriter.flush();
> + result = writer.toString();
> +
> + assertTrue(element.getLocalName().equals("library"));
> +
assertTrue(element.getNamespace().getNamespaceURI().equals("http://www.sosnoski.com/uwjws/library"));
> + assertTrue(element.getNamespace().getPrefix().equals(""));
> + assertTrue(!result.contains("DUMMY")); // Make sure that the
serialized string does not contain the DUMMY values
> +
> + assertTrue("Serialized text error" + result,
result.indexOf("1930110111") > 0);
> +
> +
> +
> + }
> +
> + /**
> + * Tests the OMSourcedElement localName, namespace and prefix settings
> + * before and after serialization
> + * Document: testDocument2 (which uses a qualified prefix)
> + * Type of Serialization: Serialize and cache
> + * Tests attempt to rename namespace and localpart, which is not
allowed
> + * @throws Exception
> + */
> + public void testName4QualifiedPrefix() throws Exception {
> +
> + OMFactory f = new OMLinkedListImplFactory();
> +
> + // Create OMSE with a DUMMYPREFIX prefix even though the underlying
element uses the default prefix
> + OMNamespace rootNS = new OMNamespaceImpl("http://sampleroot",
"rootPrefix");
> + OMNamespace ns = new OMNamespaceImpl("http://DUMMYNS", "");
> + OMElement element = new OMSourcedElementImpl("DUMMYNAME", ns, f, new
TestDataSource(testDocument2));
> + OMElement root = f.createOMElement("root", rootNS);
> + root.addChild(element);
> +
> + // Test getting the namespace, localpart and prefix. This should
used not result in expansion
> + assertTrue(element.getLocalName().equals("DUMMYNAME"));
> +
assertTrue(element.getNamespace().getNamespaceURI().equals("http://DUMMYNS"));
> + assertTrue(element.getNamespace().getPrefix().equals(""));
> +
> + // Serialize and consume. This should not cause expansion and
currently won't update
> + // the name of the element.
> + StringWriter writer = new StringWriter();
> + XMLStreamWriter xmlwriter =
XMLOutputFactory.newInstance().createXMLStreamWriter(writer);
> + root.serializeAndConsume(writer);
> + xmlwriter.flush();
> + String result = writer.toString();
> +
> + assertTrue(element.getLocalName().equals("DUMMYNAME"));
> +
assertTrue(element.getNamespace().getNamespaceURI().equals("http://DUMMYNS"));
> + assertTrue(element.getNamespace().getPrefix().equals(""));
> + assertTrue(!result.contains("DUMMY")); // Make sure that the
serialized string does not contain the DUMMY values
> + assertTrue(!result.contains("xmlns=")); // Make sure that the
serialized string does not contain the default prefix declaration
> +
> + assertTrue("Serialized text error" + result,
result.indexOf("1930110111") > 0);
> + }
> +
> + /**
> + * Tests the OMSourcedElement localName, namespace and prefix settings
> + * before and after serialization
> + * Document: testDocument3 (which uses unqualified names)
> + * Type of Serialization: Serialize and cache
> + * Prefix test
> + * @throws Exception
> + */
> + public void testName1Unqualified() throws Exception {
> +
> + OMFactory f = new OMLinkedListImplFactory();
> +
> + // Create OMSE with a DUMMYPREFIX prefix even though the underlying
element uses the default prefix
> + OMNamespace rootNS = new OMNamespaceImpl("http://sampleroot",
"rootPrefix");
> + OMNamespace ns = new OMNamespaceImpl("", "");
> + OMElement element = new OMSourcedElementImpl("library", ns, f, new
TestDataSource(testDocument3));
> + OMElement root = f.createOMElement("root", rootNS);
> + root.addChild(element);
> +
> + // Test getting the namespace, localpart and prefix. This should
used not result in expansion
> + assertTrue(element.getLocalName().equals("library"));
> + assertTrue(element.getNamespace().getNamespaceURI().equals(""));
> + assertTrue(element.getNamespace().getPrefix().equals(""));
> +
> + // Serialize and cache. This should cause expansion and update the
name to match the testDocument string
> + StringWriter writer = new StringWriter();
> + XMLStreamWriter xmlwriter =
XMLOutputFactory.newInstance().createXMLStreamWriter(writer);
> + root.serialize(writer);
> + xmlwriter.flush();
> + String result = writer.toString();
> +
> + assertTrue(element.getLocalName().equals("library"));
> + assertTrue(element.getNamespace().getNamespaceURI().equals(""));
> + assertTrue(element.getNamespace().getPrefix().equals(""));
> + assertTrue(element.getDefaultNamespace() == null ||
element.getDefaultNamespace().getNamespaceURI().length() == 0);
> + assertTrue(!result.contains("xmlns=")); // Make sure that the
serialized string does not contain default prefix declaration
> + assertTrue("Serialized text error" + result,
result.indexOf("1930110111") > 0);
> +
> + // Serialize again
> + writer = new StringWriter();
> + xmlwriter =
XMLOutputFactory.newInstance().createXMLStreamWriter(writer);
> + root.serialize(writer);
> + xmlwriter.flush();
> + result = writer.toString();
> +
> + assertTrue(element.getLocalName().equals("library"));
> + assertTrue(element.getNamespace().getNamespaceURI().equals(""));
> + assertTrue(element.getNamespace().getPrefix().equals(""));
> + assertTrue(!result.contains("xmlns=")); // Make sure that the
serialized string does not contain default prefix declaration
> + assertTrue(element.getDefaultNamespace() == null ||
element.getDefaultNamespace().getNamespaceURI().length() == 0);
> + assertTrue("Serialized text error" + result,
result.indexOf("1930110111") > 0);
> +
> + }
> +
> + /**
> + * Tests the OMSourcedElement localName, namespace and prefix settings
> + * before and after serialization
> + * Document: testDocument3 (which uses unqualified names)
> + * Type of Serialization: Serialize and consume
> + * Tests update of prefix
> + * @throws Exception
> + */
> + public void testName2Unqualified() throws Exception {
> +
> + OMFactory f = new OMLinkedListImplFactory();
> +
> + // Create OMSE with a DUMMYPREFIX prefix even though the underlying
element uses the default prefix
> + OMNamespace rootNS = new OMNamespaceImpl("http://sampleroot",
"rootPrefix");
> + OMNamespace ns = new OMNamespaceImpl("", "");
> + OMElement element = new OMSourcedElementImpl("library", ns, f, new
TestDataSource(testDocument3));
> + OMElement root = f.createOMElement("root", rootNS);
> + root.addChild(element);
> +
> + // Test getting the namespace, localpart and prefix. This should
used not result in expansion
> + assertTrue(element.getLocalName().equals("library"));
> + assertTrue(element.getNamespace().getNamespaceURI().equals(""));
> + assertTrue(element.getNamespace().getPrefix().equals(""));
> +
> + // Serialize and consume. This should not cause expansion and
currently won't update
> + // the name of the element.
> + StringWriter writer = new StringWriter();
> + XMLStreamWriter xmlwriter =
XMLOutputFactory.newInstance().createXMLStreamWriter(writer);
> + root.serializeAndConsume(writer);
> + xmlwriter.flush();
> + String result = writer.toString();
> +
> + assertTrue(element.getLocalName().equals("library"));
> + assertTrue(element.getNamespace().getNamespaceURI().equals(""));
> + assertTrue(element.getNamespace().getPrefix().equals(""));
> + assertTrue(!result.contains("xmlns=")); // Make sure that the
serialized string does not contain default prefix declaration
> +
> + assertTrue("Serialized text error" + result,
result.indexOf("1930110111") > 0);
> + }
> +
> + /**
> + * Tests the OMSourcedElement localName, namespace and prefix settings
> + * before and after serialization
> + * Document: testDocument3 (which uses unqualified names)
> + * Type of Serialization: Serialize and cache
> + * Tests attempt to rename namespace and localpart, which is not
allowed
> + * @throws Exception
> + */
> + public void testName3Unqualified() throws Exception {
> +
> + OMFactory f = new OMLinkedListImplFactory();
> +
> + // Create OMSE with a DUMMYPREFIX prefix even though the underlying
element uses the default prefix
> + OMNamespace rootNS = new OMNamespaceImpl("http://sampleroot",
"rootPrefix");
> + OMNamespace ns = new OMNamespaceImpl("http://DUMMYNS",
"DUMMYPREFIX");
> + OMElement element = new OMSourcedElementImpl("DUMMYNAME", ns, f, new
TestDataSource(testDocument3));
> + OMElement root = f.createOMElement("root", rootNS);
> + root.addChild(element);
> +
> + // Test getting the namespace, localpart and prefix. This should
used not result in expansion
> + assertTrue(element.getLocalName().equals("DUMMYNAME"));
> +
assertTrue(element.getNamespace().getNamespaceURI().equals("http://DUMMYNS"));
> + assertTrue(element.getNamespace().getPrefix().equals("DUMMYPREFIX"));
> +
> + // Serialize and cache. This should cause expansion and update the
name to match the testDocument string
> + StringWriter writer = new StringWriter();
> + XMLStreamWriter xmlwriter =
XMLOutputFactory.newInstance().createXMLStreamWriter(writer);
> +
> + try {
> + root.serialize(writer);
> + } catch (Exception e) {
> + // Current Behavior
> + // The current OMSourceElementImpl ensures that the namespace
and localName
> + // are consistent with the original setting.
> + return;
> + }
> +
> +
> + xmlwriter.flush();
> + String result = writer.toString();
> +
> + assertTrue(element.getLocalName().equals("library"));
> + assertTrue(element.getNamespace().getNamespaceURI().equals(""));
> + assertTrue(element.getNamespace().getPrefix().equals(""));
> + assertTrue(!result.contains("DUMMY")); // Make sure that the
serialized string does not contain the DUMMY values
> +
> + assertTrue("Serialized text error" + result,
result.indexOf("1930110111") > 0);
> +
> + // Serialize again
> + writer = new StringWriter();
> + xmlwriter =
XMLOutputFactory.newInstance().createXMLStreamWriter(writer);
> + root.serialize(writer);
> + xmlwriter.flush();
> + result = writer.toString();
> +
> + assertTrue(element.getLocalName().equals("library"));
> +
assertTrue(element.getNamespace().getNamespaceURI().equals("http://www.sosnoski.com/uwjws/library"));
> + assertTrue(element.getNamespace().getPrefix().equals(""));
> + assertTrue(!result.contains("DUMMY")); // Make sure that the
serialized string does not contain the DUMMY values
> +
> + assertTrue("Serialized text error" + result,
result.indexOf("1930110111") > 0);
> +
> +
> +
> + }
> +
> + /**
> + * Tests the OMSourcedElement localName, namespace and prefix settings
> + * before and after serialization
> + * Document: testDocument3 (which uses unqualified names)
> + * Type of Serialization: Serialize and cache
> + * Tests attempt to rename namespace and localpart, which is not
allowed
> + * @throws Exception
> + */
> + public void testName4Unqualified() throws Exception {
> +
> + OMFactory f = new OMLinkedListImplFactory();
> +
> + // Create OMSE with a DUMMYPREFIX prefix even though the underlying
element uses the default prefix
> + OMNamespace rootNS = new OMNamespaceImpl("http://sampleroot",
"rootPrefix");
> + OMNamespace ns = new OMNamespaceImpl("http://DUMMYNS", "");
> + OMElement element = new OMSourcedElementImpl("DUMMYNAME", ns, f, new
TestDataSource(testDocument3));
> + OMElement root = f.createOMElement("root", rootNS);
> + root.addChild(element);
> +
> + // Test getting the namespace, localpart and prefix. This should
used not result in expansion
> + assertTrue(element.getLocalName().equals("DUMMYNAME"));
> +
assertTrue(element.getNamespace().getNamespaceURI().equals("http://DUMMYNS"));
> + assertTrue(element.getNamespace().getPrefix().equals(""));
> +
> + // Serialize and consume. This should not cause expansion and
currently won't update
> + // the name of the element.
> + StringWriter writer = new StringWriter();
> + XMLStreamWriter xmlwriter =
XMLOutputFactory.newInstance().createXMLStreamWriter(writer);
> + root.serializeAndConsume(writer);
> + xmlwriter.flush();
> + String result = writer.toString();
> +
> + assertTrue(element.getLocalName().equals("DUMMYNAME"));
> +
assertTrue(element.getNamespace().getNamespaceURI().equals("http://DUMMYNS"));
> + assertTrue(element.getNamespace().getPrefix().equals(""));
> + assertTrue(!result.contains("DUMMY")); // Make sure that the
serialized string does not contain the DUMMY values
> + assertTrue(!result.contains("xmlns=")); // Make sure that the
serialized string does not contain the default prefix declaration
> +
> + assertTrue("Serialized text error" + result,
result.indexOf("1930110111") > 0);
> + }
> +
> +
> +
> + /**
> * Tests OMSourcedElement serialization when the root (parent) is
serialized.
> * @throws Exception
> */
> @@ -244,6 +865,7 @@
> root.serializeAndConsume(writer);
> xmlwriter.flush();
> String result = writer.toString();
> +
> // We can't test for equivalence because the underlying
OMSourceElement is
> // streamed as it is serialized. So I am testing for an internal
value.
> assertTrue("Serialized text error" + result,
result.indexOf("1930110111") > 0);
> @@ -268,6 +890,7 @@
>
> xmlwriter.flush();
> String result = writer.toString();
> +
> // We can't test for equivalence because the underlying
OMSourceElement is
> // changed as it is serialized. So I am testing for an internal
value.
> assertTrue("Serialized text error" + result,
result.indexOf("1930110111") > 0);
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
--
Thilina Gunarathne
WSO2, Inc.; http://www.wso2.com/
Home page: http://webservices.apache.org/~thilina/
Blog: http://thilinag.blogspot.com/