Hi all i am trying to use extensions with protobuf and Netty here's my proto file
package tutorial; option java_package = "com.example.messages"; option java_outer_classname = "MessageProtos"; option optimize_for = LITE_RUNTIME; enum MessageType { TEST = 0; DEBUG = 1; DO_TASK = 2; SPECIAL = 3; } message Message { required string content = 1; required MessageType type = 2; extensions 3 to 99; } extend Message { optional string enhancedContent = 3; optional Share share = 4; optional int32 bar = 5; } message Share { required string ticker = 10; required string company = 11; required double price = 12; } I am setting extensions this way in my client if(line.startsWith("task")) { builder.setType(MessageProtos.MessageType.DO_TASK); builder.setExtension(MessageProtos.bar, 1); } else { builder.setType(MessageProtos.MessageType.DEBUG); } I have written an unit test which works fine @Test public void testExtensions() throws Exception { MessageProtos.Message.Builder builder = MessageProtos.Message.newBuilder(); builder.setExtension(MessageProtos.bar, 1); builder.setContent("foobar"); builder.setType(MessageProtos.MessageType.DEBUG); MessageProtos.Message message = builder.build(); Assert.assertTrue(message.hasExtension(MessageProtos.bar)); } However, on the serverside i am getting this exception 2011-02-06 20:44:58,130 [handlers.EchoServerHandler ] ERROR * Unexpected exception from downstream. [New I/O server worker #1-1] java.lang.NullPointerException at com.google.protobuf.GeneratedMessageLite $ExtendableBuilder.parseUnknownField(GeneratedMessageLite.java:311) at com.example.messages.MessageProtos$Message $Builder.mergeFrom(MessageProtos.java:273) at com.example.messages.MessageProtos$Message $Builder.mergeFrom(MessageProtos.java:187) at com.google.protobuf.AbstractMessageLite $Builder.mergeFrom(AbstractMessageLite.java:107) at com.google.protobuf.AbstractMessageLite $Builder.mergeFrom(AbstractMessageLite.java:161) at com.google.protobuf.AbstractMessageLite $Builder.mergeFrom(AbstractMessageLite.java:93) at org.jboss.netty.handler.codec.protobuf.ProtobufDecoder.decode(ProtobufDecoder.java: 103) at org.jboss.netty.handler.codec.oneone.OneToOneDecoder.handleUpstream(OneToOneDecoder.java: 72) at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java: 302) at org.jboss.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived(FrameDecoder.java: 317) at org.jboss.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java: 299) at org.jboss.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java: 216) at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java: 274) at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java: 261) at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:350) at org.jboss.netty.channel.socket.nio.NioWorker.processSelectedKeys(NioWorker.java: 281) at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:201) at org.jboss.netty.util.internal.IoWorkerRunnable.run(IoWorkerRunnable.java: 46) at java.util.concurrent.ThreadPoolExecutor $Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor $Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) Do i need to somehow declare extensions whenever i register my ProtocolDecoder / ProtocolEncoder? If i don't set any extensions, the client-server communication works fine could anyone help? w/kindest regards marco -- You received this message because you are subscribed to the Google Groups "Protocol Buffers" group. To post to this group, send email to protobuf@googlegroups.com. To unsubscribe from this group, send email to protobuf+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/protobuf?hl=en.