在GraphQL(Apollo)中转换InputType对象

时间:2019-05-12 16:20:18

标签: java graphql apollo

我有这种类型的列表(地址是我的java类):

List<Address> addresses = new ArrayList<>();

public class Address {
...
}

我必须执行这种类型的请求:

apolloClient = ApolloClient.builder()
        .serverUrl(mContext.getString(R.string.graphqlUrl))
        .okHttpClient(okHttpClient)
        .addCustomTypeAdapter(CustomType.LISTOFMAPTOOBJECT, new AddressCustomTypeAdapter().customTypeAdapter())
        .build();

apolloClient.mutate(
        UpdateProfileAddressesMutation.builder()
                .addresses(?)
                .build()
).enqueue(new ApolloCall.Callback<UpdateProfileAddressesMutation.Data>() {
...
});

但是我不知道要在 .addresses(?)中作为参数发送什么。此方法要求我发送一个AddressInput的ArrayList,它是自动生成的graphql类。

public final class AddressInput implements InputType { ... }

如何在AddressInput中转换我的地址?

如果我尝试类似

AddressInput ad = new AddressInput();

我遇到以下错误“无法从外部包访问”

1 个答案:

答案 0 :(得分:0)

生成的输入类型具有一个可用于实例化它的生成器方法,因此您的代码应类似于:

// Java
AddressInput address = AddressInput
  .builder()
  .city("San Francisco")
  .state("CA")
  .build();

// Kotlin
val address = AddressInput
  .builder()
  .city("San Francisco")
  .state("CA")
  .build()

如果AddressInput内的任何字段也是输入对象类型,则需要以类似的方式构建它们。