[ https://issues.apache.org/jira/browse/AXIS2-4197?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Vijeya Aravindan updated AXIS2-4197: ------------------------------------ Description: 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("", "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, " ", "removeLink"); /////////////////////////////////////////////// CULPRIT ////////////////////////////////////////////////// org.apache.axiom.om.OMNamespace namespace = factory.createOMNamespace("", 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="">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. was: 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. > 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: To_AXIS_JIRA.rar, To_AXIS_JIRA.zip > > 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("", > "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, > " > ", > "removeLink"); /////////////////////////////////////////////// CULPRIT > ////////////////////////////////////////////////// > org.apache.axiom.om.OMNamespace namespace = factory.createOMNamespace("", > 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="">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.