axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Amila Chinthaka Suriarachchi (JIRA)" <j...@apache.org>
Subject [jira] Commented: (AXIS2-4197) Issue with toEnvelope(..) and toOm(..) in Axis 2 generated code for toOM taking in same paramter types
Date Mon, 06 Apr 2009 13:29:13 GMT

    [ https://issues.apache.org/jira/browse/AXIS2-4197?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12696077#action_12696077
] 

Amila Chinthaka Suriarachchi commented on AXIS2-4197:
-----------------------------------------------------

I could reproduce your problem. But I think it requires a method singnature change to fix
that. 
As a work around either you may change the generated code or wsdl if possible.
I'll try to fix this once I get a time to look at all the places which uses toOM method.

> 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, 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("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.


Mime
View raw message