javaspringspring-bootgraphql

Spring-boot GraphQl output map to data issue


I've to map a graphql response in a data object. But in the end, the data is null.

String document = """
   query {
    entries(entry_ids: "12CA") {
        rcsb_id
        rcsb_accession_info {
            initial_release_date
        }
        audit_author {
            name
        }
        rcsb_primary_citation {
            pdbx_database_id_PubMed
            pdbx_database_id_DOI
        }
   }
   }""";
 
ClientGraphQlResponse response = graphQlClient.document("document").executeSync();
        System.out.println("response: " + response);
        ClientResponseField field = response.field("data");
        System.out.println("field: " + field);
        Data data  = field.toEntity(Data.class);
        System.out.println("data: " + data);

The output is:

response: {data={entries=[{rcsb_id=12CA, rcsb_accession_info={initial_release_date=1992-10-15T00:00:00Z}, audit_author=[{name=Nair, S.K.}, {name=Christianson, D.W.}], rcsb_primary_citation={pdbx_database_id_PubMed=1910042, pdbx_database_id_DOI=null}}]}}

field: org.springframework.graphql.client.DefaultClientResponseField@540b91dc

data: null

My data objects:


@lombok.Data
public class Data {
    public List<Entries> entries;
}
@Data
public class Entries {
 
    public String rcsb_id;
    public RcsbAccessionInfo  rcsb_accession_info;
    public List<AuditAuthor> audit_author;
    public RcsbPrimaryCitation rcsb_primary_citation;
}
@Data
public class RcsbAccessionInfo {
    public String initial_release_date;
}
@Data
public class AuditAuthor {
    public String name;
}
@Data
public class RcsbPrimaryCitation {
    public Integer pdbx_database_id_PubMed;
    public String pdbx_database_id_DOI;
}

Where am I wrong?


Solution

  • In the end, the solution is very simple.

    Data data = response.toEntity(Data.class);