Author: veithen
Date: Sun Dec 12 21:18:55 2010
New Revision: 1044929

URL: http://svn.apache.org/viewvc?rev=1044929&view=rev
Log:
Clarified the specification of the OMElement#setText(QName) method and 
refactored the corresponding test case. Note that DOOM doesn't support this 
method.

Added:
    
webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/element/TestSetTextQName.java
   (with props)
Modified:
    
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/OMElement.java
    
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/test/java/org/apache/axiom/om/impl/dom/ImplementationTest.java
    
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/test/java/org/apache/axiom/om/impl/llom/ImplementationTest.java
    
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/test/java/org/apache/axiom/om/impl/llom/OMElementTest.java
    
webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/AxiomTestSuiteBuilder.java

Modified: 
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/OMElement.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/OMElement.java?rev=1044929&r1=1044928&r2=1044929&view=diff
==============================================================================
--- 
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/OMElement.java
 (original)
+++ 
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/OMElement.java
 Sun Dec 12 21:18:55 2010
@@ -411,7 +411,14 @@ public interface OMElement extends OMNod
     /** @param text  */
     void setText(String text);
 
-    void setText(QName text);
+    /**
+     * Set the content of this element to the given QName. If no matching 
namespace declaration for
+     * the QName is in scope, then this method will add one.
+     * 
+     * @param qname
+     *            the QName value
+     */
+    void setText(QName qname);
 
     /**
      * Returns the non-empty text children as a string.

Modified: 
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/test/java/org/apache/axiom/om/impl/dom/ImplementationTest.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/test/java/org/apache/axiom/om/impl/dom/ImplementationTest.java?rev=1044929&r1=1044928&r2=1044929&view=diff
==============================================================================
--- 
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/test/java/org/apache/axiom/om/impl/dom/ImplementationTest.java
 (original)
+++ 
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/test/java/org/apache/axiom/om/impl/dom/ImplementationTest.java
 Sun Dec 12 21:18:55 2010
@@ -23,9 +23,13 @@ import junit.framework.TestSuite;
 
 import org.apache.axiom.om.impl.dom.factory.OMDOMMetaFactory;
 import org.apache.axiom.ts.AxiomTestSuiteBuilder;
+import org.apache.axiom.ts.om.element.TestSetTextQName;
 
 public class ImplementationTest extends TestCase {
     public static TestSuite suite() {
-        return AxiomTestSuiteBuilder.suite(new OMDOMMetaFactory());
+        AxiomTestSuiteBuilder builder = new AxiomTestSuiteBuilder(new 
OMDOMMetaFactory());
+        // OMElement#setText(QName) is unsupported
+        builder.exclude(TestSetTextQName.class);
+        return builder.build();
     }
 }

Modified: 
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/test/java/org/apache/axiom/om/impl/llom/ImplementationTest.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/test/java/org/apache/axiom/om/impl/llom/ImplementationTest.java?rev=1044929&r1=1044928&r2=1044929&view=diff
==============================================================================
--- 
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/test/java/org/apache/axiom/om/impl/llom/ImplementationTest.java
 (original)
+++ 
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/test/java/org/apache/axiom/om/impl/llom/ImplementationTest.java
 Sun Dec 12 21:18:55 2010
@@ -26,6 +26,6 @@ import junit.framework.TestSuite;
 
 public class ImplementationTest extends TestCase {
     public static TestSuite suite() {
-        return AxiomTestSuiteBuilder.suite(new OMLinkedListMetaFactory());
+        return new AxiomTestSuiteBuilder(new 
OMLinkedListMetaFactory()).build();
     }
 }

Modified: 
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/test/java/org/apache/axiom/om/impl/llom/OMElementTest.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/test/java/org/apache/axiom/om/impl/llom/OMElementTest.java?rev=1044929&r1=1044928&r2=1044929&view=diff
==============================================================================
--- 
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/test/java/org/apache/axiom/om/impl/llom/OMElementTest.java
 (original)
+++ 
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/test/java/org/apache/axiom/om/impl/llom/OMElementTest.java
 Sun Dec 12 21:18:55 2010
@@ -19,49 +19,20 @@
 
 package org.apache.axiom.om.impl.llom;
 
-import java.util.Iterator;
-
 import javax.xml.namespace.QName;
 
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMElementTestBase;
 import org.apache.axiom.om.OMFactory;
-import org.apache.axiom.om.OMNamespace;
 import org.apache.axiom.om.impl.llom.factory.OMLinkedListMetaFactory;
 
 public class OMElementTest extends OMElementTestBase {
-    private static final String AXIS2_NS_URI = "http://ws.apache.org/axis2";;
-    private static final String AXIS2_NS_PREFIX = "axis2";
     private static final String SOME_TEXT = "Some Text";
     
     public OMElementTest() {
         super(new OMLinkedListMetaFactory());
     }
 
-    public void testTextQNames() {
-        OMFactory factory = omMetaFactory.getOMFactory();
-        OMElement omElement = factory.createOMElement("TestElement", null);
-        omElement.setText(new QName(AXIS2_NS_URI, SOME_TEXT, AXIS2_NS_PREFIX));
-
-        Iterator allDeclaredNamespaces = omElement.getAllDeclaredNamespaces();
-        boolean foundNamespace = false;
-        while (allDeclaredNamespaces.hasNext()) {
-            OMNamespace omNamespace = (OMNamespace) 
allDeclaredNamespaces.next();
-            if (AXIS2_NS_URI.equals(omNamespace.getNamespaceURI()) &&
-                    AXIS2_NS_PREFIX.equals(omNamespace.getPrefix())) {
-                foundNamespace = true;
-            }
-        }
-        assertTrue("Namespace of the text is not defined in the parent 
element", foundNamespace);
-
-        String elementString = omElement.toString();
-        assertTrue(elementString.indexOf(AXIS2_NS_PREFIX + ":" + SOME_TEXT) > 
-1);
-        assertTrue((AXIS2_NS_PREFIX + ":" + 
SOME_TEXT).equals(omElement.getText()));
-
-        QName textAsQName = omElement.getTextAsQName();
-        assertTrue(textAsQName.equals(new QName(AXIS2_NS_URI, SOME_TEXT, 
AXIS2_NS_PREFIX)));
-    }
-
     public void testTextQNamesWithoutQNames() {
         OMFactory factory = omMetaFactory.getOMFactory();
         OMElement omElement = factory.createOMElement("TestElement", null);

Modified: 
webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/AxiomTestSuiteBuilder.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/AxiomTestSuiteBuilder.java?rev=1044929&r1=1044928&r2=1044929&view=diff
==============================================================================
--- 
webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/AxiomTestSuiteBuilder.java
 (original)
+++ 
webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/AxiomTestSuiteBuilder.java
 Sun Dec 12 21:18:55 2010
@@ -18,17 +18,39 @@
  */
 package org.apache.axiom.ts;
 
+import java.util.HashSet;
+import java.util.Set;
+
 import org.apache.axiom.om.OMMetaFactory;
 
 import junit.framework.TestSuite;
 
 public class AxiomTestSuiteBuilder {
-    public static TestSuite suite(OMMetaFactory metaFactory) {
-        TestSuite suite = new TestSuite();
-        suite.addTest(new 
org.apache.axiom.ts.om.element.TestGetAttributeValueWithXmlPrefix1(metaFactory));
-        suite.addTest(new 
org.apache.axiom.ts.om.element.TestGetAttributeValueWithXmlPrefix2(metaFactory));
-        suite.addTest(new 
org.apache.axiom.ts.om.element.TestGetAttributeWithXmlPrefix1(metaFactory));
-        suite.addTest(new 
org.apache.axiom.ts.om.element.TestGetAttributeWithXmlPrefix2(metaFactory));
+    private final OMMetaFactory metaFactory;
+    private final Set/*<Class>*/ excludedTests = new HashSet();
+    private TestSuite suite;
+    
+    public AxiomTestSuiteBuilder(OMMetaFactory metaFactory) {
+        this.metaFactory = metaFactory;
+    }
+    
+    public void exclude(Class testClass) {
+        excludedTests.add(testClass);
+    }
+    
+    public TestSuite build() {
+        suite = new TestSuite();
+        addTest(new 
org.apache.axiom.ts.om.element.TestGetAttributeValueWithXmlPrefix1(metaFactory));
+        addTest(new 
org.apache.axiom.ts.om.element.TestGetAttributeValueWithXmlPrefix2(metaFactory));
+        addTest(new 
org.apache.axiom.ts.om.element.TestGetAttributeWithXmlPrefix1(metaFactory));
+        addTest(new 
org.apache.axiom.ts.om.element.TestGetAttributeWithXmlPrefix2(metaFactory));
+        addTest(new 
org.apache.axiom.ts.om.element.TestSetTextQName(metaFactory));
         return suite;
     }
+    
+    private void addTest(AxiomTestCase test) {
+        if (!excludedTests.contains(test.getClass())) {
+            suite.addTest(test);
+        }
+    }
 }

Added: 
webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/element/TestSetTextQName.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/element/TestSetTextQName.java?rev=1044929&view=auto
==============================================================================
--- 
webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/element/TestSetTextQName.java
 (added)
+++ 
webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/element/TestSetTextQName.java
 Sun Dec 12 21:18:55 2010
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.axiom.ts.om.element;
+
+import java.util.Iterator;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMMetaFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.ts.AxiomTestCase;
+
+/**
+ * Tests the behavior of {...@link OMElement#setText(QName)}, in particular 
that it adds a
+ * namespace declaration if necessary.
+ */
+public class TestSetTextQName extends AxiomTestCase {
+    public TestSetTextQName(OMMetaFactory metaFactory) {
+        super(metaFactory);
+    }
+
+    protected void runTest() throws Throwable {
+        OMFactory factory = metaFactory.getOMFactory();
+        OMElement element = factory.createOMElement("TestElement", null);
+        QName qname = new QName("urn:ns1", "test", "ns");
+        element.setText(qname);
+        boolean foundNamespace = false;
+        for (Iterator it = element.getAllDeclaredNamespaces(); it.hasNext(); ) 
{
+            OMNamespace ns = (OMNamespace)it.next();
+            if ("urn:ns1".equals(ns.getNamespaceURI()) && 
"ns".equals(ns.getPrefix())) {
+                foundNamespace = true;
+            }
+        }
+        assertTrue("Namespace of the text is not defined in the parent 
element", foundNamespace);
+
+        assertTrue(element.toString().contains("ns:test"));
+        assertEquals("ns:test", element.getText());
+        assertEquals(qname, element.getTextAsQName());
+    }
+}

Propchange: 
webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/element/TestSetTextQName.java
------------------------------------------------------------------------------
    svn:eol-style = native


Reply via email to