[
https://issues.apache.org/jira/browse/AXIS2-4197?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Andreas Veithen reopened AXIS2-4197:
------------------------------------
The change introduced by r1052896 is incorrect. It modifies the name of the
root element for outgoing messages. However, that name is determined by the
WSDL and can't be chosen freely. The change causes outgoing messages to be
invalid (in the sense that they no longer conform to the WSDL), as described in
AXIS2-5147 and AXIS2-5249.
> 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: Axis2
> Issue Type: Bug
> Components: codegen
> Environment: Windows XP.
> Reporter: Vijeya Aravindan
> Priority: Blocker
> Fix For: 1.6.0
>
> 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.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]