Skip to content

@Proto does not fully work on classes that extend other classes #304

Open
@omasseau

Description

Hello,

I'm using the @Proto annotations on classes I want to marshall in an infinispan cache, as described here :
https://quarkus.io/guides/infinispan-client-reference#annotation-based-serialization

But I cannot find how to make it work on classes that extends other classes.

Here is an example :

public class Parent {
    public String id;

    public Parent() {
        this.id = UUID.randomUUID().toString();
    }
}

@Proto
public class Person extends Parent {
    public String name;

    public Person(){
    }

    public Person(String name) {
        super();
        this.name = name;

    }
}

@ProtoSchema(includeClasses = {Person.class })
interface Schema extends GeneratedSchema {
}

But the id field from the Parent class is not included in the result :

image

I then tried to add the annotation @Proto on the Parent class and declare the class in @ProtoSchema :

@Proto
public class Parent {
    public String id;

    public Parent() {
        this.id = UUID.randomUUID().toString();
    }
}

@Proto
public class Person extends Parent {
    public String name;

    public Person(){
    }

    public Person(String name) {
        super();
        this.name = name;

    }
}

@ProtoSchema(includeClasses = {Parent.class, Person.class })
interface Schema extends GeneratedSchema {
}

But I then get this error :

C:\dev\git\quarkus-test\src\main\java\com\test\Person.java:22
java: org.infinispan.protostream.annotations.ProtoSchemaBuilderException: Duplicate field number definition. Found two field definitions with number 1: in name and in id, while processing com.test.Schema

So is this a bug or a current limitation with inherited classes ?
Do I have to explicitely define a custom proto schema instead on relying on annotations ?

Note: Using Protostream 5.0.5.Final (dependency coming with Quarkus 3.12.2)

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions