[ 
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

Reply via email to