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 Davanum Srinivas <di...@yahoo.com> on 2003/07/09 20:53:16 UTC
RE: cvs commit: xml-axis/java/src/org/apache/axis/wsdl/symbolTabl e SymbolTable.java
Hey Tom,
Welcome Back (or are u just lurking?)
inHeader needs operation.getBindingInput() and outHeader needs operation.getBindingOutput :) :)
thanks,
dims
--- Tom Jordahl <to...@macromedia.com> wrote:
> + if(param.isInHeader()) {
> + QName qName =
> getBindedParameterName(operation.getBindingInput().getExtensibilityElements(), param);
> + param.setQName(qName);
> + } else if (param.isOutHeader()) {
> + QName qName =
> getBindedParameterName(operation.getBindingOutput().getExtensibilityElements(), param);
> + param.setQName(qName);
> + }
>
>
> Isn't this if statement the same for both forks?
> Should it be
> if (param.isInHeader() || param.isOutHeader() ) {
>
> Just wondering if I missed something...
>
> --
> Tom Jordahl
> Macromedia Server Development
>
> -----Original Message-----
> From: dims@apache.org [mailto:dims@apache.org]
> Sent: Wednesday, July 09, 2003 2:37 PM
> To: xml-axis-cvs@apache.org
> Subject: cvs commit: xml-axis/java/src/org/apache/axis/wsdl/symbolTable SymbolTable.java
>
> dims 2003/07/09 11:37:00
>
> Modified: java/src/org/apache/axis/wsdl/symbolTable SymbolTable.java
> Log:
> Fix for Bug 20054 - Parameters namespaces not taken into account by WSDL2Java
>
> Revision Changes Path
> 1.76 +92 -29 xml-axis/java/src/org/apache/axis/wsdl/symbolTable/SymbolTable.java
>
> Index: SymbolTable.java
> ===================================================================
> RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/symbolTable/SymbolTable.java,v
> retrieving revision 1.75
> retrieving revision 1.76
> diff -u -r1.75 -r1.76
> --- SymbolTable.java 22 Apr 2003 19:36:16 -0000 1.75
> +++ SymbolTable.java 9 Jul 2003 18:36:59 -0000 1.76
> @@ -94,6 +94,7 @@
> import javax.wsdl.extensions.soap.SOAPHeader;
> import javax.wsdl.extensions.soap.SOAPHeaderFault;
> import javax.wsdl.extensions.UnknownExtensibilityElement;
> +import javax.wsdl.extensions.ExtensibilityElement;
> import javax.wsdl.factory.WSDLFactory;
> import javax.wsdl.xml.WSDLReader;
> import javax.xml.namespace.QName;
> @@ -1543,19 +1544,8 @@
> new String[] {partName,
> opName}));
> }
> - setMIMEInfo(param, bindingEntry == null ? null :
> - bindingEntry.getMIMEInfo(opName, partName));
> - if (bindingEntry != null &&
> - bindingEntry.isInHeaderPart(opName, partName)) {
> - param.setInHeader(true);
> - }
> - if (bindingEntry != null &&
> - bindingEntry.isOutHeaderPart(opName, partName)) {
> - param.setOutHeader(true);
> - }
> -
> + fillParamInfo(param, bindingEntry, opName, partName);
> v.add(param);
> -
> continue; // next part
> }
>
> @@ -1636,14 +1626,7 @@
> Parameter p = new Parameter();
> p.setQName(elem.getName());
> p.setType(elem.getType());
> - setMIMEInfo(p, bindingEntry == null ? null :
> - bindingEntry.getMIMEInfo(opName, partName));
> - if (bindingEntry.isInHeaderPart(opName, partName)) {
> - p.setInHeader(true);
> - }
> - if (bindingEntry.isOutHeaderPart(opName, partName)) {
> - p.setOutHeader(true);
> - }
> + fillParamInfo(p, bindingEntry, opName, partName);
> v.add(p);
> }
> } else {
> @@ -1657,20 +1640,100 @@
> } else if (elementName != null) {
> param.setType(getElement(elementName));
> }
> - setMIMEInfo(param, bindingEntry == null ? null :
> - bindingEntry.getMIMEInfo(opName, partName));
> - if (bindingEntry.isInHeaderPart(opName, partName)) {
> - param.setInHeader(true);
> - }
> - if (bindingEntry.isOutHeaderPart(opName, partName)) {
> - param.setOutHeader(true);
> - }
> -
> + fillParamInfo(param, bindingEntry, opName, partName);
> v.add(param);
> }
> } // while
>
> } // getParametersFromParts
> +
> + private void fillParamInfo(Parameter param, BindingEntry bindingEntry, String opName,
> String partName) {
> + setMIMEInfo(param, bindingEntry == null ? null :
> + bindingEntry.getMIMEInfo(opName, partName));
> + boolean isHeader = false;
> + if (bindingEntry != null && bindingEntry.isInHeaderPart(opName, partName)) {
> + isHeader = true;
> + param.setInHeader(true);
> + }
> + if (bindingEntry != null && bindingEntry.isOutHeaderPart(opName, partName)) {
> + isHeader = true;
> + param.setOutHeader(true);
> + }
> +
> + if(isHeader && bindingEntry.getBinding() != null) {
> + List list = bindingEntry.getBinding().getBindingOperations();
> + for(int i=0; list != null && i<list.size();i++){
> + BindingOperation operation = (BindingOperation)list.get(i);
> + if(operation.getName().equals(opName)) {
> + if(param.isInHeader()) {
> + QName qName =
> getBindedParameterName(operation.getBindingInput().getExtensibilityElements(), param);
> + param.setQName(qName);
> + } else if (param.isOutHeader()) {
> + QName qName =
> getBindedParameterName(operation.getBindingOutput().getExtensibilityElements(), param);
> + param.setQName(qName);
> + }
> + }
> + }
> + }
> + }
> +
> + private QName getBindedParameterName(List elements, Parameter p) {
> + // If the parameter can either be in the message header or in the
> + // message body.
> + // When it is in the header, there may be a SOAPHeader (soap:header)
> + // with its part name. The namespace used is the one of the soap:header.
> + // When it is in the body, if there is a SOAPBody with its part name,
> + // the namespace used is the one of this soap:body.
> + //
> + // If the parameter is in the body and there is a soap:body with no parts,
> + // its namespace is used for the parameter.
> +
> + QName paramName = null;
> + String defaultNamespace = null;
> + String parameterPartName = p.getName();
> + for (Iterator k = elements.iterator(); k.hasNext();) {
> + ExtensibilityElement element = (ExtensibilityElement) k.next();
> + if (element instanceof SOAPBody) {
> + SOAPBody bodyElement = (SOAPBody) element;
> + List parts = bodyElement.getParts();
> + if ((parts == null) || (parts.size() == 0)) {
> + defaultNamespace = bodyElement.getNamespaceURI();
> + } else {
> + boolean found = false;
> + for (Iterator l = parts.iterator(); l.hasNext();) {
> + Object o = l.next();
> + if(o instanceof Part) {
> + Part part = (Part) o;
> + if (parameterPartName.equals(part.getName())) {
> + paramName = new QName(bodyElement.getNamespaceURI(),
> parameterPartName);
> + found = true;
> + break;
> + }
> + }
> + }
> + if (found)
> + break;
> + }
> + } else if (element instanceof SOAPHeader) {
> + SOAPHeader headerElement = (SOAPHeader) element;
> + String part = headerElement.getPart();
> + if (parameterPartName.equals(part)) {
> + paramName = new QName(headerElement.getNamespaceURI(),
> parameterPartName);
> + break;
> + }
> + }
> + }
> +
> + if ((paramName == null) && (!p.isInHeader()) && (!p.isOutHeader())) {
> + if (defaultNamespace != null) {
> + paramName = new QName(defaultNamespace, parameterPartName);
> + } else {
> + paramName = p.getQName();
> + }
> + }
> + return paramName;
> + }
> +
>
=== message truncated ===
=====
Davanum Srinivas - http://webservices.apache.org/~dims/
__________________________________
Do you Yahoo!?
SBC Yahoo! DSL - Now only $29.95 per month!
http://sbc.yahoo.com