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 <operation> or
* binding <operation>.
*
+ * 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]