[ https://issues.apache.org/jira/browse/AVRO-2357?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16806198#comment-16806198 ]
ASF subversion and git services commented on AVRO-2357: ------------------------------------------------------- Commit de48a0a8a0343b61fdb255011fde38c619761046 in avro's branch refs/heads/master from ivangreene [ https://gitbox.apache.org/repos/asf?p=avro.git;h=de48a0a ] AVRO-2357: Allow generic types in reflect protos (#490) Adds support for generic types in ReflectData for Protocols. > (ReflectData) Support for generic types in protocol definitions > --------------------------------------------------------------- > > Key: AVRO-2357 > URL: https://issues.apache.org/jira/browse/AVRO-2357 > Project: Apache Avro > Issue Type: Improvement > Components: java > Reporter: Ivan Greene > Priority: Minor > > For a Java interface extending another interface with type parameters, we may > resolve actual type parameters and build the protocol definition based upon > those. > For example, let's say we have a generic protocol defined by a Java interface: > {code:java} > public interface CrudProto<T, I> { > void persist(T record); > T fetchById(I id); > }{code} > It would be natural to define a set of interfaces that extend this, such as: > {code:java} > public interface FooBarRecordProto extends CrudProto<FooBarRecord, String> {} > public interface OtherRecordProto extends CrudProto<OtherRecord, Long> {} > {code} > Calling ReflectData.get().getProtocol(FooBarRecordProto.class) should be able > to resolve that this protocol deals in FooBarRecords and Strings, and build a > protocol accordingly. > Currently, this call will produce an exception stating that a schema for 'T' > cannot be resolved. -- This message was sent by Atlassian JIRA (v7.6.3#76005)