[ 
https://issues.apache.org/jira/browse/THRIFT-5085?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17031024#comment-17031024
 ] 

Jens Geyer commented on THRIFT-5085:
------------------------------------

You can't do it that way, because the client is for a different service. Even 
if the methid names accidentally match like with {{findPosition}}, there is no 
guarantee that the call succeeds. The argument list may be differnt, there may 
be different return data or the throws clause may not match. From the interface 
contract, these are two different services.

But in that case you still have an option left. Thrift supports inheritance at 
the service level, like so:

{code}
service PositionService {
PositionDTO findPosition(1:PositionInputDTO) throws (1: 
PositionServiceException e);
}

service PositionServiceV2 extends PositionService {
OwnerStoresListDTO listPositions(1:ListPositionInputDTO)  throws 
(1:PositionServiceException e);
}
{code}




 

 

> How do I execute a call to a server that supports multiple versions?
> --------------------------------------------------------------------
>
>                 Key: THRIFT-5085
>                 URL: https://issues.apache.org/jira/browse/THRIFT-5085
>             Project: Thrift
>          Issue Type: Question
>          Components: Go - Compiler, Go - Library
>    Affects Versions: 0.13.0
>         Environment: OS:macOS
> On the client-side, I've got auto-generated code for go
> On the server-side, I've got auto-generated code for java 
>            Reporter: Andres Camilo Martinez Cano
>            Priority: Major
>             Fix For: 0.13.0
>
>
> Hi, my apologies beforehand If I say something strange or weird. I'm still 
> quite new to thrift but I love it so far.
> I have a thrift file that supports two services like so(both services use the 
> same structs):
> {code:java}
> service PositionService {
>  PositionDTO findPosition(1:PositionInputDTO) throws (1: 
> PositionServiceException e);
>  }
> service PositionServiceV2 {
>  PositionDTO findPosition(1:PositionInputDTO) throws (1: 
> PositionServiceException e),
>  OwnerStoresListDTO listPositions(1:ListPositionInputDTO)  throws 
> (1:PositionServiceException e);
>  }
>  {code}
> What I'm currently trying to do is to call the method \{{listPositions from 
> the {{PositionServiceV2 }}but when I execute the call I keep receiving the 
> error message "Invalid method name: listPositions" which makes me think that 
> my call is being directed towards the PositionService even though I'm using 
> the PostionServiceV2Client to make the call for this. Please help I don't 
> know how to make this work. 
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to