You are viewing a plain text version of this content. The canonical link for it is here.
Posted to woden-dev@ws.apache.org by jk...@apache.org on 2005/12/06 05:16:10 UTC

svn commit: r354290 - in /incubator/woden/java/src/org/apache/woden: internal/ internal/wsdl20/extensions/ internal/wsdl20/extensions/soap/ wsdl20/extensions/soap/

Author: jkaputin
Date: Mon Dec  5 20:15:55 2005
New Revision: 354290

URL: http://svn.apache.org/viewcvs?rev=354290&view=rev
Log:
Added support for element extensibility and implemented
the SOAPModule extension element

Added:
    incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/soap/SOAPModuleDeserializer.java
Modified:
    incubator/woden/java/src/org/apache/woden/internal/DOMWSDLReader.java
    incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/PopulatedExtensionRegistry.java
    incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/soap/SOAPModuleImpl.java
    incubator/woden/java/src/org/apache/woden/wsdl20/extensions/soap/SOAPModule.java

Modified: incubator/woden/java/src/org/apache/woden/internal/DOMWSDLReader.java
URL: http://svn.apache.org/viewcvs/incubator/woden/java/src/org/apache/woden/internal/DOMWSDLReader.java?rev=354290&r1=354289&r2=354290&view=diff
==============================================================================
--- incubator/woden/java/src/org/apache/woden/internal/DOMWSDLReader.java (original)
+++ incubator/woden/java/src/org/apache/woden/internal/DOMWSDLReader.java Mon Dec  5 20:15:55 2005
@@ -38,6 +38,7 @@
 import org.apache.woden.internal.util.StringUtils;
 import org.apache.woden.internal.util.dom.DOMUtils;
 import org.apache.woden.internal.util.dom.QNameUtils;
+import org.apache.woden.internal.util.dom.XPathUtils;
 import org.apache.woden.internal.wsdl20.Constants;
 import org.apache.woden.internal.wsdl20.InterfaceFaultImpl;
 import org.apache.woden.internal.wsdl20.InterfaceMessageReferenceImpl;
@@ -49,6 +50,8 @@
 import org.apache.woden.schema.Schema;
 import org.apache.woden.wsdl20.enumeration.Direction;
 import org.apache.woden.wsdl20.enumeration.MessageLabel;
+import org.apache.woden.wsdl20.extensions.ExtensionDeserializer;
+import org.apache.woden.wsdl20.extensions.ExtensionElement;
 import org.apache.woden.wsdl20.extensions.ExtensionRegistry;
 import org.apache.woden.wsdl20.xml.BindingElement;
 import org.apache.woden.wsdl20.xml.BindingFaultElement;
@@ -259,6 +262,14 @@
             {
                 desc.addDocumentationElement(parseDocumentation(tempEl, desc));
             }
+            else if (QNameUtils.matches(Constants.Q_ELEM_IMPORT, tempEl))
+            {
+                //TODO desc.addImportElement(parseImport(tempEl, desc));
+            }
+            else if (QNameUtils.matches(Constants.Q_ELEM_INCLUDE, tempEl))
+            {
+                //TODO desc.addIncludeElement(parseInclude(tempEl, desc));
+            }
             else if (QNameUtils.matches(Constants.Q_ELEM_TYPES, tempEl))
             {
                 desc.setTypesElement(parseTypes(tempEl, desc));
@@ -271,9 +282,14 @@
             {
                 desc.addBindingElement(parseBinding(tempEl, desc));
             }
+            else if (QNameUtils.matches(Constants.Q_ELEM_SERVICE, tempEl))
+            {
+                //TODO desc.addServiceElement(parseService(tempEl, desc));
+            }
             else
             {
-                //TODO import, include, binding, service, extension elements
+                desc.addExtensionElement(
+                    parseExtensionElement(DescriptionElement.class, desc, tempEl, desc) );
             }
             
             tempEl = DOMUtils.getNextSiblingElement(tempEl);
@@ -287,10 +303,20 @@
                                                     throws WSDLException
     {
         DocumentationElement documentation = desc.createDocumentationElement();
-        documentation.setContent(docEl);
+        //TODO remove this ... documentation.setContent(docEl);
         
         parseExtensionAttributes(docEl, DocumentationElement.class, documentation, desc);
 
+        Element tempEl = DOMUtils.getFirstChildElement(docEl);
+
+        while (tempEl != null)
+        {
+            documentation.addExtensionElement(
+                parseExtensionElement(DocumentationElement.class, documentation, docEl, desc) );
+        
+            tempEl = DOMUtils.getNextSiblingElement(tempEl);
+        }
+        
         return documentation;
     }
     
@@ -351,7 +377,8 @@
             }
             else
             {
-                //TODO extensions element (e.g. for xml type systems that are not W3C XML Schema)
+                types.addExtensionElement(
+                    parseExtensionElement(TypesElement.class, types, typesEl, desc) );
             }
             
             tempEl = DOMUtils.getNextSiblingElement(tempEl);
@@ -562,7 +589,8 @@
             }
             else
             {
-                //TODO extension elements
+                intface.addExtensionElement(
+                    parseExtensionElement(InterfaceElement.class, intface, interfaceEl, desc) );
             }
             
             tempEl = DOMUtils.getNextSiblingElement(tempEl);
@@ -639,7 +667,8 @@
             }
             else
             {
-                //TODO extension elements
+                fault.addExtensionElement(
+                    parseExtensionElement(InterfaceFaultElement.class, fault, faultEl, desc) );
             }
             
             tempEl = DOMUtils.getNextSiblingElement(tempEl);
@@ -731,7 +760,8 @@
             }
             else
             {
-                //TODO extension elements
+                oper.addExtensionElement(
+                    parseExtensionElement(InterfaceOperationElement.class, oper, operEl, desc) );
             }
             
             tempEl = DOMUtils.getNextSiblingElement(tempEl);
@@ -804,7 +834,8 @@
             }
             else
             {
-                //TODO extension elements
+                faultRef.addExtensionElement(
+                    parseExtensionElement(FaultReferenceElement.class, faultRef, faultRefEl, desc) );
             }
             
             tempEl = DOMUtils.getNextSiblingElement(tempEl);
@@ -895,7 +926,8 @@
             }
             else
             {
-                //TODO extension elements
+                message.addExtensionElement(
+                    parseExtensionElement(InterfaceMessageReferenceElement.class, message, msgRefEl, desc) );
             }
             
             tempEl = DOMUtils.getNextSiblingElement(tempEl);
@@ -975,7 +1007,8 @@
             }
             else
             {
-                //TODO extension elements
+                binding.addExtensionElement(
+                    parseExtensionElement(BindingElement.class, binding, tempEl, desc) );
             }
             
             tempEl = DOMUtils.getNextSiblingElement(tempEl);
@@ -1034,7 +1067,8 @@
             }
             else
             {
-                //TODO extension elements
+                fault.addExtensionElement(
+                    parseExtensionElement(BindingFaultElement.class, fault, tempEl, desc) );
             }
             
             tempEl = DOMUtils.getNextSiblingElement(tempEl);
@@ -1110,7 +1144,8 @@
             }
             else
             {
-                //TODO extension elements
+                oper.addExtensionElement(
+                    parseExtensionElement(BindingOperationElement.class, oper, tempEl, desc) );
             }
             
             tempEl = DOMUtils.getNextSiblingElement(tempEl);
@@ -1190,7 +1225,8 @@
             }
             else
             {
-                //TODO extension elements
+                faultRef.addExtensionElement(
+                    parseExtensionElement(FaultReferenceElement.class, faultRef, tempEl, desc) );
             }
             
             tempEl = DOMUtils.getNextSiblingElement(tempEl);
@@ -1255,7 +1291,8 @@
             }
             else
             {
-                //TODO extension elements
+                message.addExtensionElement(
+                    parseExtensionElement(BindingMessageReferenceElement.class, message, tempEl, desc) );
             }
             
             tempEl = DOMUtils.getNextSiblingElement(tempEl);
@@ -1315,7 +1352,8 @@
             }
             else
             {
-                //TODO extension elements
+                feature.addExtensionElement(
+                    parseExtensionElement(FeatureElement.class, feature, featEl, desc) );
             }
             
             tempEl = DOMUtils.getNextSiblingElement(tempEl);
@@ -1418,7 +1456,8 @@
             }
             else
             {
-                //TODO extension elements
+                property.addExtensionElement(
+                    parseExtensionElement(PropertyElement.class, property, propEl, desc) );
             }
             
             tempEl = DOMUtils.getNextSiblingElement(tempEl);
@@ -1483,6 +1522,56 @@
         }
         
     }
+    
+    private ExtensionElement parseExtensionElement(Class parentType,
+                                                   WSDLElement parent,
+                                                   Element el,
+                                                   DescriptionElement desc)
+                                                   throws WSDLException
+    {
+        QName elementType = QNameUtils.newQName(el);
+        String namespaceURI = el.getNamespaceURI();
+        
+        try
+        {
+            if (namespaceURI == null || namespaceURI.equals(Constants.NS_URI_WSDL20))
+            {
+                getErrorReporter().reportError(
+                        new ErrorLocatorImpl(),  //TODO line&col nos.
+                        "WSDL520",
+                        new Object[] {elementType, parentType.getName()},
+                        ErrorReporter.SEVERITY_ERROR);
+                return null;
+            }
+            
+            ExtensionRegistry extReg = desc.getExtensionRegistry();
+            
+            if (extReg == null)
+            {
+                getErrorReporter().reportError(
+                        new ErrorLocatorImpl(),  //TODO line&col nos.
+                        "WSDL514",
+                        new Object[] {elementType, parentType.getName()},
+                        ErrorReporter.SEVERITY_ERROR);
+                return null;
+            }
+            
+            ExtensionDeserializer extDS = extReg.queryDeserializer(parentType,
+                    elementType);
+            
+            return extDS.unmarshall(parentType, parent, elementType, el, desc, extReg);
+        }
+        catch (WSDLException e)
+        {
+            if (e.getLocation() == null)
+            {
+                e.setLocation(XPathUtils.getXPathExprFromNode(el));
+            }
+            
+            throw e;
+        }
+    }
+    
 
     /* ************************************************************
      *  Utility/helper methods

Modified: incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/PopulatedExtensionRegistry.java
URL: http://svn.apache.org/viewcvs/incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/PopulatedExtensionRegistry.java?rev=354290&r1=354289&r2=354290&view=diff
==============================================================================
--- incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/PopulatedExtensionRegistry.java (original)
+++ incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/PopulatedExtensionRegistry.java Mon Dec  5 20:15:55 2005
@@ -16,6 +16,8 @@
 package org.apache.woden.internal.wsdl20.extensions;
 
 import org.apache.woden.internal.wsdl20.extensions.soap.SOAPConstants;
+import org.apache.woden.internal.wsdl20.extensions.soap.SOAPModuleDeserializer;
+import org.apache.woden.internal.wsdl20.extensions.soap.SOAPModuleImpl;
 import org.apache.woden.internal.xml.QNameAttrImpl;
 import org.apache.woden.internal.xml.QNameListAttrImpl;
 import org.apache.woden.internal.xml.StringAttrImpl;
@@ -41,7 +43,7 @@
     
     public PopulatedExtensionRegistry()
     {
-        //SOAP extensions
+        //SOAP extension attributes
         
         registerExtAttributeType(
             BindingElement.class, SOAPConstants.Q_ATTR_SOAP_VERSION, StringAttrImpl.class);
@@ -65,6 +67,22 @@
         registerExtAttributeType(
                 BindingOperationElement.class, SOAPConstants.Q_ATTR_SOAP_ACTION, URIAttrImpl.class);
             
+        //SOAP extension elements
+
+        SOAPModuleDeserializer soapModuleDeser = new SOAPModuleDeserializer();
+        
+        //registerSerializer(BindingElement.class,
+        //                   SOAPConstants.Q_ELEM_SOAP_MODULE,
+        //                   null);
+        registerDeserializer(BindingElement.class,
+                           SOAPConstants.Q_ELEM_SOAP_MODULE,
+                           soapModuleDeser);
+        registerExtElementType(BindingElement.class,
+                           SOAPConstants.Q_ELEM_SOAP_MODULE,
+                           SOAPModuleImpl.class);
+       
+        
+        
         
         /* TODO modify this wsdl4j code for Woden
          * 

Added: incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/soap/SOAPModuleDeserializer.java
URL: http://svn.apache.org/viewcvs/incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/soap/SOAPModuleDeserializer.java?rev=354290&view=auto
==============================================================================
--- incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/soap/SOAPModuleDeserializer.java (added)
+++ incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/soap/SOAPModuleDeserializer.java Mon Dec  5 20:15:55 2005
@@ -0,0 +1,117 @@
+/**
+ * Copyright 2005 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.
+ */
+package org.apache.woden.internal.wsdl20.extensions.soap;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import javax.xml.namespace.QName;
+
+import org.apache.woden.ErrorReporter;
+import org.apache.woden.WSDLException;
+import org.apache.woden.internal.ErrorLocatorImpl;
+import org.apache.woden.internal.util.dom.DOMUtils;
+import org.apache.woden.internal.util.dom.QNameUtils;
+import org.apache.woden.internal.wsdl20.Constants;
+import org.apache.woden.wsdl20.extensions.ExtensionDeserializer;
+import org.apache.woden.wsdl20.extensions.ExtensionElement;
+import org.apache.woden.wsdl20.extensions.ExtensionRegistry;
+import org.apache.woden.wsdl20.extensions.soap.SOAPModuleElement;
+import org.apache.woden.wsdl20.xml.DescriptionElement;
+import org.apache.woden.wsdl20.xml.DocumentationElement;
+import org.apache.woden.wsdl20.xml.WSDLElement;
+import org.w3c.dom.Element;
+
+/**
+ * Deserializes the <wsoap:module> extension element into a SOAPModuleElement.
+ * 
+ * @author jkaputin@apache.org
+ *
+ */
+public class SOAPModuleDeserializer implements ExtensionDeserializer 
+{
+
+    /* (non-Javadoc)
+     * @see org.apache.woden.wsdl20.extensions.ExtensionDeserializer#unmarshall(java.lang.Class, javax.xml.namespace.QName, org.w3c.dom.Element, org.apache.woden.wsdl20.xml.DescriptionElement, org.apache.woden.wsdl20.extensions.ExtensionRegistry)
+     */
+    public ExtensionElement unmarshall(Class parentType,
+                                       Object parent, 
+                                       QName elementType,
+                                       Element el, 
+                                       DescriptionElement desc, 
+                                       ExtensionRegistry extReg)
+                                       throws WSDLException 
+    {
+        SOAPModuleElement soapMod = 
+            (SOAPModuleElement) extReg.createExtElement(parentType, elementType);
+        
+        soapMod.setElementQName(elementType);
+        soapMod.setParent((WSDLElement)parent);
+
+        String ref = DOMUtils.getAttribute(el, Constants.ATTR_REF);
+        if(ref != null) 
+        {
+            URI uri = null;
+            try {
+                uri = new URI(ref);
+                soapMod.setRef(uri);
+            } catch (URISyntaxException e) {
+                extReg.getErrorReporter().reportError(
+                        new ErrorLocatorImpl(),  //TODO line&col nos.
+                        "WSDL506", 
+                        new Object[] {ref}, 
+                        ErrorReporter.SEVERITY_ERROR, 
+                        e);
+            }
+        }
+        
+        //The required property defaults to 'false' if it is omitted.
+        String required = DOMUtils.getAttribute(el, Constants.ATTR_REQUIRED);
+        soapMod.setRequired(new Boolean(required));
+        
+        //TODO parseExtensionAttributes(el, SOAPModuleElement.class, soapMod, desc);
+        
+        Element tempEl = DOMUtils.getFirstChildElement(el);
+
+        while (tempEl != null)
+        {
+            if (QNameUtils.matches(Constants.Q_ELEM_DOCUMENTATION, tempEl))
+            {
+                soapMod.addDocumentationElement(parseDocumentation(tempEl, desc));
+            }
+            else
+            {
+                //TODO parse ext elements
+            }
+            tempEl = DOMUtils.getNextSiblingElement(tempEl);
+        }
+        
+        return soapMod;
+    }
+            
+    private DocumentationElement parseDocumentation(Element docEl, 
+                                                    DescriptionElement desc) 
+                                                    throws WSDLException
+    {
+        DocumentationElement documentation = desc.createDocumentationElement();
+        documentation.setContent(docEl);
+        
+        //TODO parseExtensionAttributes(docEl, DocumentationElement.class, documentation, desc);
+        
+        return documentation;
+    }
+
+}

Modified: incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/soap/SOAPModuleImpl.java
URL: http://svn.apache.org/viewcvs/incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/soap/SOAPModuleImpl.java?rev=354290&r1=354289&r2=354290&view=diff
==============================================================================
--- incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/soap/SOAPModuleImpl.java (original)
+++ incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/soap/SOAPModuleImpl.java Mon Dec  5 20:15:55 2005
@@ -16,6 +16,11 @@
 package org.apache.woden.internal.wsdl20.extensions.soap;
 
 import java.net.URI;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Vector;
 
 import javax.xml.namespace.QName;
 
@@ -33,15 +38,26 @@
  * 
  * @author jkaputin@apache.org
  */
-public class SOAPModuleImpl implements SOAPModule, SOAPModuleElement {
+public class SOAPModuleImpl implements SOAPModule, SOAPModuleElement 
+{
+    QName fElementQN = null;
+    URI fRef = null;
+    Boolean fRequired = null;
+    Map fExtAttributes = new HashMap();
+    List fExtElements = new Vector();
+    WSDLElement fParent = null;
+    List fDocumentationElements = new Vector();
+
+    /* ***********************************************************************
+     *  Component model methods (SOAPModule interface), shared with Element model
+     * ***********************************************************************/
 
     /* (non-Javadoc)
      * @see org.apache.woden.wsdl20.extensions.soap.SOAPModule#getRef()
      * @see org.apache.woden.wsdl20.extensions.soap.SOAPModuleElement#getRef()
      */
     public URI getRef() {
-        // TODO Auto-generated method stub
-        return null;
+        return fRef;
     }
 
     /* (non-Javadoc)
@@ -49,8 +65,7 @@
      * @see org.apache.woden.wsdl20.extensions.ExtensionElement#getRequired()
      */
     public Boolean getRequired() {
-        // TODO Auto-generated method stub
-        return null;
+        return fRequired;
     }
 
     /* (non-Javadoc)
@@ -58,112 +73,142 @@
      * @see org.apache.woden.wsdl20.extensions.soap.SOAPModuleElement#getParent()
      */
     public WSDLElement getParent() {
-        // TODO Auto-generated method stub
-        return null;
+        return fParent;
     }
+    
+    /* 
+     * @see org.apache.woden.wsdl20.extensions.soap.SOAPModule#toElement()
+     */
+    public SOAPModuleElement toElement() {
+        return this;
+    }
+    
+
+    /* ***********************************************************************
+     *  Element model-only methods (SOAPModuleElement interface)
+     * ***********************************************************************/
 
     /* (non-Javadoc)
      * @see org.apache.woden.wsdl20.extensions.soap.SOAPModuleElement#setRef(java.net.URI)
      */
     public void setRef(URI uri) {
-        // TODO Auto-generated method stub
-
+        fRef = uri;
     }
 
     /* (non-Javadoc)
      * @see org.apache.woden.wsdl20.extensions.soap.SOAPModuleElement#setParent(org.apache.woden.wsdl20.xml.WSDLElement)
      */
     public void setParent(WSDLElement wsdlEl) {
-        // TODO Auto-generated method stub
-
+        fParent = wsdlEl;
     }
 
     /* (non-Javadoc)
      * @see org.apache.woden.wsdl20.extensions.soap.SOAPModuleElement#addDocumentationElement(org.apache.woden.wsdl20.xml.DocumentationElement)
      */
     public void addDocumentationElement(DocumentationElement docEl) {
-        // TODO Auto-generated method stub
-
+        fDocumentationElements.add(docEl);
     }
 
     /* (non-Javadoc)
      * @see org.apache.woden.wsdl20.extensions.soap.SOAPModuleElement#getDocumentationElements()
      */
-    public DocumentationElement[] getDocumentationElements() {
-        // TODO Auto-generated method stub
-        return null;
+    public DocumentationElement[] getDocumentationElements() 
+    {
+        DocumentationElement[] array = new DocumentationElement[fDocumentationElements.size()];
+        fDocumentationElements.toArray(array);
+        return array;
     }
 
     /* (non-Javadoc)
      * @see org.apache.woden.wsdl20.extensions.ExtensionElement#setElementQName(javax.xml.namespace.QName)
      */
     public void setElementQName(QName qname) {
-        // TODO Auto-generated method stub
-
+        fElementQN = qname;
     }
 
     /* (non-Javadoc)
      * @see org.apache.woden.wsdl20.extensions.ExtensionElement#getElementQName()
      */
     public QName getElementQName() {
-        // TODO Auto-generated method stub
-        return null;
+        return fElementQN;
     }
 
     /* (non-Javadoc)
      * @see org.apache.woden.wsdl20.extensions.ExtensionElement#setRequired(java.lang.Boolean)
      */
     public void setRequired(Boolean required) {
-        // TODO Auto-generated method stub
-
+        fRequired = required;
     }
+    
+    /* ***********************************************************************
+     *  Extensibility methods
+     * ***********************************************************************/
 
     /* (non-Javadoc)
      * @see org.apache.woden.wsdl20.extensions.AttributeExtensible#setExtensionAttribute(javax.xml.namespace.QName, org.apache.woden.xml.XMLAttr)
      */
-    public void setExtensionAttribute(QName attrQN, XMLAttr attr) {
-        // TODO Auto-generated method stub
-
+    public void setExtensionAttribute(QName attrQN, XMLAttr attr) 
+    {
+        if(attrQN != null)  //TODO throw IllegArgExc if it is null?
+        {
+            if(attr != null) {
+                fExtAttributes.put(attrQN, attr);
+            } else {
+                fExtAttributes.remove(attrQN);
+            }
+        }
     }
 
     /* (non-Javadoc)
      * @see org.apache.woden.wsdl20.extensions.AttributeExtensible#getExtensionAttribute(javax.xml.namespace.QName)
      */
-    public XMLAttr getExtensionAttribute(QName attrQN) {
-        // TODO Auto-generated method stub
-        return null;
+    public XMLAttr getExtensionAttribute(QName attrQN) 
+    {
+        //TODO throw IllegArgExc if it is null?
+        if(attrQN != null) {
+            return (XMLAttr)fExtAttributes.get(attrQN);
+        } else {
+            return null;
+        }
     }
 
     /* (non-Javadoc)
      * @see org.apache.woden.wsdl20.extensions.AttributeExtensible#getExtensionAttributes()
      */
-    public XMLAttr[] getExtensionAttributes() {
-        // TODO Auto-generated method stub
-        return null;
+    public XMLAttr[] getExtensionAttributes() 
+    {
+        Collection coll = fExtAttributes.values();
+        XMLAttr[] array = new XMLAttr[coll.size()];
+        coll.toArray(array);
+        return array;
     }
 
     /* (non-Javadoc)
      * @see org.apache.woden.wsdl20.extensions.ElementExtensible#addExtensionElement(org.apache.woden.wsdl20.extensions.ExtensionElement)
      */
-    public void addExtensionElement(ExtensionElement extEl) {
-        // TODO Auto-generated method stub
-
+    public void addExtensionElement(ExtensionElement extEl) 
+    {
+        if(extEl != null) {
+            fExtElements.add(extEl);
+        }
     }
 
     /* (non-Javadoc)
      * @see org.apache.woden.wsdl20.extensions.ElementExtensible#removeExtensionElement(org.apache.woden.wsdl20.extensions.ExtensionElement)
      */
-    public void removeExtensionElement(ExtensionElement extEl) {
-        // TODO Auto-generated method stub
-
+    public void removeExtensionElement(ExtensionElement extEl) 
+    {
+        fExtElements.remove(extEl);
     }
 
     /* (non-Javadoc)
      * @see org.apache.woden.wsdl20.extensions.ElementExtensible#getExtensionElements()
      */
-    public ExtensionElement[] getExtensionElements() {
-        // TODO Auto-generated method stub
-        return null;
+    public ExtensionElement[] getExtensionElements() 
+    {
+        ExtensionElement[] array = new ExtensionElement[fExtElements.size()];
+        fExtElements.toArray(array);
+        return array;
     }
 
 }

Modified: incubator/woden/java/src/org/apache/woden/wsdl20/extensions/soap/SOAPModule.java
URL: http://svn.apache.org/viewcvs/incubator/woden/java/src/org/apache/woden/wsdl20/extensions/soap/SOAPModule.java?rev=354290&r1=354289&r2=354290&view=diff
==============================================================================
--- incubator/woden/java/src/org/apache/woden/wsdl20/extensions/soap/SOAPModule.java (original)
+++ incubator/woden/java/src/org/apache/woden/wsdl20/extensions/soap/SOAPModule.java Mon Dec  5 20:15:55 2005
@@ -33,4 +33,6 @@
     public Boolean getRequired();
 
     public WSDLElement getParent();
+    
+    public SOAPModuleElement toElement();
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: woden-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: woden-dev-help@ws.apache.org