[
https://issues.apache.org/jira/browse/THRIFT-2157?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14380765#comment-14380765
]
Iker Jimenez commented on THRIFT-2157:
--------------------------------------
[~dvdreddy]I guess it depends on how you are planning to change the code
generator :)
I tried to make it return a TException instead of TBase but that wouldn't be
correct either. The problem is with the call to
AsyncProcessFunction.sendResponse, which currently only takes a TBase.
In the current implementation all that is required is for the submitted object
to implement a write method. We have actually patched it that way ourselves
(make TApplicationException implement TBase but just provide an implementation
for the write method) until a permanent fix for this issue is released.
So, you would need:
1. Change code generator to not cast TApplicationException to TBase
2. Overload sendResponse to take also a TApplicationException (or a superclass)
3. Somewhere in the hierarchy of TApplicationException (probably on the same
class that you take in the overloaded sendResponse) implement at least a write
method.
High level this is how I see this other approach, which is not that different
from making TApplicationException implement TBase...
A bit unrelated, but would it make more sense for TException to implement TBase
instead of TApplicationException?
Iker.
> generated code would cause ClassCastException
> ---------------------------------------------
>
> Key: THRIFT-2157
> URL: https://issues.apache.org/jira/browse/THRIFT-2157
> Project: Thrift
> Issue Type: Bug
> Components: Java - Compiler
> Affects Versions: 0.9.1
> Reporter: Dave Brosius
> Priority: Trivial
>
> Looking at the thrift generated code for cassandra, i'm seeing
> msg = (org.apache.thrift.TBase)new
> org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR,
> e.getMessage());
> as seen here
> https://git-wip-us.apache.org/repos/asf?p=cassandra.git;a=blob;f=interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java;h=837acfc0e964249fd62720420e8f1f85d966f1a3;hb=8f202895ab9e17c3d6bd4965924fd5f1ffc27f94#l6095
> i don't see how TApplicationException can be cast to TBase, and so i'd expect
> a ClassCastException there.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)