avro-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Doug Cutting (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (AVRO-1214) Generated protocol's method should return void instead of Void like one-way message
Date Fri, 07 Dec 2012 19:35:22 GMT

     [ https://issues.apache.org/jira/browse/AVRO-1214?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Doug Cutting updated AVRO-1214:
-------------------------------

    Fix Version/s: 1.8.0
     Hadoop Flags: Incompatible change

This looks like a good change, but it is incompatible and will break applications that currently
implement interfaces that return Void, so I marked it for inclusion in 1.8.0, where we might
include such incompatible changes.  Even then, breaking existing applications is never good.
 We could implement this as an option to the compiler, so that folks can choose whether or
not to generate interfaces that return Void for compatibility.
                
> Generated protocol's method should return void instead of Void like one-way message
> -----------------------------------------------------------------------------------
>
>                 Key: AVRO-1214
>                 URL: https://issues.apache.org/jira/browse/AVRO-1214
>             Project: Avro
>          Issue Type: Improvement
>          Components: java
>    Affects Versions: 1.7.2
>            Reporter: S├ębastien Launay
>            Priority: Minor
>             Fix For: 1.8.0
>
>         Attachments: AVRO-1214-unbox-void-2012-12-05.patch
>
>
> Using the following IDL:
> {noformat}
> @namespace("org.apache.avro.test")
> protocol Simple {
>   error TestError {
>     string message;
>   }
>   string hello(string greeting);
>   void `error`() throws TestError;
>   void ping() oneway;
> }
> {noformat}
> Will produce the interface:
> {code:java}
> package org.apache.avro.test;
> public interface Simple {
>   public static final org.apache.avro.Protocol PROTOCOL = org.apache.avro.Protocol.parse("...");
>   java.lang.CharSequence hello(java.lang.CharSequence greeting) throws org.apache.avro.AvroRemoteException;
>   java.lang.Void error() throws org.apache.avro.AvroRemoteException, org.apache.avro.test.TestError;
>   void ping();
>   public interface Callback extends Simple {
>     public static final org.apache.avro.Protocol PROTOCOL = org.apache.avro.test.Simple.PROTOCOL;
>     void hello(java.lang.CharSequence greeting, org.apache.avro.ipc.Callback<java.lang.CharSequence>
callback) throws java.io.IOException;
>     void error(org.apache.avro.ipc.Callback<java.lang.Void> callback) throws java.io.IOException;
>   }
> }
> {code}
> Then one is forced to add {{return null;}} statement(s) in the interface implementation
for the {{error()}} method which can be a bit cumbersome and that's not the case for the oneway
{{ping()}} method.
> This is fine on the Callback though because the developer can just ignore the callback
argument.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message