Home | About | Sematext search-lucene.com search-hadoop.com
 Search Hadoop and all its subprojects:

Switch to Plain View
Avro >> mail # dev >> Re: [jira] [Commented] (AVRO-1214) Generated protocol's method should return void instead of Void like one-way message


Copy link to this message
-
Re: [jira] [Commented] (AVRO-1214) Generated protocol's method should return void instead of Void like one-way message
If we kept it Void by default then we could even include it in a 1.7.4
bugfix release.

Avro's release rules permit incompatible API changes in point releases
(e.g., 1.8).  Only incompatible data formats would force a 2.0
release.  Still, if we can reduce incompatible API changes in point
releases we can save a lot of pain.

On Fri, Dec 7, 2012 at 11:51 AM, Sébastien Launay (JIRA)
<[EMAIL PROTECTED]> wrote:
>
>     [ https://issues.apache.org/jira/browse/AVRO-1214?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13526718#comment-13526718 ]
>
> Sébastien Launay commented on AVRO-1214:
> ----------------------------------------
>
> You are right Apache versioning would require a 2.x major version for that, I can update the patch to add an option to the compiler/maven-plugin like the one for generating String instead of CharSequence.
> Were you thinking of an option to keep Void turned off by default or an option to generate void turned off by default for 1.8.x?
>
>> 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