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 "Jayachandra Sekhara Rao Sunkara (JIRA)" <ax...@ws.apache.org> on 2005/08/24 11:45:08 UTC

[jira] Commented: (AXIS-2193) In the case where single portType is being bound to different bindings. The generated stubs for all bindings do not have code implementing the operations of the binding

    [ http://issues.apache.org/jira/browse/AXIS-2193?page=comments#action_12319830 ] 

Jayachandra Sekhara Rao Sunkara commented on AXIS-2193:
-------------------------------------------------------

In SymbolTable.java when the parameters are getting populated for each binding entry's operation, the way the iterator over operations is gotten looks like this

                    Binding binding = bEntry.getBinding();
                    Collection bindOperations = bEntry.getOperations();
                    PortType portType = binding.getPortType();
                    HashMap parameters = new HashMap();
>>                Iterator operations =
                            portType.getOperations().iterator();

                    while (operations.hasNext()) {
                        Operation operation =
                                (Operation) operations.next();
                    ....
                    ....
                    Parameters parms = getOperationParameters(operation,
                                namespace, bEntry);
                        parameters.put(operation, parms);
                    }
                    bEntry.setParameters(parameters);

Note the portType from which operations are gotten is the portType datamember associated with the binding. Lets call this portType as ALPHA for future discussion.

Later at the time of writing out signatures inside a java stub for all the operations of a binding the way the operations vector is gotten looks like 

                   BindingEntry bEntry = (BindingEntry) entry;
                    Binding binding = bEntry.getBinding();
                    PortTypeEntry ptEntry = symbolTable.getPortTypeEntry(
                            binding.getPortType().getQName());
                    PortType portType = ptEntry.getPortType();
>>               Iterator operations =
                            portType.getOperations().iterator();

                    while (operations.hasNext()) {
                        Operation operation =
                                (Operation) operations.next();
                         ....
                         ....
                         Parameters parameters =
                                bEntry.getParameters(operation);
                         ....
                    }


Note the portType from which the operations are gotten is the datamember associated with the PortTypeEntry object, ptEntry. Lets call this BETA for future discussion.

Now when I debugged inside Eclipse I found out 'ALPHA' and 'BETA' are two entirely different objects having different debug id. And therefore, also the elements of the operations vector have different ids in both the cases.

So during populating parameters one set of objects are used as key values, but while retrieving the parameters a different set of objects are being used as keys, so 'parameters' object is coming out as null for every operation in the 'plainBinding' binding entry case. Hence, subsequently no signature is being written out in the stub file that is emitted out.

The resolution to this bug can be to get the handle to operations vector in a consistent way at both the places (i.e. at populating parameters and at retrieving parameters).

> In the case where single portType is being bound to different bindings. The generated stubs for all bindings do not have code implementing the operations of the binding
> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>          Key: AXIS-2193
>          URL: http://issues.apache.org/jira/browse/AXIS-2193
>      Project: Apache Axis
>         Type: Bug
>     Reporter: Bug Reporter
>     Assignee: Jayachandra Sekhara Rao Sunkara

>
> In the case where single portType is being bound to different bindings. The generated stubs for all bindings do not have code implementing the operations of the binding.
> I have a wsdl which had three bindings each referencing the same portType as shown below
> [WSDL Extract begin]
> <!-- PORT TYPE -->
> <wsdl:portType name="wssprocessorVi_Document">
> - <wsdl:operation name="apply">
>   <wsdl:input message="tns:applyIn_doc" /> 
>   <wsdl:output message="tns:applyOut_doc" /> 
>   </wsdl:operation>
> - <wsdl:operation name="getKsAliases">
>   <wsdl:input message="tns:getKsAliasesIn_doc" /> 
>   <wsdl:output message="tns:getKsAliasesOut_doc" /> 
>   </wsdl:operation>
> - <wsdl:operation name="getKsCertDNs">
>   <wsdl:input message="tns:getKsCertDNsIn_doc" /> 
>   <wsdl:output message="tns:getKsCertDNsOut_doc" /> 
>   </wsdl:operation>
> - <wsdl:operation name="getKsViews">
>   <wsdl:input message="tns:getKsViewsIn_doc" /> 
>   <wsdl:output message="tns:getKsViewsOut_doc" /> 
>   </wsdl:operation>
> - <wsdl:operation name="verify">
>   <wsdl:input message="tns:verifyIn_doc" /> 
>   <wsdl:output message="tns:verifyOut_doc" /> 
>   </wsdl:operation>
> </wsdl:portType>
> <!-- FIRST BINDING -->
> <wsdl:binding name="plainBinding" type="wssprocessorVi_Document">
>   <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" /> 
> - <wsdl:operation name="apply">
>   <soap:operation soapAction="" /> 
> - <wsdl:input>
>   <soap:body use="literal" parts="parameters" /> 
>   </wsdl:input>
> - <wsdl:output>
>   <soap:body use="literal" /> 
>   </wsdl:output>
>   </wsdl:operation>
> + <wsdl:operation name="getKsAliases">
>   <soap:operation soapAction="" /> 
> - <wsdl:input>
>   <soap:body use="literal" parts="parameters" /> 
>   </wsdl:input>
> - <wsdl:output>
>   <soap:body use="literal" /> 
>   </wsdl:output>
>   </wsdl:operation>
> + <wsdl:operation name="getKsCertDNs">
>   <soap:operation soapAction="" /> 
> - <wsdl:input>
>   <soap:body use="literal" parts="parameters" /> 
>   </wsdl:input>
> - <wsdl:output>
>   <soap:body use="literal" /> 
>   </wsdl:output>
>   </wsdl:operation>
> + <wsdl:operation name="getKsViews">
>   <soap:operation soapAction="" /> 
> - <wsdl:input>
>   <soap:body use="literal" parts="parameters" /> 
>   </wsdl:input>
> - <wsdl:output>
>   <soap:body use="literal" /> 
>   </wsdl:output>
>   </wsdl:operation>
> + <wsdl:operation name="verify">
>   <soap:operation soapAction="" /> 
> - <wsdl:input>
>   <soap:body use="literal" parts="parameters" /> 
>   </wsdl:input>
> - <wsdl:output>
>   <soap:body use="literal" /> 
>   </wsdl:output>
>   </wsdl:operation>
> </wsdl:binding>
> <!-- SECOND BINDING -->
> - <wsdl:binding name="sslBinding" type="wssprocessorVi_Document">
>   <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" /> 
> + <wsdl:operation name="apply">
>   <soap:operation soapAction="" /> 
> - <wsdl:input>
>   <soap:body use="literal" parts="parameters" /> 
>   </wsdl:input>
> - <wsdl:output>
>   <soap:body use="literal" /> 
>   </wsdl:output>
>   </wsdl:operation>
> + <wsdl:operation name="getKsAliases">
>   <soap:operation soapAction="" /> 
> - <wsdl:input>
>   <soap:body use="literal" parts="parameters" /> 
>   </wsdl:input>
> - <wsdl:output>
>   <soap:body use="literal" /> 
>   </wsdl:output>
>   </wsdl:operation>
> + <wsdl:operation name="getKsCertDNs">
>   <soap:operation soapAction="" /> 
> - <wsdl:input>
>   <soap:body use="literal" parts="parameters" /> 
>   </wsdl:input>
> - <wsdl:output>
>   <soap:body use="literal" /> 
>   </wsdl:output>
>   </wsdl:operation>
> + <wsdl:operation name="getKsViews">
>   <soap:operation soapAction="" /> 
> - <wsdl:input>
>   <soap:body use="literal" parts="parameters" /> 
>   </wsdl:input>
> - <wsdl:output>
>   <soap:body use="literal" /> 
>   </wsdl:output>
>   </wsdl:operation>
> + <wsdl:operation name="verify">
>   <soap:operation soapAction="" /> 
> - <wsdl:input>
>   <soap:body use="literal" parts="parameters" /> 
>   </wsdl:input>
> - <wsdl:output>
>   <soap:body use="literal" /> 
>   </wsdl:output>
>   </wsdl:operation>
> </wsdl:binding>
> <!-- similarly a THIRD BINDING, not shown here -->
> [WSDL Extract end]
> In the generated stubs for 'sslBinding' i.e. SslBindingStub.java all the five methods are implemented but in the PlainBindingStub.java apart from the boiler plate code, there is no implementation for any of the five operations.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira