[ 
https://issues.apache.org/jira/browse/AXIS2-4197?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Vijeya Aravindan updated AXIS2-4197:
------------------------------------

    Attachment: To_AXIS_JIRA.rar

Thanks for responding to this issue.
Pls find the wsdl and xsd in the attachment. PLs make sure that the xsd and 
wsdl are present in the same folder.

Pls find the command passed to the wsdl2java in the text file named 
wsdl2java_command.txt

I have also attached the stub there. Open the stub and search for the term "bug"
I have given an explanation as to why its a bug.

Pls write back if you need more information.

Thanks
Vijeya

> Issue with toEnvelope(..) and toOm(..) in Axis 2 generated code for toOM 
> taking in same paramter types
> ------------------------------------------------------------------------------------------------------
>
>                 Key: AXIS2-4197
>                 URL: https://issues.apache.org/jira/browse/AXIS2-4197
>             Project: Axis 2.0 (Axis2)
>          Issue Type: Bug
>          Components: codegen
>         Environment: Windows XP. 
>            Reporter: Vijeya Aravindan
>            Priority: Blocker
>         Attachments: Axis 2 Code Gen Issue WASRE TISHelper Migration 
> Issues.htm, eclipseShots.bmp, To_AXIS_JIRA.rar
>
>   Original Estimate: 360h
>  Remaining Estimate: 360h
>
> Issue with Steps to re-produce:
> Say, I have 3 (could be 'n') operations in my wsdl. All 3 take the same param 
> type (say CustomParamterType) but internally have different business logic. 
> Step1- I take the wsdl and run the Axis 2 code gen as follows:
> Step 2- There would be '3' different public accessor methods generated in the 
> stub (which is good and expected) take in the same parameter type, then the 
> respective toOM() method generated. Say:
> public  com.ebay.trinity.identityservice.pres.wsdl.LinkIdentitiesResponseType 
> CreateLinkedIdentities(com.ebay.trinity.identityservice.pres.wsdl.LinkIdentitiesType
>  linkIdentities150) throws java.rmi.RemoteException
> public  com.ebay.trinity.identityservice.pres.wsdl.ModifyLinkResponseType 
> ModifyLink
> (com.ebay.trinity.identityservice.pres.wsdl.LinkIdentitiesType modifyLink140) 
> throws java.rmi.RemoteException
> public  com.ebay.trinity.identityservice.pres.wsdl.RemoveLinkResponseType 
> RemoveLink
> (com.ebay.trinity.identityservice.pres.wsdl.LinkIdentitiesType removeLink132) 
> throws java.rmi.RemoteException
> All the above take LinkIdentitiesType param.
> In side each of the method, an envolope is formed as follows (auto gen code 
> further)
> env = 
> toEnvelope(getFactory(_operationClient.getOptions().getSoapVersionURI()), 
> linkIdentities150,optimizeContent(new 
> javax.xml.namespace.QName("http://identity.ebay.com/trinity";, 
> "CreateLinkedIdentities")))
> private org.apache.axiom.soap.SOAPEnvelope 
> toEnvelope(org.apache.axiom.soap.SOAPFactory factory, 
> com.ebay.trinity.identityservice.pres.wsdl.LinkIdentitiesType param, boolean 
> optimizeContent) throws org.apache.axis2.AxisFault {
>  org.apache.axiom.soap.SOAPEnvelope envelope = factory.getDefaultEnvelope();
>         envelope.getBody().addChild(toOM(param, optimizeContent));
>         return envelope;
> } 
>  
> private org.apache.axiom.om.OMElement 
> toOM(com.ebay.trinity.identityservice.pres.wsdl.LinkIdentitiesType param, 
> boolean optimizeContent)
> throws org.apache.axis2.AxisFault {
>     try {
> ---------some code-------
>  JaxbRIDataSource source = new JaxbRIDataSource( 
> com.ebay.trinity.identityservice.pres.wsdl.LinkIdentitiesType.class,
>        param,
>        marshaller,
>        "http://identity.ebay.com/trinity";,
>        "removeLink"); /////////////////////////////////////////////// CULPRIT 
> //////////////////////////////////////////////////
>  org.apache.axiom.om.OMNamespace namespace = 
> factory.createOMNamespace("http://identity.ebay.com/trinity";,
>           null);
>  return factory.createOMElement(source, "removeLink", namespace); 
> /////////////////////////////////////////////// CULPRIT 
> //////////////////////////////////////////////////
>     } catch (javax.xml.bind.JAXBException bex){
>  throw org.apache.axis2.AxisFault.makeFault(bex);
>     }
> }
>  
> The above mehods are called by the following calls:
>  
> So whenever we make any af the above  *Link call, it used to form the 
> envelope as follows:
>  
> <?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";><soapenv:Header><axis2ns1:version
> xmlns:axis2ns1="http://identity.ebay.com/trinity";>1.2</axis2ns1:version></soapenv:Header><soapenv:Body><removeLink
>  /////////////////////////////////////////////// CULPRIT 
> //////////////////////////////////////////////////
> So all calls finally landing to the Server were being processed for 
> removeLink. 
>  
> For now, I can fix the aut-generated code for the above methods which takes a 
> extra parameter called apiName which can be passed around without stuff like 
> removeLink  & createIdentity being hardcoded. The DISADVANTGE IS THAT we need 
> to have a static stub version which is checked in our code base which can be 
> used in our build time. This is AVOID us from integrating codeGen within our 
> ANT script.
> As a dev persion, the problem seems to be:
>  
> Lets consider *Link calls..All these above 3 calls take LinkIdentities param. 
> So Axis generates common toEnvelope method which takes LinkIdentities param. 
> Now it should create 4 different "toOM" methods for the following
> CreateLinkedIdentities
> ModifyLiink
> ModifyLiinkReturnGuid
> RemoveLink
>  
> But some how it creates just one method and inside this, the RemoveLink is 
> always hardcoded.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to