2015-11-08 3 views
2

Я пытаюсь скомпилировать простой файл protobuf для Scala с помощью ScalaPBC от Trueacord. Я ограничен Scala 2.10, и результирующие классы не могут быть скомпилированы из-за ограничения реализации на классы case («классы case не могут иметь более 22 параметров»).Составление протокольных буферов с помощью ScalaPBC для Scala 2.10?

Я использую Trueabord's scalapb-runtime и compilerplugin для Scala 2.10 версии 0.4.20 и protobuf-java версии 2.6.1.

Это является Protobuf я компиляции (поля имеют никакого значения на самом деле):

message Person { 
    required string name = 1; 
    required int32 id = 2; 
    optional string email = 3; 
    optional string email1 = 4; 
    optional string email2 = 5; 
    optional string email3 = 6; 
    optional string email4 = 7; 
    optional string email5 = 8; 
    optional string email6 = 9; 
    optional string email7 = 10; 
    optional string email8 = 11; 
    optional string email9 = 12; 
    optional string email0 = 13; 
    optional string emaila = 14; 
    optional string emails = 15; 
    optional string emaild = 16; 
    optional string emailf = 17; 
    optional string emailg = 18; 
    optional string emailh = 19; 
    optional string emailj = 20; 
    optional string emailk = 21; 
    optional string emaill = 22; 
    optional string emailz = 23; 
    optional string emailx = 24; 
    optional string emailc = 25; 
    optional string emailv = 26; 
    optional string emailb = 27; 
    optional string emailn = 28; 
    optional string emailm = 29; 
    optional string emailkk = 30; 
} 

Есть ли способ, чтобы скомпилировать выше Protobuf в Scala код, который работает с 2.10 Scala?

ответ

1

К сожалению, нет. В Scala 2.10 ScalaPB ограничивается сообщениями с 22 полями или меньше.

Если вы можете изменить структуру своего буфера протокола, рассмотрите возможность использования вложенных сообщений или повторяющихся полей, чтобы уменьшить количество полей, которые у вас есть в каждом сообщении.