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/

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to