Skip to content

Commit a14e3b3

Browse files
committed
Revert typealiases and use DeferredFragmentIdentifier again
1 parent 08c7a05 commit a14e3b3

File tree

19 files changed

+202
-355
lines changed

19 files changed

+202
-355
lines changed

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

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -530,6 +530,7 @@ public final class com/apollographql/apollo/api/DefaultUploadKt {
530530
}
531531

532532
public final class com/apollographql/apollo/api/DeferredFragmentIdentifier {
533+
public static final field Companion Lcom/apollographql/apollo/api/DeferredFragmentIdentifier$Companion;
533534
public fun <init> (Ljava/util/List;Ljava/lang/String;)V
534535
public final fun component1 ()Ljava/util/List;
535536
public final fun component2 ()Ljava/lang/String;
@@ -542,6 +543,10 @@ public final class com/apollographql/apollo/api/DeferredFragmentIdentifier {
542543
public fun toString ()Ljava/lang/String;
543544
}
544545

546+
public final class com/apollographql/apollo/api/DeferredFragmentIdentifier$Companion {
547+
public final fun getPending ()Lcom/apollographql/apollo/api/DeferredFragmentIdentifier;
548+
}
549+
545550
public final class com/apollographql/apollo/api/EnumType : com/apollographql/apollo/api/CompiledNamedType {
546551
public fun <init> (Ljava/lang/String;Ljava/util/List;)V
547552
public final fun getValues ()Ljava/util/List;
@@ -713,12 +718,6 @@ public final class com/apollographql/apollo/api/ImmutableMapBuilder {
713718
public final fun put (Ljava/lang/Object;Ljava/lang/Object;)Lcom/apollographql/apollo/api/ImmutableMapBuilder;
714719
}
715720

716-
public final class com/apollographql/apollo/api/IncrementalResultIdentifierKt {
717-
public static final fun isPending (Ljava/util/Set;)Z
718-
public static final fun nonPending (Ljava/util/Set;)Ljava/util/Set;
719-
public static final fun pending (Ljava/util/Set;)Ljava/util/Set;
720-
}
721-
722721
public final class com/apollographql/apollo/api/InputObjectType : com/apollographql/apollo/api/CompiledNamedType {
723722
public fun <init> (Ljava/lang/String;)V
724723
}

libraries/apollo-api/api/apollo-api.klib.api

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -994,6 +994,11 @@ final class com.apollographql.apollo.api/DeferredFragmentIdentifier { // com.apo
994994
final fun equals(kotlin/Any?): kotlin/Boolean // com.apollographql.apollo.api/DeferredFragmentIdentifier.equals|equals(kotlin.Any?){}[0]
995995
final fun hashCode(): kotlin/Int // com.apollographql.apollo.api/DeferredFragmentIdentifier.hashCode|hashCode(){}[0]
996996
final fun toString(): kotlin/String // com.apollographql.apollo.api/DeferredFragmentIdentifier.toString|toString(){}[0]
997+
998+
final object Companion { // com.apollographql.apollo.api/DeferredFragmentIdentifier.Companion|null[0]
999+
final val Pending // com.apollographql.apollo.api/DeferredFragmentIdentifier.Companion.Pending|{}Pending[0]
1000+
final fun <get-Pending>(): com.apollographql.apollo.api/DeferredFragmentIdentifier // com.apollographql.apollo.api/DeferredFragmentIdentifier.Companion.Pending.<get-Pending>|<get-Pending>(){}[0]
1001+
}
9971002
}
9981003

9991004
final class com.apollographql.apollo.api/EnumType : com.apollographql.apollo.api/CompiledNamedType { // com.apollographql.apollo.api/EnumType|null[0]
@@ -1429,9 +1434,6 @@ final fun (com.apollographql.apollo.api/Operation.Data).com.apollographql.apollo
14291434
final fun (kotlin.collections/List<com.apollographql.apollo.api.http/HttpHeader>).com.apollographql.apollo.api.http/get(kotlin/String): kotlin/String? // com.apollographql.apollo.api.http/get|[email protected]<com.apollographql.apollo.api.http.HttpHeader>(kotlin.String){}[0]
14301435
final fun (kotlin.collections/List<com.apollographql.apollo.api.http/HttpHeader>).com.apollographql.apollo.api.http/valueOf(kotlin/String): kotlin/String? // com.apollographql.apollo.api.http/valueOf|[email protected]<com.apollographql.apollo.api.http.HttpHeader>(kotlin.String){}[0]
14311436
final fun (kotlin.collections/Map<kotlin/String, kotlin/Any?>).com.apollographql.apollo.api.json/jsonReader(): com.apollographql.apollo.api.json/JsonReader // com.apollographql.apollo.api.json/jsonReader|[email protected]<kotlin.String,kotlin.Any?>(){}[0]
1432-
final fun (kotlin.collections/Set<com.apollographql.apollo.api/DeferredFragmentIdentifier>).com.apollographql.apollo.api/isPending(): kotlin/Boolean // com.apollographql.apollo.api/isPending|[email protected]<com.apollographql.apollo.api.DeferredFragmentIdentifier>(){}[0]
1433-
final fun (kotlin.collections/Set<com.apollographql.apollo.api/DeferredFragmentIdentifier>).com.apollographql.apollo.api/nonPending(): kotlin.collections/Set<com.apollographql.apollo.api/DeferredFragmentIdentifier> // com.apollographql.apollo.api/nonPending|[email protected]<com.apollographql.apollo.api.DeferredFragmentIdentifier>(){}[0]
1434-
final fun (kotlin.collections/Set<com.apollographql.apollo.api/DeferredFragmentIdentifier>).com.apollographql.apollo.api/pending(): kotlin.collections/Set<com.apollographql.apollo.api/DeferredFragmentIdentifier> // com.apollographql.apollo.api/pending|[email protected]<com.apollographql.apollo.api.DeferredFragmentIdentifier>(){}[0]
14351437
final fun (kotlin/String).com.apollographql.apollo.api.http.internal/urlDecode(): kotlin/String // com.apollographql.apollo.api.http.internal/urlDecode|[email protected](){}[0]
14361438
final fun (kotlin/String).com.apollographql.apollo.api.http.internal/urlEncode(): kotlin/String // com.apollographql.apollo.api.http.internal/urlEncode|[email protected](){}[0]
14371439
final fun (okio/BufferedSource).com.apollographql.apollo.api.json/jsonReader(): com.apollographql.apollo.api.json/JsonReader // com.apollographql.apollo.api.json/jsonReader|[email protected](){}[0]

libraries/apollo-api/src/commonMain/kotlin/com/apollographql/apollo/api/BooleanExpression.kt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -67,30 +67,26 @@ internal fun <T : Any> BooleanExpression<T>.evaluate(block: (T) -> Boolean): Boo
6767
fun BooleanExpression<BTerm>.evaluate(
6868
variables: Set<String>?,
6969
typename: String?,
70-
deferredFragmentIdentifiers: IncrementalResultIdentifiers?,
70+
deferredFragmentIdentifiers: Set<DeferredFragmentIdentifier>?,
7171
path: List<Any>?,
7272
): Boolean {
7373
// Remove "data" from the path
7474
val croppedPath = path?.drop(1)
7575
return evaluate {
7676
when (it) {
7777
is BVariable -> !(variables?.contains(it.name) ?: false)
78-
is BLabel -> shouldParseFragment(deferredFragmentIdentifiers = deferredFragmentIdentifiers, path = croppedPath!!, label = it.label)
78+
is BLabel -> shouldParseFragment(deferredFragmentIdentifiers, croppedPath!!, it.label)
7979
is BPossibleTypes -> it.possibleTypes.contains(typename)
8080
}
8181
}
8282
}
8383

84-
private fun shouldParseFragment(
85-
deferredFragmentIdentifiers: IncrementalResultIdentifiers?,
86-
path: List<Any>,
87-
label: String?,
88-
): Boolean {
84+
private fun shouldParseFragment(deferredFragmentIdentifiers: Set<DeferredFragmentIdentifier>?, path: List<Any>, label: String?): Boolean {
8985
if (deferredFragmentIdentifiers == null) {
9086
// By default, parse all deferred fragments - this is the case when parsing from the normalized cache.
9187
return true
9288
}
93-
val identifier = IncrementalResultIdentifier(path, label)
89+
val identifier = DeferredFragmentIdentifier(path, label)
9490
return if (deferredFragmentIdentifiers.isPending()) {
9591
// Modern protocol: parse fragments that are _not_ pending
9692
!deferredFragmentIdentifiers.contains(identifier)
@@ -100,6 +96,10 @@ private fun shouldParseFragment(
10096
}
10197
}
10298

99+
private fun Set<DeferredFragmentIdentifier>.isPending(): Boolean {
100+
return any { it === DeferredFragmentIdentifier.Pending }
101+
}
102+
103103
/**
104104
* A generic term in a [BooleanExpression]
105105
*/

libraries/apollo-api/src/commonMain/kotlin/com/apollographql/apollo/api/CustomScalarAdapters.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@ class CustomScalarAdapters private constructor(
1919
@JvmField
2020
val falseVariables: Set<String>?,
2121
/**
22-
* Incremental result identifiers used to determine whether the parser must parse deferred fragments
22+
* Identifiers used to determine whether the parser must parse deferred fragments
2323
*/
2424
@JvmField
25-
val deferredFragmentIdentifiers: IncrementalResultIdentifiers?,
25+
val deferredFragmentIdentifiers: Set<DeferredFragmentIdentifier>?,
2626
/**
2727
* Errors to use with @catch
2828
*/
@@ -131,14 +131,14 @@ class CustomScalarAdapters private constructor(
131131
class Builder {
132132
private val adaptersMap: MutableMap<String, Adapter<*>> = mutableMapOf()
133133
private var falseVariables: Set<String>? = null
134-
private var deferredFragmentIdentifiers: IncrementalResultIdentifiers? = null
134+
private var deferredFragmentIdentifiers: Set<DeferredFragmentIdentifier>? = null
135135
private var errors: List<Error>? = null
136136

137137
fun falseVariables(falseVariables: Set<String>?) = apply {
138138
this.falseVariables = falseVariables
139139
}
140140

141-
fun deferredFragmentIdentifiers(deferredFragmentIdentifiers: IncrementalResultIdentifiers?) = apply {
141+
fun deferredFragmentIdentifiers(deferredFragmentIdentifiers: Set<DeferredFragmentIdentifier>?) = apply {
142142
this.deferredFragmentIdentifiers = deferredFragmentIdentifiers
143143
}
144144

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.apollographql.apollo.api
2+
3+
import com.apollographql.apollo.annotations.ApolloInternal
4+
5+
data class DeferredFragmentIdentifier(
6+
/**
7+
* Path of the fragment in the overall JSON response. The elements can either be Strings (names) or Integers (array indices).
8+
*/
9+
val path: List<Any>,
10+
val label: String?,
11+
) {
12+
companion object {
13+
/**
14+
* Special identifier to signal that the identifiers are pending, as in the modern version of the protocol.
15+
*/
16+
@ApolloInternal
17+
val Pending = DeferredFragmentIdentifier(emptyList(), "__pending")
18+
}
19+
}

libraries/apollo-api/src/commonMain/kotlin/com/apollographql/apollo/api/Executables.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,8 @@ fun <D : Executable.Data> Executable<D>.parseData(
7171
jsonReader: JsonReader,
7272
customScalarAdapters: CustomScalarAdapters = CustomScalarAdapters.Empty,
7373
falseVariables: Set<String>? = null,
74-
deferredFragmentIds: IncrementalResultIdentifiers? = null,
75-
errors: List<Error>? = null,
74+
deferredFragmentIds: Set<DeferredFragmentIdentifier>? = null,
75+
errors: List<Error>? = null
7676
): D? {
7777
val customScalarAdapters1 = customScalarAdapters.newBuilder()
7878
.falseVariables(falseVariables)
@@ -89,4 +89,4 @@ fun <D : Executable.Data> Executable<D>.composeData(
8989
value: D
9090
) {
9191
adapter().toJson(jsonWriter, customScalarAdapters, value)
92-
}
92+
}

libraries/apollo-api/src/commonMain/kotlin/com/apollographql/apollo/api/IncrementalResultIdentifier.kt

Lines changed: 0 additions & 41 deletions
This file was deleted.

libraries/apollo-api/src/commonMain/kotlin/com/apollographql/apollo/api/Operations.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ fun <D : Operation.Data> Operation<D>.composeJsonRequest(
7070
fun <D : Operation.Data> Operation<D>.parseJsonResponse(
7171
jsonReader: JsonReader,
7272
customScalarAdapters: CustomScalarAdapters = CustomScalarAdapters.Empty,
73-
deferredFragmentIdentifiers: IncrementalResultIdentifiers? = null,
73+
deferredFragmentIdentifiers: Set<DeferredFragmentIdentifier>? = null,
7474
): ApolloResponse<D> {
7575
return jsonReader.use {
7676
ResponseParser.parse(
@@ -103,7 +103,7 @@ fun <D : Operation.Data> Operation<D>.parseResponse(
103103
jsonReader: JsonReader,
104104
requestUuid: Uuid? = null,
105105
customScalarAdapters: CustomScalarAdapters = CustomScalarAdapters.Empty,
106-
deferredFragmentIdentifiers: IncrementalResultIdentifiers? = null,
106+
deferredFragmentIdentifiers: Set<DeferredFragmentIdentifier>? = null,
107107
): ApolloResponse<D> {
108108
return try {
109109
ResponseParser.parse(
@@ -177,7 +177,7 @@ fun <D : Operation.Data> JsonReader.toApolloResponse(
177177
operation: Operation<D>,
178178
requestUuid: Uuid? = null,
179179
customScalarAdapters: CustomScalarAdapters = CustomScalarAdapters.Empty,
180-
deferredFragmentIdentifiers: IncrementalResultIdentifiers? = null,
180+
deferredFragmentIdentifiers: Set<DeferredFragmentIdentifier>? = null,
181181
): ApolloResponse<D> {
182182
return use {
183183
try {
@@ -213,7 +213,7 @@ fun <D : Operation.Data> JsonReader.parseResponse(
213213
operation: Operation<D>,
214214
requestUuid: Uuid? = null,
215215
customScalarAdapters: CustomScalarAdapters = CustomScalarAdapters.Empty,
216-
deferredFragmentIdentifiers: IncrementalResultIdentifiers? = null,
216+
deferredFragmentIdentifiers: Set<DeferredFragmentIdentifier>? = null,
217217
): ApolloResponse<D> {
218218
return try {
219219
ResponseParser.parse(

libraries/apollo-api/src/commonMain/kotlin/com/apollographql/apollo/api/internal/ResponseParser.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ package com.apollographql.apollo.api.internal
33
import com.apollographql.apollo.annotations.ApolloInternal
44
import com.apollographql.apollo.api.ApolloResponse
55
import com.apollographql.apollo.api.CustomScalarAdapters
6+
import com.apollographql.apollo.api.DeferredFragmentIdentifier
67
import com.apollographql.apollo.api.Error
7-
import com.apollographql.apollo.api.IncrementalResultIdentifiers
88
import com.apollographql.apollo.api.Operation
99
import com.apollographql.apollo.api.falseVariables
1010
import com.apollographql.apollo.api.json.JsonReader
@@ -24,7 +24,7 @@ internal object ResponseParser {
2424
operation: Operation<D>,
2525
requestUuid: Uuid?,
2626
customScalarAdapters: CustomScalarAdapters,
27-
deferredFragmentIds: IncrementalResultIdentifiers?,
27+
deferredFragmentIds: Set<DeferredFragmentIdentifier>?,
2828
): ApolloResponse<D> {
2929
jsonReader.beginObject()
3030

libraries/apollo-runtime/src/commonMain/kotlin/com/apollographql/apollo/internal/incremental/GraphQL17Alpha2IncrementalResultsMerger.kt

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.apollographql.apollo.internal.incremental
22

3-
import com.apollographql.apollo.api.IncrementalResultIdentifier
4-
import com.apollographql.apollo.api.IncrementalResultIdentifiers
3+
import com.apollographql.apollo.api.DeferredFragmentIdentifier
54
import okio.BufferedSource
65

76
/**
@@ -12,12 +11,12 @@ internal class GraphQL17Alpha2IncrementalResultsMerger : IncrementalResultsMerge
1211
private val _merged: MutableJsonMap = mutableMapOf()
1312
override val merged: JsonMap = _merged
1413

15-
private val _incrementalResultIds = mutableSetOf<IncrementalResultIdentifier>()
14+
private val _deferredFragmentIdentifiers = mutableSetOf<DeferredFragmentIdentifier>()
1615

1716
/**
1817
* For this protocol, this represents the set of fragment ids that are already merged.
1918
*/
20-
override val incrementalResultIdentifiers: IncrementalResultIdentifiers = _incrementalResultIds
19+
override val deferredFragmentIdentifiers: Set<DeferredFragmentIdentifier> = _deferredFragmentIdentifiers
2120

2221
override var hasNext: Boolean = true
2322
private set
@@ -77,13 +76,13 @@ internal class GraphQL17Alpha2IncrementalResultsMerger : IncrementalResultsMerge
7776
val nodeToMergeInto = nodeAtPath(mergedData, path) as MutableJsonMap
7877
deepMergeObject(nodeToMergeInto, data)
7978

80-
_incrementalResultIds += IncrementalResultIdentifier(path = path, label = incrementalResult["label"] as String?)
79+
_deferredFragmentIdentifiers += DeferredFragmentIdentifier(path = path, label = incrementalResult["label"] as String?)
8180
}
8281
}
8382

8483
override fun reset() {
8584
_merged.clear()
86-
_incrementalResultIds.clear()
85+
_deferredFragmentIdentifiers.clear()
8786
hasNext = true
8887
isEmptyResponse = false
8988
}

0 commit comments

Comments
 (0)