2013-08-29 46 views
2

读取OD AVPR很简单:Avro:如何从AVDL定义协议?

Protocol protocol = Protocol.parse(new File("ht-proto.avpr")); 

但是,这并不为IDL文件(AVDL)工作。

如何阅读AVDL文件,这样我就可以完成以下任务,但使用AVDL,而不是AVPR的:

public static void main (String[] args) { 
    Main.class.getResourceAsStream("net/protocol_man.avdl"); 
    Protocol protocol = 
      Protocol.parse(Main.class.getResourceAsStream("net/protocol_man.avpr")); 
                //this doesnt work for AVDL  
} 

回答

0

如果您正在使用Maven。你可以添加下面的插件。

这将创建Java源代码,并且你可以做几乎所有的事情。

我的意思是以后可以参考生成的类之一。例如Event.class

,并要求它的架构事件。$ SCHEMA

<plugin> 
      <groupId>org.apache.avro</groupId> 
      <artifactId>avro-maven-plugin</artifactId> 
      <version>1.7.3</version> 
      <executions> 
       <execution> 
        <id>schemas</id> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>idl-protocol</goal> 
        </goals> 
        <configuration> 
         <includes> 
          <include>net/protocol_man.avdl</include> 
         </includes> 
         <fieldVisibility>PRIVATE</fieldVisibility> 
         <sourceDirectory>src/main/resources</sourceDirectory> 
         <outputDirectory>${project.build.directory}/generated-sources/java 
         </outputDirectory> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin>