CustomTypeAdapter を ApolloClient に追加する方法を理解するのに苦労しています。
ミューテーションの場合、サーバーは json 入力を想定しています。対応する iOS アプリは json 文字列を渡しています。
文字列を渡すと、customtype を追加するのを忘れていないかどうかを尋ねるメッセージが表示されます。
これが私の試みです:
build.gradle
apollo {
useSemanticNaming = true
customTypeMapping['ISOTime'] = "java.util.Date"
customTypeMapping['JSON'] = "java.lang.JSONObject"
}
これがインスタンス化された場所です。
val jsonCustomTypeAdapter = object : CustomTypeAdapter<JSONObject> {
override fun decode(value: CustomTypeValue<*>): JSONObject {
return JSONObject()
}
override fun encode(value: JSONObject): CustomTypeValue<*> {
return CustomTypeValue.GraphQLJsonString(value.toString())
}
}
mApolloClient = ApolloClient
.builder()
.serverUrl(baseUrl)
.addCustomTypeAdapter(jsonCustomTypeAdapter)
.normalizedCache(cacheFactory, CacheKeyResolver.DEFAULT)
.httpCache(ApolloHttpCache(cacheStore, null))
.okHttpClient(mHttpClient)
.build()
Apollo は ScalarType を実装する CustomType 列挙型を生成したようですが、それを使用するかどうか、またはどのように使用するかはわかりません。
@Generated("Apollo GraphQL")
public enum CustomType implements ScalarType {
JSON {
@Override
public String typeName() {
return "Json";
}
@Override
public Class javaType() {
return Object.class;
}
},
ID {
@Override
public String typeName() {
return "ID";
}
@Override
public Class javaType() {
return String.class;
}
}
}
私はapolloandroid githubで与えられた例を試みましたが、うまくいき ませんでした.Javaであり、Kotlinに変換した後、コンパイルされません.
追求するためのヒントや方向性をいただければ幸いです。ありがとう。