Closed
Description
I have a query which I've simplified for this post:
info {
amenityCategories {
text
}
category
}
amenityCategories
is a list of PropertyAmenityCategory
Objects
. category
is an AmenityCategory
which is an Enum
.
Although named similarly, PropertyAmenityCategory
is very different from AmenityCategory
.
When the code is generated for it looks like this:
final @NotNull List<AmenityCategory> amenityCategories;
final com.apollographql.apollo.apollobug.type. @Nullable AmenityCategory category;
This causes an exception while building.
The generated code should be something like:
final @NotNull List<PropertyAmenityCategory> amenityCategories;
final @Nullable com.apollographql.apollo.apollobug.type.AmenityCategory category;
apollo-android is incorrectly using List<AmenityCategory>
for the field amenityCategories
.
Activity
sav007 commentedon Dec 13, 2018
pls check the lates snapshot version, I believe it was fixed recently
davidalbers commentedon Dec 14, 2018
Hi @sav007,
I updated to
apollo-gradle-plugin:1.0.1-SNAPSHOT
and still see the same compilation errorsav007 commentedon Jan 3, 2019
If I am right you have 2 type definitions in your GraphQL schema that have name collision? One for enum another for object:
I'm trying to find the GraphQL specs if
name
in schema definition is unique or not, but that seems like not right, that schema has 2 types with the same name.davidalbers commentedon Jan 3, 2019
Each type definition has a unique
name
. However the names share theamenityCategory
suffix which seems to cause a problem with apollo-android.Example schema.json:
sav007 commentedon Jan 3, 2019
agh, I see, so its field name causes this issue, well you can always use aliases https://graphql.github.io/learn/queries/#aliases but for sure we need to reserve enum type name and resolve name collision accordingly
davidalbers commentedon Jan 3, 2019
That's a good workaround. Doing something like:
will avoid the type mismatching and fixes the generated code errors.
sav007 commentedon Jan 8, 2019
Yeah, the existing name conflict resolution in codegen is not straightforward, I thought it's easy fix but not really
low hanging fruit
2 remaining items