You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by aj...@apache.org on 2005/09/02 05:43:09 UTC

svn commit: r266249 - in /webservices/axis2/trunk/java/modules: core/src/org/apache/axis2/clientapi/ wsdl/src/org/apache/axis2/wsdl/template/java/ wsdl/test/org/apache/axis2/wsdl/codegen/ xml/src/org/apache/axis2/om/impl/llom/ xml/src/org/apache/axis2/...

Author: ajith
Date: Thu Sep  1 20:42:42 2005
New Revision: 266249

URL: http://svn.apache.org/viewcvs?rev=266249&view=rev
Log:
1. OMElementImpl.java had the wrong implementation. Fixed it by  adding a new iterator and updated the test case.
2. IteratorTester.java had the wrong name.(which made it not run from it's inception!!!). Renamed and modified some of the tests to test the functionality that was not tested previously
3. Modified the WSDl2java (mistakenly checked in a commented version!)
4. Modified the InOutMEPClient.java to handle the errors

Added:
    webservices/axis2/trunk/java/modules/xml/src/org/apache/axis2/om/impl/llom/traverse/OMchildElementIterator.java
    webservices/axis2/trunk/java/modules/xml/test/org/apache/axis2/om/IteratorTest.java
      - copied, changed from r265666, webservices/axis2/trunk/java/modules/xml/test/org/apache/axis2/om/IteratorTester.java
Removed:
    webservices/axis2/trunk/java/modules/xml/test/org/apache/axis2/om/IteratorTester.java
Modified:
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/clientapi/InOutMEPClient.java
    webservices/axis2/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl/template/java/SkeletonTemplate.xsl
    webservices/axis2/trunk/java/modules/wsdl/test/org/apache/axis2/wsdl/codegen/WSDL2JavaTest.java
    webservices/axis2/trunk/java/modules/xml/src/org/apache/axis2/om/impl/llom/OMElementImpl.java

Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/clientapi/InOutMEPClient.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/clientapi/InOutMEPClient.java?rev=266249&r1=266248&r2=266249&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/clientapi/InOutMEPClient.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/clientapi/InOutMEPClient.java Thu Sep  1 20:42:42 2005
@@ -184,12 +184,15 @@
                 if (isExceptionToBeThrownOnSOAPFault) {
                     //does the SOAPFault has a detail element for Excpetion
                     if (ex != null) {
-//                        AxisEngine engine  = new AxisEngine(sysContext);
-//                        engine.receiveFault(response);
                         throw new AxisFault(ex);
                     } else {
-                        //if detail element not present let us throw the exception with Reason
-                        throw new AxisFault(soapFault.getReason().getText());
+                        //if detail element not present create a new Exception from the detail
+                        String message = "";
+                        message = message + "Code =" + soapFault.getCode()==null?"":
+                                soapFault.getCode().getValue()==null?"":soapFault.getCode().getValue().getText();
+                        message = message + "Role = "+soapFault.getRole()==null?"":soapFault.getRole().getRoleValue();
+                        message = message + "Reason =" + soapFault.getReason();
+                        throw new AxisFault(message);
                     }
                 }
             }

Modified: webservices/axis2/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl/template/java/SkeletonTemplate.xsl
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl/template/java/SkeletonTemplate.xsl?rev=266249&r1=266248&r2=266249&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl/template/java/SkeletonTemplate.xsl (original)
+++ webservices/axis2/trunk/java/modules/wsdl/src/org/apache/axis2/wsdl/template/java/SkeletonTemplate.xsl Thu Sep  1 20:42:42 2005
@@ -17,10 +17,10 @@
             <xsl:if test="@type!=''">* @param <xsl:value-of select="@name"></xsl:value-of><xsl:text>
          </xsl:text></xsl:if></xsl:for-each>
          */
-        public  <xsl:if test="$outputtype=''">void</xsl:if><xsl:if test="$outputtype!=''"><xsl:value-of select="$outputtype"/></xsl:if><xsl:text> </xsl:text><xsl:value-of select="@name"/>(<xsl:for-each select="input/param">
-            <xsl:if test="@type!=''"><xsl:if test="position()>1">,</xsl:if><xsl:value-of select="@type"/><xsl:text> </xsl:text><xsl:value-of select="@name"/>
-          </xsl:if>
-         </xsl:for-each> ){
+        public  <xsl:if test="$outputtype=''">void</xsl:if><xsl:if test="$outputtype!=''"><xsl:value-of select="$outputtype"/></xsl:if><xsl:text> </xsl:text><xsl:value-of select="@name"/>
+                  (<xsl:for-each select="input/param[@location='body']">
+            <xsl:if test="@type!=''"><xsl:if test="position()>1">,</xsl:if><xsl:value-of select="@type"/><xsl:text> </xsl:text><xsl:value-of select="@name"/></xsl:if>
+                   </xsl:for-each> ){
                 //Todo fill this with the necessary business logic
                 <xsl:if test="$outputtype!=''">return null;</xsl:if>
         }

Modified: webservices/axis2/trunk/java/modules/wsdl/test/org/apache/axis2/wsdl/codegen/WSDL2JavaTest.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/wsdl/test/org/apache/axis2/wsdl/codegen/WSDL2JavaTest.java?rev=266249&r1=266248&r2=266249&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/wsdl/test/org/apache/axis2/wsdl/codegen/WSDL2JavaTest.java (original)
+++ webservices/axis2/trunk/java/modules/wsdl/test/org/apache/axis2/wsdl/codegen/WSDL2JavaTest.java Thu Sep  1 20:42:42 2005
@@ -47,12 +47,12 @@
      */
     protected void setUp() throws Exception {
         File outputFile = new File(OUTPUT_LOCATION_BASE);
-//        if (outputFile.exists() && outputFile.isDirectory()){
-//            deleteDir(outputFile);
-//            outputFile.mkdir();
-//        }else{
-//            outputFile.mkdir();
-//        }
+        if (outputFile.exists() && outputFile.isDirectory()){
+            deleteDir(outputFile);
+            outputFile.mkdir();
+        }else{
+            outputFile.mkdir();
+        }
     }
 
     /**
@@ -60,10 +60,10 @@
      * @throws Exception
      */
     protected void tearDown() throws Exception {
-//        File outputFile = new File(OUTPUT_LOCATION_BASE);
-//        if (outputFile.exists() && outputFile.isDirectory()){
-//            deleteDir(outputFile);
-//        }
+        File outputFile = new File(OUTPUT_LOCATION_BASE);
+        if (outputFile.exists() && outputFile.isDirectory()){
+            deleteDir(outputFile);
+        }
     }
 
     /**

Modified: webservices/axis2/trunk/java/modules/xml/src/org/apache/axis2/om/impl/llom/OMElementImpl.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/xml/src/org/apache/axis2/om/impl/llom/OMElementImpl.java?rev=266249&r1=266248&r2=266249&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/xml/src/org/apache/axis2/om/impl/llom/OMElementImpl.java (original)
+++ webservices/axis2/trunk/java/modules/xml/src/org/apache/axis2/om/impl/llom/OMElementImpl.java Thu Sep  1 20:42:42 2005
@@ -19,6 +19,7 @@
 import org.apache.axis2.om.impl.OMOutputImpl;
 import org.apache.axis2.om.impl.llom.traverse.OMChildrenIterator;
 import org.apache.axis2.om.impl.llom.traverse.OMChildrenQNameIterator;
+import org.apache.axis2.om.impl.llom.traverse.OMChildElementIterator;
 import org.apache.axis2.om.impl.llom.util.EmptyIterator;
 import org.apache.axis2.soap.impl.llom.SOAPConstants;
 
@@ -258,11 +259,10 @@
 
     /**
      * Returns a filtered list of children - just the elements.
-     *
      * @return an iterator over the child elements
      */
     public Iterator getChildElements() {
-        return new OMChildrenIterator(getFirstChild());
+        return new OMChildElementIterator(getFirstElement());
     }
 
     /**

Added: webservices/axis2/trunk/java/modules/xml/src/org/apache/axis2/om/impl/llom/traverse/OMchildElementIterator.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/xml/src/org/apache/axis2/om/impl/llom/traverse/OMchildElementIterator.java?rev=266249&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/xml/src/org/apache/axis2/om/impl/llom/traverse/OMchildElementIterator.java (added)
+++ webservices/axis2/trunk/java/modules/xml/src/org/apache/axis2/om/impl/llom/traverse/OMchildElementIterator.java Thu Sep  1 20:42:42 2005
@@ -0,0 +1,120 @@
+package org.apache.axis2.om.impl.llom.traverse;
+
+import org.apache.axis2.om.OMNode;
+import org.apache.axis2.om.OMException;
+import org.apache.axis2.om.OMElement;
+
+import java.util.Iterator;
+
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed 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.
+ */
+
+public class OMChildElementIterator implements Iterator {
+
+    /**
+     * Field currentChild
+     */
+    protected OMNode currentChild;
+
+    /**
+     * Field lastChild
+     */
+    protected OMNode lastChild;
+
+    /**
+     * Field nextCalled
+     */
+    protected boolean nextCalled = false;
+
+    /**
+     * Field removeCalled
+     */
+    protected boolean removeCalled = false;
+
+    /**
+     * Constructor OMChildrenIterator
+     *
+     * @param currentChild
+     */
+    public OMChildElementIterator(OMElement currentChild) {
+        this.currentChild = currentChild;
+    }
+
+    /**
+     * Removes from the underlying collection the last element returned by the
+     * iterator (optional operation).  This method can be called only once per
+     * call to <tt>next</tt>.  The behavior of an iterator is unspecified if
+     * the underlying collection is modified while the iteration is in
+     * progress in any way other than by calling this method.
+     *
+     * @throws UnsupportedOperationException if the <tt>remove</tt>
+     *                                       operation is not supported by this Iterator.
+     * @throws IllegalStateException         if the <tt>next</tt> method has not
+     *                                       yet been called, or the <tt>remove</tt> method has already
+     *                                       been called after the last call to the <tt>next</tt>
+     *                                       method.
+     */
+    public void remove() {
+        if (!nextCalled) {
+            throw new IllegalStateException(
+                    "next method has not yet being called");
+        }
+        if (removeCalled) {
+            throw new IllegalStateException("remove has already being called");
+        }
+        removeCalled = true;
+
+        // since this acts on the last child there is no need to mess with the current child
+        if (lastChild == null) {
+            throw new OMException("cannot remove a child at this stage!");
+        }
+        lastChild.detach();
+    }
+
+    /**
+     * Returns <tt>true</tt> if the iteration has more elements. (In other
+     * words, returns <tt>true</tt> if <tt>next</tt> would return an element
+     * rather than throwing an exception.)
+     *
+     * @return <tt>true</tt> if the iterator has more elements.
+     */
+    public boolean hasNext() {
+        return (currentChild != null);
+    }
+
+    /**
+     * Returns the next element in the iteration.
+     *
+     * @return the next element in the iteration.
+     * @throws java.util.NoSuchElementException
+     *          iteration has no more elements.
+     */
+    public Object next() {
+        nextCalled = true;
+        removeCalled = false;
+
+        if (hasNext()) {
+            lastChild = currentChild;
+            do{
+                currentChild = currentChild.getNextSibling();
+            }while(currentChild!=null && currentChild.getType()!=OMNode.ELEMENT_NODE);
+
+
+            return lastChild;
+        }
+        return null;
+    }
+}

Copied: webservices/axis2/trunk/java/modules/xml/test/org/apache/axis2/om/IteratorTest.java (from r265666, webservices/axis2/trunk/java/modules/xml/test/org/apache/axis2/om/IteratorTester.java)
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/xml/test/org/apache/axis2/om/IteratorTest.java?p2=webservices/axis2/trunk/java/modules/xml/test/org/apache/axis2/om/IteratorTest.java&p1=webservices/axis2/trunk/java/modules/xml/test/org/apache/axis2/om/IteratorTester.java&r1=265666&r2=266249&rev=266249&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/xml/test/org/apache/axis2/om/IteratorTester.java (original)
+++ webservices/axis2/trunk/java/modules/xml/test/org/apache/axis2/om/IteratorTest.java Thu Sep  1 20:42:42 2005
@@ -17,38 +17,81 @@
 
 import org.apache.axis2.soap.SOAPEnvelope;
 import org.apache.axis2.soap.impl.llom.builder.StAXSOAPModelBuilder;
+import org.apache.axis2.om.impl.llom.builder.StAXOMBuilder;
+import org.apache.axis2.om.impl.llom.factory.OMLinkedListImplFactory;
 
 import javax.xml.stream.XMLInputFactory;
+import javax.xml.namespace.QName;
 import java.io.FileReader;
 import java.util.Iterator;
 
-public class IteratorTester extends AbstractTestCase {
-    private SOAPEnvelope envelope = null;
+public class IteratorTest extends AbstractTestCase {
+    private OMElement envelope = null;
 
-    public IteratorTester(String testName) {
+    public IteratorTest(String testName) {
         super(testName);
     }
 
     protected void setUp() throws Exception {
+        //lets use a plain OM factory
         envelope =
-                new StAXSOAPModelBuilder(
+                new StAXOMBuilder(new OMLinkedListImplFactory(),
                         XMLInputFactory.newInstance().createXMLStreamReader(
                                 new FileReader(
                                         getTestResourceFile(
-                                                "soap/soapmessage1.xml"))), null).getSOAPEnvelope();
+                                                "soap/soapmessage1.xml")))).getDocumentElement();
     }
 
     protected void tearDown() throws Exception {
         envelope = null;
     }
 
+    /**
+     * Test the plain iterator which includes all the
+     * children (including the texts)
+     */
     public void testIterator() {
         OMElement elt = envelope;
         Iterator iter = elt.getChildren();
+        int counter = 0;
         while (iter.hasNext()) {
-            assertNotNull(iter.next());
+            counter ++;
+            assertNotNull("Must return not null objects!",iter.next());
+        }
+        assertEquals("This element should contain only five children including the text ",5,counter);
+    }
+
+    /**
+     * Test the element iterator
+     */
+    public void testElementIterator() {
+        OMElement elt = envelope;
+        Iterator iter = elt.getChildElements();
+        int counter = 0;
+        while (iter.hasNext()) {
+            counter ++;
+            Object o = iter.next();
+            assertNotNull("Must return not null objects!",o);
+            assertTrue("All these should be elements!",((OMNode)o).getType()==OMNode.ELEMENT_NODE);
         }
+        assertEquals("This element should contain only two elements ",2,counter);
+    }
 
+    /**
+     * Test the element iterator
+     */
+    public void testElementQNameIterator() {
+        OMElement elt = envelope;
+        QName qname = new QName("http://schemas.xmlsoap.org/soap/envelope/","body");
+        Iterator iter = elt.getChildrenWithName(qname);
+        int counter = 0;
+        while (iter.hasNext()) {
+            counter ++;
+            Object o = iter.next();
+            assertNotNull("Must return not null objects!",o);
+            assertTrue("All these should be elements!",((OMNode)o).getType()==OMNode.ELEMENT_NODE);
+        }
+        assertEquals("This element should contain only one element with the given QName ",1,counter);
     }
 
     /**
@@ -101,6 +144,7 @@
         }
         iter = elt.getChildren();
         if (iter.hasNext()) {
+            //we shouldn't reach here!
             fail("No children should remain after removing all!");
         }
 
@@ -120,7 +164,7 @@
             firstChildrenCount++;
         }
 
-        //this should remove the last node
+        //remove the last node
         iter.remove();
 
         //reloop and check the count