2016-05-23 8 views
0

У меня есть классы Scala, которые я создал с помощью Thrift (Scrooge). Теперь мне нужно как-то экземпляр тех, как класс TBase, б/с TSerializer класс нуждается в этом в качестве входных данныхСоздать объекты TBase из классов, созданных Thrift, в Scala

Это мой подход:

def createTestBinary(): String = { 
    val proto = new TBinaryProtocol.Factory 
    val err = new ClientError{} 
    val binary = new TSerializer().serialize(err) 
    "" 
    } 

ClientError это сгенерированный класс. Как я могу создать экземпляр или обернуть его как член TBase?

Любые идеи, как это сделать? Заранее спасибо!

ответ

1

Вам не нужен TSerializer, это для бережливости береговой линии, а не для классов, сгенерированных scrooge. Вам нужно сделать что-то вроде этого, вместо:

val transport = TMemoryBuffer(1024) // or whatever 
err.write(new TBinaryProtocol(transport)) 
val binary = transport.getArray 
0

для Скрудж сгенерированных классов, которые вы можете использовать JsonThriftSerializer:

import com.twitter.scrooge.JsonThriftSerializer 
val serializer = JsonThriftSerializer(<scrooge-generated-classes>._codec) 
Json.toJson(serializer.toString(<scrooge-generated-classes>))