Can I use the following code rather the maven plugin:
Idl parserIDL = new
Idl(Main.class.getResourceAsStream("/net/avro/protocol_man.avdl"));
Protocol protocol = parserIDL.CompilationUnit();
mediatorResponder = new MediatorResponder(protocol);
startNettyServer(mediatorResponder);
parserIDL.close();
Where mediator Responder is:
public class MediatorResponder extends GenericResponder{
public MediatorResponder(Protocol protocol) {
super(protocol);
}
@Override
public Object respond(Protocol.Message msg, Object request) throws
Exception {
String msgName = msg.getName();
switch(msgName){
case "hello": System.out.println("HELLO"); break;
case "bye": System.out.println("BYE"); break;
default:
throw new AvroRuntimeException("unexcepcted message: "
+ msgName);
}
return null;
}
}
?
W dniu 01.10.2013 20:41, Doug Cutting pisze:
On Tue, Oct 1, 2013 at 10:57 AM, michał <[email protected]> wrote:
1. Would it be possible to program client-server and generate the protocol
classes programmatically at compile time?
Yes. This is supported through Avro's Maven plugins by adding
something like the following to your pom.xml:
<plugin>
<groupId>org.apache.avro</groupId>
<artifactId>avro-maven-plugin</artifactId>
<version>${avro.version}</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>schema</goal>
<goal>protocol</goal>
<goal>idl-protocol</goal>
</goals>
</execution>
</executions>
</plugin>
This will compile .avpr files from src/main/avro, generating .avsc and
.avpr files in target/generated-sources/avro, then compile these to
create .java files in target/generated-sources/java which will be
compiled by the normal Maven java compilation plugins.
Doug