Author: jkaputin
Date: Tue Dec  6 18:42:54 2005
New Revision: 354674

URL: http://svn.apache.org/viewcvs?rev=354674&view=rev
Log:
Added code to the Reader to dereference qnames and/or
messageLabel to object of the appropriate type and 
completed the initialization of the Binding component
model in ComponentModelBuilder.

Modified:
    incubator/woden/java/src/org/apache/woden/internal/DOMWSDLReader.java
    
incubator/woden/java/src/org/apache/woden/internal/util/ComponentModelBuilder.java
    
incubator/woden/java/src/org/apache/woden/internal/wsdl20/BindingFaultImpl.java
    
incubator/woden/java/src/org/apache/woden/internal/wsdl20/BindingFaultReferenceImpl.java
    incubator/woden/java/src/org/apache/woden/internal/wsdl20/BindingImpl.java
    
incubator/woden/java/src/org/apache/woden/internal/wsdl20/BindingMessageReferenceImpl.java
    
incubator/woden/java/src/org/apache/woden/internal/wsdl20/BindingOperationImpl.java
    
incubator/woden/java/src/org/apache/woden/wsdl20/xml/FaultReferenceElement.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=354674&r1=354673&r2=354674&view=diff
==============================================================================
--- incubator/woden/java/src/org/apache/woden/internal/DOMWSDLReader.java 
(original)
+++ incubator/woden/java/src/org/apache/woden/internal/DOMWSDLReader.java Tue 
Dec  6 18:42:54 2005
@@ -36,6 +36,11 @@
 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.BindingFaultImpl;
+import org.apache.woden.internal.wsdl20.BindingFaultReferenceImpl;
+import org.apache.woden.internal.wsdl20.BindingImpl;
+import org.apache.woden.internal.wsdl20.BindingMessageReferenceImpl;
+import org.apache.woden.internal.wsdl20.BindingOperationImpl;
 import org.apache.woden.internal.wsdl20.Constants;
 import org.apache.woden.internal.wsdl20.InterfaceFaultImpl;
 import org.apache.woden.internal.wsdl20.InterfaceMessageReferenceImpl;
@@ -931,12 +936,13 @@
             binding.setName(qname);
         }
         
+        QName intfaceQN = null;
         String intface = DOMUtils.getAttribute(bindEl, 
Constants.ATTR_INTERFACE);
         if(intface != null)
         {
             try {
-                QName qname = DOMUtils.getQName(intface, bindEl, desc);
-                binding.setInterfaceName(qname);
+                intfaceQN = DOMUtils.getQName(intface, bindEl, desc);
+                binding.setInterfaceName(intfaceQN);
             } catch (WSDLException e) {
                 getErrorReporter().reportError( 
                         new ErrorLocatorImpl(),  //TODO line&col nos.
@@ -946,6 +952,19 @@
             }
         }
         
+        //Dereference the interface qname
+        if(intfaceQN != null)
+        {
+            InterfaceElement[] interfaces = desc.getInterfaceElements();
+            for(int i=0; i<interfaces.length; i++)
+            {
+                if( intfaceQN.equals(interfaces[i].getName()) )
+                {
+                    ((BindingImpl)binding).setInterfaceElement(interfaces[i]);
+                }
+            }
+        }
+        
         String type = DOMUtils.getAttribute(bindEl, Constants.ATTR_TYPE);
         if(type != null) {
             binding.setType(getURI(type));
@@ -1004,12 +1023,13 @@
         BindingFaultElement fault = desc.createBindingFaultElement();
         fault.setParentElement(parent);
         
+        QName intFltQN = null;
         String ref = DOMUtils.getAttribute(bindFaultEl, Constants.ATTR_REF);
         if(ref != null)
         {
             try {
-                QName qname = DOMUtils.getQName(ref, bindFaultEl, desc);
-                fault.setRef(qname);
+                intFltQN = DOMUtils.getQName(ref, bindFaultEl, desc);
+                fault.setRef(intFltQN);
             } catch (WSDLException e) {
                 getErrorReporter().reportError( 
                         new ErrorLocatorImpl(),  //TODO line&col nos.
@@ -1019,6 +1039,23 @@
             }
         }
         
+        //Dereference the interface fault qname
+        if(intFltQN != null)
+        {
+            InterfaceElement intface = 
((BindingElement)parent).getInterfaceElement();
+            if(intface != null)
+            {
+                InterfaceFaultElement[] intFaults = 
intface.getInterfaceFaultElements();
+                for(int i=0; i<intFaults.length; i++)
+                {
+                    if( intFltQN.equals(intFaults[i].getName()) )
+                    {
+                        
((BindingFaultImpl)fault).setInterfaceFaultElement(intFaults[i]);
+                    }
+                }
+            }
+        }
+        
         parseExtensionAttributes(bindFaultEl, BindingFaultElement.class, 
fault, desc);
         
         /* Parse the child elements of binding <fault>. 
@@ -1065,12 +1102,13 @@
         BindingOperationElement oper = desc.createBindingOperationElement();
         oper.setParentElement(parent);
         
+        QName refQN = null;
         String ref = DOMUtils.getAttribute(bindOpEl, Constants.ATTR_REF);
         if(ref != null)
         {
             try {
-                QName qname = DOMUtils.getQName(ref, bindOpEl, desc);
-                oper.setRef(qname);
+                refQN = DOMUtils.getQName(ref, bindOpEl, desc);
+                oper.setRef(refQN);
             } catch (WSDLException e) {
                 getErrorReporter().reportError( 
                         new ErrorLocatorImpl(),  //TODO line&col nos.
@@ -1080,6 +1118,20 @@
             }
         }
         
+        //Dereference the 'ref' qname to an InterfaceOperationElement
+        if(refQN != null)
+        {
+            InterfaceElement intface = 
((BindingElement)parent).getInterfaceElement();
+            InterfaceOperationElement[] intOps = 
intface.getInterfaceOperationElements();
+            for(int i=0; i<intOps.length; i++)
+            {
+                if( refQN.equals(intOps[i].getName()) )
+                {
+                    
((BindingOperationImpl)oper).setInterfaceOperationElement(intOps[i]);
+                }
+            }
+        }
+        
         parseExtensionAttributes(bindOpEl, BindingOperationElement.class, 
oper, desc);
         
         /* Parse the child elements of binding <operation>. 
@@ -1149,12 +1201,13 @@
             faultRef.setDirection(Direction.OUT);
         }
         
+        QName refQN = null;
         String ref = DOMUtils.getAttribute(faultRefEl, Constants.ATTR_REF);
         if(ref != null)
         {
             try {
-                QName qname = DOMUtils.getQName(ref, faultRefEl, desc);
-                faultRef.setRef(qname);
+                refQN = DOMUtils.getQName(ref, faultRefEl, desc);
+                faultRef.setRef(refQN);
             } catch (WSDLException e) {
                 getErrorReporter().reportError( 
                         new ErrorLocatorImpl(),  //TODO line&col nos.
@@ -1177,6 +1230,27 @@
             }
         }
         
+        //Dereference the 'ref' and 'messageLabel' attributes to an interface 
fault reference
+        if(faultRef.getRef() != null && 
+           (faultRef.getMessageLabel() == MessageLabel.IN || 
+            faultRef.getMessageLabel() == MessageLabel.OUT)  )
+        {
+            BindingOperationElement bindOp = (BindingOperationElement)parent;
+            InterfaceOperationElement intOp = 
bindOp.getInterfaceOperationElement();
+            if(intOp != null)
+            {
+                FaultReferenceElement[] intFltRefs = 
intOp.getFaultReferenceElements();
+                for(int i=0; i<intFltRefs.length; i++)
+                {
+                    if((faultRef.getRef()).equals(intFltRefs[i].getRef()) &&
+                       
(faultRef.getMessageLabel()).equals(intFltRefs[i].getMessageLabel()) )
+                    {
+                        
((BindingFaultReferenceImpl)faultRef).setInterfaceFaultReferenceElement(intFltRefs[i]);
+                    }
+                }
+            }
+        }
+        
         parseExtensionAttributes(faultRefEl, FaultReferenceElement.class, 
faultRef, desc);
         
         /* Parse the child elements of binding operation <infault> or 
<outfault>. 
@@ -1240,6 +1314,25 @@
             } else {
                 //invalid value, but capture it anyway.
                 message.setMessageLabel(MessageLabel.invalidValue(msgLabel));
+            }
+        }
+        
+        //Dereference the msgLabel to an InterfaceMessageReferenceElement
+        if(message.getMessageLabel() == MessageLabel.IN || 
+           message.getMessageLabel() == MessageLabel.OUT)
+        {
+            BindingOperationElement bindOp = (BindingOperationElement)parent;
+            InterfaceOperationElement intOp = 
bindOp.getInterfaceOperationElement();
+            if(intOp != null)
+            {
+                InterfaceMessageReferenceElement[] intMsgRefs = 
intOp.getMessageReferenceElements();
+                for(int i=0; i<intMsgRefs.length; i++)
+                {
+                    if( 
(message.getMessageLabel()).equals(intMsgRefs[i].getMessageLabel()) )
+                    {
+                        
((BindingMessageReferenceImpl)message).setInterfaceMessageReferenceElement(intMsgRefs[i]);
+                    }
+                }
             }
         }
         

Modified: 
incubator/woden/java/src/org/apache/woden/internal/util/ComponentModelBuilder.java
URL: 
http://svn.apache.org/viewcvs/incubator/woden/java/src/org/apache/woden/internal/util/ComponentModelBuilder.java?rev=354674&r1=354673&r2=354674&view=diff
==============================================================================
--- 
incubator/woden/java/src/org/apache/woden/internal/util/ComponentModelBuilder.java
 (original)
+++ 
incubator/woden/java/src/org/apache/woden/internal/util/ComponentModelBuilder.java
 Tue Dec  6 18:42:54 2005
@@ -21,6 +21,11 @@
 
 import javax.xml.namespace.QName;
 
+import org.apache.woden.internal.wsdl20.BindingFaultImpl;
+import org.apache.woden.internal.wsdl20.BindingFaultReferenceImpl;
+import org.apache.woden.internal.wsdl20.BindingImpl;
+import org.apache.woden.internal.wsdl20.BindingMessageReferenceImpl;
+import org.apache.woden.internal.wsdl20.BindingOperationImpl;
 import org.apache.woden.internal.wsdl20.Constants;
 import org.apache.woden.internal.wsdl20.DescriptionImpl;
 import org.apache.woden.internal.wsdl20.ElementDeclarationImpl;
@@ -34,6 +39,10 @@
 import org.apache.woden.internal.wsdl20.TypesImpl;
 import org.apache.woden.wsdl20.Interface;
 import org.apache.woden.wsdl20.WSDLComponent;
+import org.apache.woden.wsdl20.xml.BindingElement;
+import org.apache.woden.wsdl20.xml.BindingFaultElement;
+import org.apache.woden.wsdl20.xml.BindingMessageReferenceElement;
+import org.apache.woden.wsdl20.xml.BindingOperationElement;
 import org.apache.woden.wsdl20.xml.FaultReferenceElement;
 import org.apache.woden.wsdl20.xml.InterfaceElement;
 import org.apache.woden.wsdl20.xml.InterfaceFaultElement;
@@ -73,6 +82,7 @@
         
         buildElementsAndTypes();
         buildInterfaces();
+        buildBindings();
     }
     
     /*
@@ -148,8 +158,8 @@
     }
     
     /*
-     * Extract the interface components and child components from the
-     * the InterfaceElement objects.
+     * Initialize the Interface component and its child components from the
+     * InterfaceElement and its child elements.
      */
     private void buildInterfaces()
     {
@@ -160,7 +170,6 @@
             buildProperties(intImpl.getPropertyElements(), intImpl);
             buildInterfaceFaults(intImpl);
             buildInterfaceOperations(intImpl);
-            
         }
     }
     
@@ -170,6 +179,7 @@
         for(int i=0; i<faults.length; i++)
         {
             InterfaceFaultImpl fault = (InterfaceFaultImpl)faults[i];
+            buildProperties(fault.getPropertyElements(), fault);
             QName qname = fault.getElementName();
             if(qname != null)
             {
@@ -184,6 +194,7 @@
         for(int i=0; i<operations.length; i++)
         {
             InterfaceOperationImpl oper = 
(InterfaceOperationImpl)operations[i];
+            buildProperties(oper.getPropertyElements(), oper);
             buildInterfaceFaultReferences(oper);
             buildInterfaceMessageReferences(oper);
         }
@@ -195,6 +206,7 @@
         for(int i=0; i<faultRefs.length; i++)
         {
             InterfaceFaultReferenceImpl faultRef = 
(InterfaceFaultReferenceImpl)faultRefs[i];
+            buildProperties(faultRef.getPropertyElements(), faultRef);
             QName qname = faultRef.getRef();
             if(qname != null)
             {
@@ -210,6 +222,7 @@
         for(int i=0; i<messages.length; i++)
         {
             InterfaceMessageReferenceImpl message = 
(InterfaceMessageReferenceImpl)messages[i];
+            buildProperties(message.getPropertyElements(), message);
             
if(Constants.NMTOKEN_ELEMENT.equals(message.getMessageContentModel()))
             {
                 QName qname = message.getElementName();
@@ -221,6 +234,65 @@
         }
     }
     
+    /*
+     * Initialize the Binding component and its child components from the
+     * BindingElement and its child elements.
+     */
+    private void buildBindings()
+    {
+        BindingElement[] bindingEls = fDesc.getBindingElements();
+        for(int i=0; i<bindingEls.length; i++)
+        {
+            BindingImpl bindImpl = (BindingImpl)bindingEls[i];
+            buildProperties(bindImpl.getPropertyElements(), bindImpl);
+            buildBindingFaults(bindImpl);
+            buildBindingOperations(bindImpl);
+        }
+    }
+    
+    private void buildBindingFaults(BindingImpl binding)
+    {
+        BindingFaultElement[] bindFaults = binding.getBindingFaultElements();
+        for(int i=0; i<bindFaults.length; i++)
+        {
+            BindingFaultImpl bindFault = (BindingFaultImpl)bindFaults[i];
+            buildProperties(bindFault.getPropertyElements(), bindFault);
+        }
+    }
+    
+    private void buildBindingOperations(BindingImpl binding)
+    {
+        BindingOperationElement[] operations = 
binding.getBindingOperationElements();
+        for(int i=0; i<operations.length; i++)
+        {
+            BindingOperationImpl oper = (BindingOperationImpl)operations[i];
+            buildProperties(oper.getPropertyElements(), oper);
+            buildBindingFaultReferences(oper);
+            buildBindingMessageReferences(oper);
+        }
+    }
+    
+    private void buildBindingFaultReferences(BindingOperationImpl oper)
+    {
+        FaultReferenceElement[] faultRefs = oper.getFaultReferenceElements();
+        for(int i=0; i<faultRefs.length; i++)
+        {
+            BindingFaultReferenceImpl faultRef = 
(BindingFaultReferenceImpl)faultRefs[i];
+            buildProperties(faultRef.getPropertyElements(), faultRef);
+            //The Intf fault reference has been initialized in reader using 
'ref' and 'messageLabel'
+        }
+    }
+    
+    private void buildBindingMessageReferences(BindingOperationImpl oper)
+    {
+        BindingMessageReferenceElement[] messages = 
oper.getMessageReferenceElements();
+        for(int i=0; i<messages.length; i++)
+        {
+            BindingMessageReferenceImpl message = 
(BindingMessageReferenceImpl)messages[i];
+            buildProperties(message.getPropertyElements(), message);
+            //The Intf msg reference has been initialized in reader using 
'messageLabel'
+        }
+    }
     private void buildProperties(PropertyElement[] propEls, WSDLComponent 
parent)
     {
         for(int i=0; i<propEls.length; i++)

Modified: 
incubator/woden/java/src/org/apache/woden/internal/wsdl20/BindingFaultImpl.java
URL: 
http://svn.apache.org/viewcvs/incubator/woden/java/src/org/apache/woden/internal/wsdl20/BindingFaultImpl.java?rev=354674&r1=354673&r2=354674&view=diff
==============================================================================
--- 
incubator/woden/java/src/org/apache/woden/internal/wsdl20/BindingFaultImpl.java 
(original)
+++ 
incubator/woden/java/src/org/apache/woden/internal/wsdl20/BindingFaultImpl.java 
Tue Dec  6 18:42:54 2005
@@ -83,5 +83,9 @@
      *  Non-API implementation methods
      * ************************************************************/
     
+    public void setInterfaceFaultElement(InterfaceFaultElement intFault)
+    {
+        fInterfaceFault = (InterfaceFaultImpl)intFault;
+    }
 
 }

Modified: 
incubator/woden/java/src/org/apache/woden/internal/wsdl20/BindingFaultReferenceImpl.java
URL: 
http://svn.apache.org/viewcvs/incubator/woden/java/src/org/apache/woden/internal/wsdl20/BindingFaultReferenceImpl.java?rev=354674&r1=354673&r2=354674&view=diff
==============================================================================
--- 
incubator/woden/java/src/org/apache/woden/internal/wsdl20/BindingFaultReferenceImpl.java
 (original)
+++ 
incubator/woden/java/src/org/apache/woden/internal/wsdl20/BindingFaultReferenceImpl.java
 Tue Dec  6 18:42:54 2005
@@ -36,7 +36,7 @@
     private QName fRef = null;
     private Direction fDirection = null;
     private MessageLabel fMessageLabel = null;
-    private InterfaceFaultReference fInterfaceFaultRef = null;
+    private InterfaceFaultReferenceImpl fInterfaceFaultRef = null; //matches 
msg label and ref
 
     /* ************************************************************
      *  BindingFaultReference interface methods (i.e. WSDL Component model)
@@ -105,5 +105,17 @@
     /* ************************************************************
      *  Non-API implementation methods
      * ************************************************************/
+    
+    //Dereferenced in reader to an Int Fault Ref using the 'ref' and 
'messageLabel' attributes
+    public void setInterfaceFaultReferenceElement(FaultReferenceElement 
faultRef)
+    {
+        fInterfaceFaultRef = (InterfaceFaultReferenceImpl)faultRef;
+    }
+    
+    //The BindingFaultReference componet refers to an InterfaceFaultReference
+    public void setInterfaceFaultReference(InterfaceFaultReference faultRef)
+    {
+        fInterfaceFaultRef = (InterfaceFaultReferenceImpl)faultRef;
+    }
     
 }

Modified: 
incubator/woden/java/src/org/apache/woden/internal/wsdl20/BindingImpl.java
URL: 
http://svn.apache.org/viewcvs/incubator/woden/java/src/org/apache/woden/internal/wsdl20/BindingImpl.java?rev=354674&r1=354673&r2=354674&view=diff
==============================================================================
--- incubator/woden/java/src/org/apache/woden/internal/wsdl20/BindingImpl.java 
(original)
+++ incubator/woden/java/src/org/apache/woden/internal/wsdl20/BindingImpl.java 
Tue Dec  6 18:42:54 2005
@@ -293,5 +293,9 @@
         }
         return operation;
     }
+    
+    public void setInterfaceElement(InterfaceElement intface) {
+        fInterface = (InterfaceImpl)intface;
+    }
 
 }

Modified: 
incubator/woden/java/src/org/apache/woden/internal/wsdl20/BindingMessageReferenceImpl.java
URL: 
http://svn.apache.org/viewcvs/incubator/woden/java/src/org/apache/woden/internal/wsdl20/BindingMessageReferenceImpl.java?rev=354674&r1=354673&r2=354674&view=diff
==============================================================================
--- 
incubator/woden/java/src/org/apache/woden/internal/wsdl20/BindingMessageReferenceImpl.java
 (original)
+++ 
incubator/woden/java/src/org/apache/woden/internal/wsdl20/BindingMessageReferenceImpl.java
 Tue Dec  6 18:42:54 2005
@@ -20,6 +20,7 @@
 import org.apache.woden.wsdl20.enumeration.Direction;
 import org.apache.woden.wsdl20.enumeration.MessageLabel;
 import org.apache.woden.wsdl20.xml.BindingMessageReferenceElement;
+import org.apache.woden.wsdl20.xml.InterfaceMessageReferenceElement;
 
 /**
  * This class represents the BindingMessageReference component of the 
@@ -34,7 +35,7 @@
 {
     private Direction fDirection = null;
     private MessageLabel fMessageLabel = null;
-    private InterfaceMessageReference fInterfaceMsgRef = null;
+    private InterfaceMessageReferenceImpl fInterfaceMsgRef = null;
 
     /* ************************************************************
      *  BindingMessageReference interface methods (i.e. WSDL Component model)
@@ -90,4 +91,8 @@
      *  Non-API implementation methods
      * ************************************************************/
     
+    public void 
setInterfaceMessageReferenceElement(InterfaceMessageReferenceElement intMsgRef)
+    {
+        fInterfaceMsgRef = (InterfaceMessageReferenceImpl)intMsgRef;
+    }
 }

Modified: 
incubator/woden/java/src/org/apache/woden/internal/wsdl20/BindingOperationImpl.java
URL: 
http://svn.apache.org/viewcvs/incubator/woden/java/src/org/apache/woden/internal/wsdl20/BindingOperationImpl.java?rev=354674&r1=354673&r2=354674&view=diff
==============================================================================
--- 
incubator/woden/java/src/org/apache/woden/internal/wsdl20/BindingOperationImpl.java
 (original)
+++ 
incubator/woden/java/src/org/apache/woden/internal/wsdl20/BindingOperationImpl.java
 Tue Dec  6 18:42:54 2005
@@ -156,4 +156,8 @@
      *  Non-API implementation methods
      * ************************************************************/
     
+    public void setInterfaceOperationElement(InterfaceOperationElement intOp)
+    {
+        fInterfaceOperation = (InterfaceOperationImpl)intOp;
+    }
 }

Modified: 
incubator/woden/java/src/org/apache/woden/wsdl20/xml/FaultReferenceElement.java
URL: 
http://svn.apache.org/viewcvs/incubator/woden/java/src/org/apache/woden/wsdl20/xml/FaultReferenceElement.java?rev=354674&r1=354673&r2=354674&view=diff
==============================================================================
--- 
incubator/woden/java/src/org/apache/woden/wsdl20/xml/FaultReferenceElement.java 
(original)
+++ 
incubator/woden/java/src/org/apache/woden/wsdl20/xml/FaultReferenceElement.java 
Tue Dec  6 18:42:54 2005
@@ -25,6 +25,9 @@
  * child elements of a WSDL interface &lt;operation&gt; or 
  * binding &lt;operation&gt;. 
  * 
+ * TODO create separate interfaces for InterfaceFaultRef and BindingFaultRef 
and
+ * add getter methods that dereference the 'ref' qname to the appropriate 
Element type.
+ * 
  * @author [EMAIL PROTECTED]
  */
 public interface FaultReferenceElement extends DocumentableElement,
@@ -36,6 +39,8 @@
      */
     public void setRef(QName faultQName);
     public QName getRef();
+    
+    //TODO getter method that de-references the 'ref' qname
     
     public void setMessageLabel(MessageLabel msgLabel);
     public MessageLabel getMessageLabel();



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

Reply via email to