Skip to content
This repository has been archived by the owner on Aug 2, 2023. It is now read-only.

Runtime generated classes do not serialize correctly #111

Open
ODie0x03B7 opened this issue Jun 3, 2020 · 0 comments
Open

Runtime generated classes do not serialize correctly #111

ODie0x03B7 opened this issue Jun 3, 2020 · 0 comments

Comments

@ODie0x03B7
Copy link

I'm using the nodes client to perform an introspection query (based upon one I found that is used by GraphiQL). Using the response from that I am attempting to generate novel (data access object) classes using the Javassist bytecode manipulation library.

My issue is that the runtime generated DAOs are not being serialized to correctly formulate the query; e.g. if I have a Class<?> representing a vehicle, so effectively:

 public class Vehicle {
  private int id;
  private String type;
  private String modelCode;
  private String brandName;
  private LocalDate launchDate;
  private transient String formattedDate;
  // Getters and setters
  ...
}

and a Class<?> class forming the query for vehicles {ATM ignoring arguments that the query will need down the line}:

@GraphQLProperty(name="query")
public class QueryContainer {
	private List<Vehicle> vehicles;
	public List<Vehicle> getVehicles() { return vehicles; }
	public void setVehicles(List<Vehicles> vehicleList) { vehicles = vehicleList; }	
}

the serialized query being sent across the wire is:

{"query":"query { vehicles } ","variables":{}}

which produces the (sensible/expected) error response:

{"data":null,"errors":[{"message":"Validation error of type SubSelectionRequired: Sub selection required for type null of field vehicles @ 'vehicles'","locations": [{"line":1,"column":9,"sourceName":null}],"description":"Sub selection required for type null of field vehicles","validationErrorType":"SubSelectionRequired","queryPath":["vehicles"],"errorType":"ValidationError","path":null,"extensions":null}]}

I'm concerned that I'm being hampered by the bytecode generation library respecting type erasure and hence my generated List being a List of Objects, and the serialization process then finding no object fields from which to generate the fields of the query. However, if that were the case, I'm not certain how the serialization could ever work, given that it is being mapped from a Class?

Has there been any instance of nodes being used in this manner, and am I going about it in the right way? Any help would be greatly appreciated.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant