Skip to content

Commit 1ad2c62

Browse files
BoDmartinbonnin
andauthored
Use published version of the Java support libs (#5991)
* Use published version of the Java support libs * Deprecate Java support modules * Generate Java/Guava Optional adapters instead of expecting them from the Java client dependency * Remove integration tests that were moved to the java-support repo * Update libraries/apollo-api-java/README.md Co-authored-by: Martin Bonnin <[email protected]> * Fix artifact id in readmes * Fix artifact id in code --------- Co-authored-by: Martin Bonnin <[email protected]>
1 parent ae4dddc commit 1ad2c62

File tree

52 files changed

+400
-1850
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+400
-1850
lines changed

gradle/libraries.toml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,6 @@ apollo-normalizedcache-incubating-snapshot = { group = "com.apollographql.cache"
7777
apollo-normalizedcache-sqlite = { group = "com.apollographql.apollo3", name = "apollo-normalized-cache-sqlite", version.ref = "apollo" }
7878
apollo-normalizedcache-sqlite-incubating = { group = "com.apollographql.cache", name = "normalized-cache-sqlite-incubating", version.ref = "apollo-normalizedcache-incubating" }
7979
apollo-normalizedcache-sqlite-incubating-snapshot = { group = "com.apollographql.cache", name = "normalized-cache-sqlite-incubating", version.ref = "apollo-normalizedcache-incubating-snapshot" }
80-
apollo-rx2-support-java = { group = "com.apollographql.apollo3", name = "apollo-rx2-support-java", version.ref = "apollo" }
8180
apollo-plugin = { group = "com.apollographql.apollo3", name = "apollo-gradle-plugin", version.ref = "apollo" }
8281
apollo-runtime = { group = "com.apollographql.apollo3", name = "apollo-runtime", version.ref = "apollo" }
8382
apollo-compiler = { group = "com.apollographql.apollo3", name = "apollo-compiler", version.ref = "apollo" }
@@ -89,9 +88,7 @@ apollo-execution-gradle-plugin = { group = "com.apollographql.execution", name =
8988
# Used by the apollo-tooling project which uses a published version of Apollo
9089
apollo-runtime-published = { group = "com.apollographql.apollo3", name = "apollo-runtime", version.ref = "apollo-published" }
9190
apollo-annotations = { group = "com.apollographql.apollo3", name = "apollo-annotations", version.ref = "apollo" }
92-
apollo-runtime-java = { group = "com.apollographql.apollo3", name = "apollo-runtime-java", version.ref = "apollo" }
9391
apollo-engine-ktor = { group = "com.apollographql.apollo3", name = "apollo-engine-ktor", version.ref = "apollo" }
94-
apollo-rx3-java = { group = "com.apollographql.apollo3", name = "apollo-rx3-support-java", version.ref = "apollo" }
9592
apollo-testingsupport = { group = "com.apollographql.apollo3", name = "apollo-testing-support", version.ref = "apollo" }
9693
# Used by the apollo-tooling project which uses a published version of Apollo
9794
apollo-testingsupport-published = { group = "com.apollographql.apollo3", name = "apollo-testing-support", version.ref = "apollo-published" }

libraries/apollo-api-java/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
# Module apollo-api-java
22

3-
apollo-api-java contains adapters for Java Optional values.
3+
This module has been moved to the [Java Support](https://github.com/apollographql/apollo-kotlin-java-support) repository and published under `com.apollographql.java:client`. Please update your dependencies.

libraries/apollo-compiler/api/apollo-compiler.api

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -558,6 +558,8 @@ public final class com/apollographql/apollo3/compiler/codegen/ResolverKeyKind :
558558
public static final field Fragment Lcom/apollographql/apollo3/compiler/codegen/ResolverKeyKind;
559559
public static final field FragmentSelections Lcom/apollographql/apollo3/compiler/codegen/ResolverKeyKind;
560560
public static final field FragmentVariablesAdapter Lcom/apollographql/apollo3/compiler/codegen/ResolverKeyKind;
561+
public static final field JavaOptionalAdapter Lcom/apollographql/apollo3/compiler/codegen/ResolverKeyKind;
562+
public static final field JavaOptionalAdapters Lcom/apollographql/apollo3/compiler/codegen/ResolverKeyKind;
561563
public static final field MapType Lcom/apollographql/apollo3/compiler/codegen/ResolverKeyKind;
562564
public static final field Model Lcom/apollographql/apollo3/compiler/codegen/ResolverKeyKind;
563565
public static final field ModelAdapter Lcom/apollographql/apollo3/compiler/codegen/ResolverKeyKind;

libraries/apollo-compiler/src/main/kotlin/com/apollographql/apollo3/compiler/codegen/LayoutImpl.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,10 @@ internal fun SchemaLayout.typeUtilPackageName() = "${schemaPackageName()}.type.u
157157

158158
internal fun SchemaLayout.paginationPackageName() = "${schemaPackageName()}.pagination"
159159
internal fun SchemaLayout.schemaSubPackageName() = "${schemaPackageName()}.schema"
160+
161+
internal fun SchemaLayout.javaOptionalAdapterClassName() = "OptionalAdapter"
162+
internal fun SchemaLayout.javaOptionalAdaptersClassName() = "OptionalAdapters"
163+
160164
internal fun ExecutableSchemaLayout.executionPackageName() = "${schemaPackageName()}.execution"
161165

162166
internal fun OperationsLayout.operationAdapterPackageName(filePath: String) = "${executableDocumentPackageName(filePath)}.adapter"

libraries/apollo-compiler/src/main/kotlin/com/apollographql/apollo3/compiler/codegen/Resolver.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ enum class ResolverKeyKind {
3434
CustomScalarAdapters,
3535
Pagination,
3636
ArgumentDefinition,
37+
JavaOptionalAdapter,
38+
JavaOptionalAdapters,
3739
}
3840

3941
@Serializable

libraries/apollo-compiler/src/main/kotlin/com/apollographql/apollo3/compiler/codegen/java/JavaClassNames.kt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,10 +81,6 @@ internal object JavaClassNames {
8181
* ClassNames for kotlin files turned into java classes
8282
*/
8383
val Adapters = ClassName.get(apolloApiPackageName, "Adapters")
84-
val JavaOptionalAdapter = ClassName.get("com.apollographql.apollo3.api.java.adapter", "JavaOptionalAdapter")
85-
val JavaOptionalAdapters = ClassName.get("com.apollographql.apollo3.api.java.adapter", "JavaOptionalAdapters")
86-
val GuavaOptionalAdapter = ClassName.get("com.apollographql.apollo3.api.java.adapter", "GuavaOptionalAdapter")
87-
val GuavaOptionalAdapters = ClassName.get("com.apollographql.apollo3.api.java.adapter", "GuavaOptionalAdapters")
8884
val BooleanExpressions = ClassName.get(apolloApiPackageName, "BooleanExpressions")
8985
val Assertions = ClassName.get(apolloApiPackageName, "Assertions")
9086
val JsonReaders = ClassName.get(apolloApiJsonPackageName, "JsonReaders")

libraries/apollo-compiler/src/main/kotlin/com/apollographql/apollo3/compiler/codegen/java/JavaCodegen.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ import com.apollographql.apollo3.compiler.codegen.OperationsLayout
1313
import com.apollographql.apollo3.compiler.codegen.ResolverKey
1414
import com.apollographql.apollo3.compiler.codegen.ResolverKeyKind
1515
import com.apollographql.apollo3.compiler.codegen.SchemaLayout
16+
import com.apollographql.apollo3.compiler.codegen.java.adapters.JavaOptionalAdapterBuilder
17+
import com.apollographql.apollo3.compiler.codegen.java.adapters.JavaOptionalAdaptersBuilder
1618
import com.apollographql.apollo3.compiler.codegen.java.operations.FragmentBuilder
1719
import com.apollographql.apollo3.compiler.codegen.java.operations.FragmentDataAdapterBuilder
1820
import com.apollographql.apollo3.compiler.codegen.java.operations.FragmentModelsBuilder
@@ -168,6 +170,10 @@ internal object JavaCodegen {
168170
// When using the Guava optionals, generate assertOneOf in the project, as apollo-api doesn't depend on Guava
169171
builders.add(UtilAssertionsBuilder(context))
170172
}
173+
if (context.nullableFieldStyle == JavaNullable.JAVA_OPTIONAL || context.nullableFieldStyle == JavaNullable.GUAVA_OPTIONAL) {
174+
builders.add(JavaOptionalAdapterBuilder(context, context.nullableFieldStyle))
175+
builders.add(JavaOptionalAdaptersBuilder(context))
176+
}
171177
irSchema.irUnions.forEach { irUnion ->
172178
builders.add(UnionBuilder(context, irUnion))
173179
if (generateDataBuilders) {

libraries/apollo-compiler/src/main/kotlin/com/apollographql/apollo3/compiler/codegen/java/JavaResolver.kt

Lines changed: 20 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -51,16 +51,14 @@ internal class JavaResolver(
5151
else -> JavaClassNames.Optional
5252
}
5353

54-
private val optionalAdapterClassName: ClassName = when (nullableFieldStyle) {
55-
JavaNullable.JAVA_OPTIONAL -> JavaClassNames.JavaOptionalAdapter
56-
JavaNullable.GUAVA_OPTIONAL -> JavaClassNames.GuavaOptionalAdapter
54+
private fun getOptionalAdapterClassName(): ClassName = when (nullableFieldStyle) {
55+
JavaNullable.JAVA_OPTIONAL, JavaNullable.GUAVA_OPTIONAL -> resolveJavaOptionalAdapter()
5756
else -> JavaClassNames.ApolloOptionalAdapter
5857
}
5958

60-
private val optionalOrNullableAdapterClassName: ClassName = when (nullableFieldStyle) {
59+
private fun getOptionalOrNullableAdapterClassName(): ClassName = when (nullableFieldStyle) {
6160
JavaNullable.APOLLO_OPTIONAL -> JavaClassNames.ApolloOptionalAdapter
62-
JavaNullable.JAVA_OPTIONAL -> JavaClassNames.JavaOptionalAdapter
63-
JavaNullable.GUAVA_OPTIONAL -> JavaClassNames.GuavaOptionalAdapter
61+
JavaNullable.JAVA_OPTIONAL, JavaNullable.GUAVA_OPTIONAL -> resolveJavaOptionalAdapter()
6462
else -> JavaClassNames.NullableAdapter
6563
}
6664

@@ -185,8 +183,7 @@ internal class JavaResolver(
185183

186184
fun adapterInitializer(type: IrType, requiresBuffering: Boolean): CodeBlock {
187185
return if (type.optional) {
188-
val adapterClassName = if (!type.rawType().isComposite()) optionalAdapterClassName else optionalAdapterClassName
189-
return CodeBlock.of("new $T<>($L)", adapterClassName, adapterInitializer(type.optional(false), requiresBuffering))
186+
return CodeBlock.of("new $T<>($L)", getOptionalAdapterClassName(), adapterInitializer(type.optional(false), requiresBuffering))
190187
} else if (type.catchTo != IrCatchTo.NoCatch) {
191188
error("Java codegen does not support @catch")
192189
} else if (type.nullable) {
@@ -203,8 +200,7 @@ internal class JavaResolver(
203200
}
204201

205202
else -> {
206-
val adapterClassName = if (!type.rawType().isComposite()) optionalOrNullableAdapterClassName else optionalOrNullableAdapterClassName
207-
CodeBlock.of("new $T<>($L)", adapterClassName, adapterInitializer(type.nullable(false), requiresBuffering))
203+
CodeBlock.of("new $T<>($L)", getOptionalOrNullableAdapterClassName(), adapterInitializer(type.nullable(false), requiresBuffering))
208204
}
209205
}
210206
} else {
@@ -214,7 +210,7 @@ internal class JavaResolver(
214210
}
215211

216212
is IrScalarType -> {
217-
scalarAdapterInitializer(type.name, customScalarAdapters)
213+
scalarAdapterInitializer(type.name)
218214
}
219215

220216
is IrEnumType -> {
@@ -243,7 +239,7 @@ internal class JavaResolver(
243239
}
244240

245241
private fun resolveScalarTarget(name: String): ClassName? {
246-
return scalarMapping.get(name)?.targetName?.let {
242+
return scalarMapping[name]?.targetName?.let {
247243
ClassName.bestGuess(it)
248244
}
249245
}
@@ -252,7 +248,7 @@ internal class JavaResolver(
252248
return CodeBlock.of("$T.$type", resolveAndAssert(ResolverKeyKind.SchemaType, name))
253249
}
254250

255-
private fun scalarAdapterInitializer(name: String, customScalarAdapters: String): CodeBlock {
251+
private fun scalarAdapterInitializer(name: String): CodeBlock {
256252
return when (val adapterInitializer = scalarMapping[name]?.adapterInitializer) {
257253
is ExpressionAdapterInitializer -> {
258254
CodeBlock.of(adapterInitializer.expression)
@@ -305,16 +301,10 @@ internal class JavaResolver(
305301
adapterNamePrefix = "ApolloOptional"
306302
}
307303

308-
JavaNullable.JAVA_OPTIONAL -> {
309-
// Ex: JavaOptionalAdapters.JavaOptionalStringAdapter
310-
className = JavaClassNames.JavaOptionalAdapters
311-
adapterNamePrefix = "JavaOptional"
312-
}
313-
314-
JavaNullable.GUAVA_OPTIONAL -> {
315-
// Ex: GuavaOptionalAdapters.GuavaOptionalStringAdapter
316-
className = JavaClassNames.GuavaOptionalAdapters
317-
adapterNamePrefix = "GuavaOptional"
304+
JavaNullable.JAVA_OPTIONAL, JavaNullable.GUAVA_OPTIONAL -> {
305+
// Ex: OptionalAdapters.OptionalStringAdapter
306+
className = resolveJavaOptionalAdapters()
307+
adapterNamePrefix = "Optional"
318308
}
319309

320310
else -> {
@@ -396,7 +386,7 @@ internal class JavaResolver(
396386
is IrListType2 -> adapterInitializer2(type.ofType)?.listAdapter(isComposite = type.ofType.isCompositeOrWrappedComposite())
397387
is IrScalarType2 -> {
398388
if (scalarMapping.containsKey(type.name)) {
399-
scalarAdapterInitializer(type.name, customScalarAdapters)
389+
scalarAdapterInitializer(type.name)
400390
} else {
401391
null
402392
}
@@ -427,6 +417,12 @@ internal class JavaResolver(
427417

428418
fun registerArgumentDefinition(id: String, className: ClassName) = register(ResolverKeyKind.ArgumentDefinition, id, className)
429419
fun resolveArgumentDefinition(id: String): ClassName = resolveAndAssert(ResolverKeyKind.ArgumentDefinition, id)
420+
421+
fun registerJavaOptionalAdapter(className: ClassName) = register(ResolverKeyKind.JavaOptionalAdapter, "", className)
422+
fun resolveJavaOptionalAdapter() = resolveAndAssert(ResolverKeyKind.JavaOptionalAdapter, "")
423+
424+
fun registerJavaOptionalAdapters(className: ClassName) = register(ResolverKeyKind.JavaOptionalAdapters, "", className)
425+
fun resolveJavaOptionalAdapters() = resolveAndAssert(ResolverKeyKind.JavaOptionalAdapters, "")
430426
}
431427

432428

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
package com.apollographql.apollo3.compiler.codegen.java.adapters
2+
3+
import com.apollographql.apollo3.compiler.JavaNullable
4+
import com.apollographql.apollo3.compiler.codegen.Identifier
5+
import com.apollographql.apollo3.compiler.codegen.Identifier.customScalarAdapters
6+
import com.apollographql.apollo3.compiler.codegen.Identifier.fromJson
7+
import com.apollographql.apollo3.compiler.codegen.Identifier.reader
8+
import com.apollographql.apollo3.compiler.codegen.Identifier.value
9+
import com.apollographql.apollo3.compiler.codegen.Identifier.writer
10+
import com.apollographql.apollo3.compiler.codegen.java.CodegenJavaFile
11+
import com.apollographql.apollo3.compiler.codegen.java.JavaClassBuilder
12+
import com.apollographql.apollo3.compiler.codegen.java.JavaClassNames
13+
import com.apollographql.apollo3.compiler.codegen.java.JavaSchemaContext
14+
import com.apollographql.apollo3.compiler.codegen.java.T
15+
import com.apollographql.apollo3.compiler.codegen.javaOptionalAdapterClassName
16+
import com.apollographql.apollo3.compiler.codegen.typeAdapterPackageName
17+
import com.squareup.javapoet.ClassName
18+
import com.squareup.javapoet.FieldSpec
19+
import com.squareup.javapoet.MethodSpec
20+
import com.squareup.javapoet.ParameterizedTypeName
21+
import com.squareup.javapoet.TypeSpec
22+
import com.squareup.javapoet.TypeVariableName
23+
import javax.lang.model.element.Modifier
24+
25+
internal class JavaOptionalAdapterBuilder(
26+
private val context: JavaSchemaContext,
27+
private val nullableFieldStyle: JavaNullable,
28+
) : JavaClassBuilder {
29+
private val packageName = context.layout.typeAdapterPackageName()
30+
private val simpleName = context.layout.javaOptionalAdapterClassName()
31+
32+
override fun prepare() {
33+
context.resolver.registerJavaOptionalAdapter(ClassName.get(packageName, simpleName))
34+
}
35+
36+
override fun build(): CodegenJavaFile {
37+
return CodegenJavaFile(
38+
packageName = packageName,
39+
typeSpec = javaOptionalAdapterTypeSpec()
40+
)
41+
}
42+
43+
private fun javaOptionalAdapterTypeSpec(): TypeSpec {
44+
val t = TypeVariableName.get("T")
45+
val javaOptional = when (nullableFieldStyle) {
46+
JavaNullable.JAVA_OPTIONAL -> JavaClassNames.JavaOptional
47+
JavaNullable.GUAVA_OPTIONAL -> JavaClassNames.GuavaOptional
48+
else -> error("Unsupported nullableFieldStyle: $nullableFieldStyle")
49+
}
50+
val javaOptionalT = ParameterizedTypeName.get(javaOptional, t)
51+
val adapterT = ParameterizedTypeName.get(JavaClassNames.Adapter, t)
52+
val adapterOptionalT = ParameterizedTypeName.get(JavaClassNames.Adapter, javaOptionalT)
53+
54+
val wrappedAdapterField = FieldSpec.builder(adapterT, "wrappedAdapter", Modifier.PRIVATE, Modifier.FINAL).build()
55+
56+
val constructor = MethodSpec.constructorBuilder()
57+
.addModifiers(Modifier.PUBLIC)
58+
.addParameter(adapterT, "wrappedAdapter")
59+
.addStatement("this.wrappedAdapter = wrappedAdapter")
60+
.build()
61+
62+
val absentFunName = when (nullableFieldStyle) {
63+
JavaNullable.JAVA_OPTIONAL -> "empty"
64+
JavaNullable.GUAVA_OPTIONAL -> "absent"
65+
else -> error("Unsupported nullableFieldStyle: $nullableFieldStyle")
66+
}
67+
val fromJson = MethodSpec.methodBuilder(fromJson)
68+
.addException(JavaClassNames.IOException)
69+
.addAnnotation(JavaClassNames.Override)
70+
.addModifiers(Modifier.PUBLIC)
71+
.addParameter(JavaClassNames.JsonReader, reader)
72+
.addParameter(JavaClassNames.CustomScalarAdapters, customScalarAdapters)
73+
.returns(javaOptionalT)
74+
.beginControlFlow("if ($reader.peek() == $T.Token.NULL)", JavaClassNames.JsonReader)
75+
.addStatement("$reader.skipValue()")
76+
.addStatement("return $T.$absentFunName()", javaOptional)
77+
.endControlFlow()
78+
.addStatement("return $T.of(wrappedAdapter.fromJson($reader, $customScalarAdapters))", javaOptional)
79+
.build()
80+
81+
val toJson = MethodSpec.methodBuilder(Identifier.toJson)
82+
.addException(JavaClassNames.IOException)
83+
.addAnnotation(JavaClassNames.Override)
84+
.addModifiers(Modifier.PUBLIC)
85+
.addParameter(JavaClassNames.JsonWriter, writer)
86+
.addParameter(JavaClassNames.CustomScalarAdapters, customScalarAdapters)
87+
.addParameter(javaOptionalT, value)
88+
.beginControlFlow("if (!$value.isPresent())")
89+
.addStatement("$writer.nullValue()")
90+
.nextControlFlow("else")
91+
.addStatement("wrappedAdapter.toJson($writer, $customScalarAdapters, $value.get())")
92+
.endControlFlow()
93+
.build()
94+
95+
return TypeSpec.classBuilder(simpleName)
96+
.addModifiers(Modifier.PUBLIC)
97+
.addTypeVariable(t)
98+
.addSuperinterface(adapterOptionalT)
99+
.addField(wrappedAdapterField)
100+
.addMethod(constructor)
101+
.addMethod(fromJson)
102+
.addMethod(toJson)
103+
.build()
104+
}
105+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
package com.apollographql.apollo3.compiler.codegen.java.adapters
2+
3+
import com.apollographql.apollo3.compiler.codegen.java.CodegenJavaFile
4+
import com.apollographql.apollo3.compiler.codegen.java.JavaClassBuilder
5+
import com.apollographql.apollo3.compiler.codegen.java.JavaClassNames
6+
import com.apollographql.apollo3.compiler.codegen.java.JavaSchemaContext
7+
import com.apollographql.apollo3.compiler.codegen.java.T
8+
import com.apollographql.apollo3.compiler.codegen.javaOptionalAdaptersClassName
9+
import com.apollographql.apollo3.compiler.codegen.typeAdapterPackageName
10+
import com.squareup.javapoet.ClassName
11+
import com.squareup.javapoet.FieldSpec
12+
import com.squareup.javapoet.ParameterizedTypeName
13+
import com.squareup.javapoet.TypeSpec
14+
import javax.lang.model.element.Modifier
15+
16+
internal class JavaOptionalAdaptersBuilder(private val context: JavaSchemaContext) : JavaClassBuilder {
17+
private val packageName = context.layout.typeAdapterPackageName()
18+
private val simpleName = context.layout.javaOptionalAdaptersClassName()
19+
20+
override fun prepare() {
21+
context.resolver.registerJavaOptionalAdapters(ClassName.get(packageName, simpleName))
22+
}
23+
24+
override fun build(): CodegenJavaFile {
25+
return CodegenJavaFile(
26+
packageName = packageName,
27+
typeSpec = javaOptionalAdaptersTypeSpec()
28+
)
29+
}
30+
31+
private fun javaOptionalAdaptersTypeSpec(): TypeSpec {
32+
val optionalAdapter = context.resolver.resolveJavaOptionalAdapter()
33+
val stringAdapter = ParameterizedTypeName.get(optionalAdapter, JavaClassNames.String)
34+
val doubleAdapter = ParameterizedTypeName.get(optionalAdapter, JavaClassNames.Double)
35+
val intAdapter = ParameterizedTypeName.get(optionalAdapter, JavaClassNames.Integer)
36+
val booleanAdapter = ParameterizedTypeName.get(optionalAdapter, JavaClassNames.Boolean)
37+
val anyAdapter = ParameterizedTypeName.get(optionalAdapter, JavaClassNames.Object)
38+
39+
val stringAdapterField = FieldSpec.builder(stringAdapter, "OptionalStringAdapter", Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL)
40+
.initializer("new $T($T.StringAdapter)", stringAdapter, JavaClassNames.Adapters)
41+
.build()
42+
43+
val doubleAdapterField = FieldSpec.builder(doubleAdapter, "OptionalDoubleAdapter", Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL)
44+
.initializer("new $T($T.DoubleAdapter)", doubleAdapter, JavaClassNames.Adapters)
45+
.build()
46+
47+
val intAdapterField = FieldSpec.builder(intAdapter, "OptionalIntAdapter", Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL)
48+
.initializer("new $T($T.IntAdapter)", intAdapter, JavaClassNames.Adapters)
49+
.build()
50+
51+
val booleanAdapterField =
52+
FieldSpec.builder(booleanAdapter, "OptionalBooleanAdapter", Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL)
53+
.initializer("new $T($T.BooleanAdapter)", booleanAdapter, JavaClassNames.Adapters)
54+
.build()
55+
56+
val anyAdapterField = FieldSpec.builder(anyAdapter, "OptionalAnyAdapter", Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL)
57+
.initializer("new $T($T.AnyAdapter)", anyAdapter, JavaClassNames.Adapters)
58+
.build()
59+
60+
return TypeSpec.classBuilder(simpleName)
61+
.addModifiers(Modifier.PUBLIC)
62+
.addField(stringAdapterField)
63+
.addField(doubleAdapterField)
64+
.addField(intAdapterField)
65+
.addField(booleanAdapterField)
66+
.addField(anyAdapterField)
67+
.build()
68+
}
69+
}

0 commit comments

Comments
 (0)