[infinispan-issues] [JBoss JIRA] (IPROTO-100) Annotated Collection Class Method cannot be converted to Collection

Tristan Tarrant (Jira) issues at jboss.org
Mon Aug 5 05:12:24 EDT 2019


     [ https://issues.jboss.org/browse/IPROTO-100?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Tristan Tarrant updated IPROTO-100:
-----------------------------------
    Sprint: DataGrid Sprint #30, DataGrid Sprint #31, DataGrid Sprint #32  (was: DataGrid Sprint #30, DataGrid Sprint #31)


> Annotated Collection Class Method cannot be converted to Collection
> -------------------------------------------------------------------
>
>                 Key: IPROTO-100
>                 URL: https://issues.jboss.org/browse/IPROTO-100
>             Project: Infinispan ProtoStream
>          Issue Type: Bug
>            Reporter: Ryan Emerson
>            Assignee: Nistor Adrian
>            Priority: Major
>             Fix For: 4.3.0.Alpha9, 4.3.0.Final
>
>
> Reproducing code
> {code:java}
> public class MagicKeyStringFilter implements KeyValueFilter<MagicKey, String> {
>    Map<MagicKey, String> allowedEntries;
>    MagicKeyStringFilter() {}
>    MagicKeyStringFilter(Map<MagicKey, String> allowedEntries) {
>       this.allowedEntries = allowedEntries;
>    }
>    @ProtoField(number = 1, collectionImplementation = ArrayList.class)
>    public List<MapPair> getMapEntries() {
>       return new ArrayList<>();
>    }
>    public void setMapEntries(List<MapPair> entries) {
> // No-op but has influence on error
>    }
> }
> public class MapPair {
>    @ProtoField(number = 1)
>    MagicKey key;
>    @ProtoField(number = 2)
>    String value;
>    MapPair() {}
>    MapPair(Map.Entry<MagicKey, String> entry) {
>       this.key = entry.getKey();
>       this.value = entry.getValue();
>    }
> }
> {code}
> {code:java}
> core/target/generated-test-sources/test-annotations/org/infinispan/stream/MagicKeyStringFilter$___Marshaller89f891e2edf7d63eb676a6effb5379a47edc312b.java:[56,41] incompatible types: org.infinispan.stream.MapPair cannot be converted to java.util.Collection
> {code}
> Generated marshaller code:
> {code:java}
> /**
>  * WARNING: Generated code!
>  */
> @javax.annotation.Generated(value = "org.infinispan.protostream.annotations.impl.processor.AutoProtoSchemaBuilderAnnotationProcessor",
>     comments = "Please do not edit this file!")
> @SuppressWarnings("unchecked")
> public final class MagicKeyStringFilter$___Marshaller89f891e2edf7d63eb676a6effb5379a47edc312b extends org.infinispan.protostream.annotations.impl.GeneratedMarshallerBase implements org.infinispan.protostream.RawProtobufMarshaller<org.infinispan.stream.MagicKeyStringFilter> {
>    private org.infinispan.protostream.impl.BaseMarshallerDelegate __md$org$infinispan$stream$MapPair;
>    
>    @Override
>    public Class<org.infinispan.stream.MagicKeyStringFilter> getJavaClass() { return org.infinispan.stream.MagicKeyStringFilter.class; }
>    
>    @Override
>    public String getTypeName() { return "org.infinispan.test.MagicKeyStringFilter"; }
>    
>    @Override
>    public org.infinispan.stream.MagicKeyStringFilter readFrom(org.infinispan.protostream.ImmutableSerializationContext $1, org.infinispan.protostream.RawProtoStreamReader $2) throws java.io.IOException {
>       final org.infinispan.stream.MagicKeyStringFilter o = new org.infinispan.stream.MagicKeyStringFilter();
>       java.util.ArrayList __c$mapEntries = new java.util.ArrayList();
>       boolean done = false;
>       while (!done) {
>          final int tag = $2.readTag();
>          switch (tag) {
>             case 0:
>                done = true;
>                break;
>             case 10:
>                {
>                   if (__md$org$infinispan$stream$MapPair == null) __md$org$infinispan$stream$MapPair = ((org.infinispan.protostream.impl.SerializationContextImpl) $1).getMarshallerDelegate(org.infinispan.stream.MapPair.class);
>                   int length = $2.readRawVarint32();
>                   int oldLimit = $2.pushLimit(length);
>                   org.infinispan.stream.MapPair v = (org.infinispan.stream.MapPair) readMessage(__md$org$infinispan$stream$MapPair, $2);
>                   $2.checkLastTagWas(0);
>                   $2.popLimit(oldLimit);
>                   if (__c$mapEntries == null) __c$mapEntries = new java.util.ArrayList();
>                   __c$mapEntries.add(v);
>                }
>                break;
>             default:
>                {
>                   if (!$2.skipField(tag)) done = true;
>                }
>          }
>       }
>       o.setMapEntries(__c$mapEntries);
>       return o;
>    }
>    
>    @Override
>    public void writeTo(org.infinispan.protostream.ImmutableSerializationContext $1, org.infinispan.protostream.RawProtoStreamWriter $2, org.infinispan.stream.MagicKeyStringFilter $3) throws java.io.IOException {
>       final org.infinispan.stream.MagicKeyStringFilter o = (org.infinispan.stream.MagicKeyStringFilter) $3;
>       {
>          final java.util.Collection c = (org.infinispan.stream.MapPair) o.getMapEntries();
>          if (c != null) 
>             for (java.util.Iterator it = c.iterator(); it.hasNext(); ) {
>                final org.infinispan.stream.MapPair v = (org.infinispan.stream.MapPair) it.next();
>                {
>                   if (__md$org$infinispan$stream$MapPair == null) __md$org$infinispan$stream$MapPair = ((org.infinispan.protostream.impl.SerializationContextImpl) $1).getMarshallerDelegate(org.infinispan.stream.MapPair.class);
>                   writeNestedMessage(__md$org$infinispan$stream$MapPair, $2, 1, v);
>                }
>             }
>       }
>    }
> }
> {code}



--
This message was sent by Atlassian Jira
(v7.12.1#712002)


More information about the infinispan-issues mailing list