2016-05-24 13 views
0

私はClassAをJavaで作成していますが、私はavroレコードの一部を作成できないカスタム注釈を持っています。私はカスタムJavaクラスを返すavroでプロトコルrpcを定義したいと思います。avroのJavaクラスへの参照方法

のような何か:

@namespace("org.test.avro.service") protocol TestService { 
org.test.avro.domain.ClassA methodA(); } 

それは言うorg.apache.avro.compiler.idl.ParseException:不定名 'org.test.avro.domain.ClassA'

答えて

0
あなたがする必要があります

Avro定義で使用するためにJavaクラスをAvroレコードとして表します。クラスとサービスが同じ名前空間を共有する場合、レコードは同じプロトコル定義で定義できますが、名前空間が異なるため、別のavdlファイルで定義します。

@namespace("org.test.avro.domain") protocol TestServiceDependency { 

    record org.test.avro.domain.ClassA { 

    int fieldA; } } 

次に、TestServiceプロトコルにインポートします。あなたはnew Idl(testservice.avdl)で解析しようとすると

@namespace("org.test.avro.service") protocol TestService { 

    import idl "dependency.avdl"; 

    org.test.avro.domain.ClassA methodA(); } 

、アブロは、インポートファイルに同じディレクトリになりますし、それらを最初に解析します。

関連する問題