Swift is good for this; also I have a fork that allows for annotating interfaces for structs and unions instead of just classes (https://github.com/bgould/swift) and I've made a pull request to the Swift team (https://github.com/facebook/swift/pull/257) but I'm not holding my breath because it seems that if you don't work at Facebook they can't hear you that well.

I've found that using interfaces for structs provides the flexibility needed for the original question. You can do the same with classes to but with interfaces you can use all your favorite Gang of Four stuff or whatever, and in case your existing data model doesn't match up with the Thrift model very well, using Java interfaces with builders make it easier to meet in the middle.

In any case, I agree that Swift is a good option for the original question in this thread. URL for Swift proper is here: http://github.com/facebook/swift, or you can find my fork at the URL referenced above

On 10/05/2015 08:41 PM, Stuart Reynolds wrote:
Kinda. Sorta.

Vanilla Thrift generates Java data classes that looks pretty beany to
me (they have the standard getters and setters). However, I've always
felt that there's a big downside to giving up control of your server
code - not least, you can't add any additional advanced bean
annotations (or any other kind of annotation) to you classes, nor can
you directly serialize third party classes not produced by Thrift.
This often leads to you wrap the serialization, which kinda defeats
many of the benefits having it automated and had me banging my head on
the table in dispair.

I've since been using Facebook's Swift project. This lets you
*generate* your thrift IDL from your *existing* server interfaces and
bean classes, but also maintain thirft's extremely efficient
serialization (via runtime class generation). The project has a few
design choices I've not a fan of (export classes but not interfaces,
has a HUGE set of dependencies, most unrelated to serialization), but
I've made a fork for scala to allow me to work around the bigger
issues. For me, its been hugely efficient at letting my export any old
interface or data structure with no data marshaling steps.

- Stuart



On Mon, Oct 5, 2015 at 4:37 PM, David Bennett <[email protected]> wrote:
I have some lumps of code in different languages that I'd like to get to talk 
to each other. The server is OK, but the client code makes heavy use of Java 
beans.

My question, to those who knows a lot more about Java than I do, is whether 
there is some clever way to get Thrift and Java beans to play together, or 
whether this is an invitation to getter/setter hell?

Regards
David M Bennett FACS

Andl - A New Database Language - andl.org




Reply via email to