[
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.