Skip to content

Commit 3276c57

Browse files
committed
Deprecate intermediate Builders functions
1 parent 13c81ff commit 3276c57

File tree

5 files changed

+166
-12
lines changed

5 files changed

+166
-12
lines changed

libraries/apollo-annotations/src/commonMain/kotlin/com/apollographql/apollo/annotations/ApolloDeprecatedSince.kt

+1
Original file line numberDiff line numberDiff line change
@@ -33,5 +33,6 @@ annotation class ApolloDeprecatedSince(val version: Version) {
3333
v4_0_0,
3434
v4_0_1,
3535
v4_0_2,
36+
v4_1_1,
3637
}
3738
}

libraries/apollo-runtime/src/commonMain/kotlin/com/apollographql/apollo/ApolloClient.kt

+115-6
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ import kotlin.jvm.JvmStatic
7373
*
7474
* On native targets, [ApolloClient.close] must be called to release resources when not in use anymore.
7575
*/
76+
@Suppress("DEPRECATION")
7677
class ApolloClient
7778
private constructor(
7879
private val builder: Builder,
@@ -351,6 +352,8 @@ private constructor(
351352
val interceptors: List<ApolloInterceptor> = _interceptors
352353

353354
private val _httpInterceptors: MutableList<HttpInterceptor> = mutableListOf()
355+
@Deprecated("HTTP properties should be set on HttpNetworkTransport directly")
356+
@ApolloDeprecatedSince(ApolloDeprecatedSince.Version.v4_1_1)
354357
val httpInterceptors: List<HttpInterceptor> = _httpInterceptors
355358

356359
private val _listeners: MutableList<ApolloClientListener> = mutableListOf()
@@ -378,20 +381,36 @@ private constructor(
378381
private set
379382
var httpServerUrl: String? = null
380383
private set
384+
@Deprecated("HTTP properties should be set on HttpNetworkTransport directly")
385+
@ApolloDeprecatedSince(ApolloDeprecatedSince.Version.v4_1_1)
381386
var httpEngine: HttpEngine? = null
382387
private set
388+
@Deprecated("WebSockets properties should be set on WebSocketNetworkTransport directly")
389+
@ApolloDeprecatedSince(ApolloDeprecatedSince.Version.v4_1_1)
383390
var webSocketServerUrl: String? = null
384391
private set
392+
@Deprecated("WebSockets properties should be set on WebSocketNetworkTransport directly")
393+
@ApolloDeprecatedSince(ApolloDeprecatedSince.Version.v4_1_1)
385394
var webSocketIdleTimeoutMillis: Long? = null
386395
private set
396+
@Deprecated("WebSockets properties should be set on WebSocketNetworkTransport directly")
397+
@ApolloDeprecatedSince(ApolloDeprecatedSince.Version.v4_1_1)
387398
var wsProtocolFactory: WsProtocol.Factory? = null
388399
private set
400+
@Deprecated("HTTP properties should be set on HttpNetworkTransport directly")
401+
@ApolloDeprecatedSince(ApolloDeprecatedSince.Version.v4_1_1)
389402
var httpExposeErrorBody: Boolean? = null
390403
private set
404+
@Deprecated("WebSockets properties should be set on WebSocketNetworkTransport directly")
405+
@ApolloDeprecatedSince(ApolloDeprecatedSince.Version.v4_1_1)
391406
var webSocketEngine: WebSocketEngine? = null
392407
private set
408+
@Deprecated("WebSockets properties should be set on WebSocketNetworkTransport directly")
409+
@ApolloDeprecatedSince(ApolloDeprecatedSince.Version.v4_1_1)
393410
var webSocketReopenWhen: (suspend (Throwable, attempt: Long) -> Boolean)? = null
394411
private set
412+
@Deprecated("WebSockets properties should be set on WebSocketNetworkTransport directly")
413+
@ApolloDeprecatedSince(ApolloDeprecatedSince.Version.v4_1_1)
395414
var webSocketReopenServerUrl: (suspend () -> String)? = null
396415
private set
397416

@@ -560,11 +579,11 @@ private constructor(
560579
/**
561580
* The http:// or https:// url of the GraphQL server.
562581
*
563-
* This is the same as [httpServerUrl].
564-
*
565-
* This is a convenience function that configures the underlying [HttpNetworkTransport]. See also [networkTransport] for more customization.
582+
* This is a convenience function that configures a default [HttpNetworkTransport] to use with queries/mutations
583+
* and a default [WebSocketNetworkTransport] to use with subscriptions.
566584
*
567585
* @see networkTransport
586+
* @see subscriptionNetworkTransport
568587
*/
569588
fun serverUrl(serverUrl: String) = apply {
570589
httpServerUrl = serverUrl
@@ -573,12 +592,18 @@ private constructor(
573592
/**
574593
* The http:// or https:// url of the GraphQL server.
575594
*
576-
* This is the same as [serverUrl].
577-
*
578595
* This is a convenience function that configures the underlying [HttpNetworkTransport]. See also [networkTransport] for more customization.
579596
*
580597
* @see networkTransport
581598
*/
599+
@Deprecated(
600+
"Use networkTransport() instead",
601+
ReplaceWith(
602+
"networkTransport(HttpNetworkTransport.Builder().serverUrl(httpServerUrl).build())",
603+
"com.apollographql.apollo.network.http.HttpNetworkTransport"
604+
)
605+
)
606+
@ApolloDeprecatedSince(ApolloDeprecatedSince.Version.v4_1_1)
582607
fun httpServerUrl(httpServerUrl: String?) = apply {
583608
this.httpServerUrl = httpServerUrl
584609
}
@@ -590,6 +615,14 @@ private constructor(
590615
*
591616
* @see networkTransport
592617
*/
618+
@Deprecated(
619+
"Use networkTransport() instead",
620+
ReplaceWith(
621+
"networkTransport(HttpNetworkTransport.Builder().httpEngine(httpEngine).build())",
622+
"com.apollographql.apollo.network.http.HttpNetworkTransport"
623+
)
624+
)
625+
@ApolloDeprecatedSince(ApolloDeprecatedSince.Version.v4_1_1)
593626
fun httpEngine(httpEngine: HttpEngine?) = apply {
594627
this.httpEngine = httpEngine
595628
}
@@ -604,17 +637,33 @@ private constructor(
604637
*
605638
* @param httpExposeErrorBody whether to expose the error body or `null` to use the `false` default.
606639
*/
640+
@Deprecated(
641+
"Use networkTransport() instead",
642+
ReplaceWith(
643+
"networkTransport(HttpNetworkTransport.Builder().exposeErrorBody(httpExposeErrorBody).build())",
644+
"com.apollographql.apollo.network.http.HttpNetworkTransport"
645+
)
646+
)
647+
@ApolloDeprecatedSince(ApolloDeprecatedSince.Version.v4_1_1)
607648
fun httpExposeErrorBody(httpExposeErrorBody: Boolean?) = apply {
608649
this.httpExposeErrorBody = httpExposeErrorBody
609650
}
610651

611652
/**
612-
* Adds [httpInterceptor] to the list of HTTP interceptors.
653+
* Adds [httpInterceptors] to the list of HTTP interceptors.
613654
*
614655
* This is a convenience function that configures the underlying [HttpNetworkTransport]. See also [networkTransport] for more customization.
615656
*
616657
* @see networkTransport
617658
*/
659+
@Deprecated(
660+
"Use networkTransport() instead",
661+
ReplaceWith(
662+
"networkTransport(HttpNetworkTransport.Builder().interceptors(httpInterceptors).build())",
663+
"com.apollographql.apollo.network.http.HttpNetworkTransport"
664+
)
665+
)
666+
@ApolloDeprecatedSince(ApolloDeprecatedSince.Version.v4_1_1)
618667
fun httpInterceptors(httpInterceptors: List<HttpInterceptor>) = apply {
619668
_httpInterceptors.clear()
620669
_httpInterceptors.addAll(httpInterceptors)
@@ -627,13 +676,25 @@ private constructor(
627676
*
628677
* @see networkTransport
629678
*/
679+
@Deprecated(
680+
"Use networkTransport() instead",
681+
ReplaceWith(
682+
"networkTransport(HttpNetworkTransport.Builder().addInterceptor(httpInterceptor).build())",
683+
"com.apollographql.apollo.network.http.HttpNetworkTransport"
684+
)
685+
)
686+
@ApolloDeprecatedSince(ApolloDeprecatedSince.Version.v4_1_1)
630687
fun addHttpInterceptor(httpInterceptor: HttpInterceptor) = apply {
631688
_httpInterceptors += httpInterceptor
632689
}
633690

634691
/**
635692
* Removes [httpInterceptor] from the list of HTTP interceptors.
636693
*/
694+
@Deprecated(
695+
"Use networkTransport() instead",
696+
)
697+
@ApolloDeprecatedSince(ApolloDeprecatedSince.Version.v4_1_1)
637698
fun removeHttpInterceptor(httpInterceptor: HttpInterceptor) = apply {
638699
_httpInterceptors -= httpInterceptor
639700
}
@@ -646,6 +707,14 @@ private constructor(
646707
*
647708
* @see subscriptionNetworkTransport
648709
*/
710+
@Deprecated(
711+
"Use subscriptionNetworkTransport() instead",
712+
ReplaceWith(
713+
"subscriptionNetworkTransport(WebSocketNetworkTransport.Builder().serverUrl(webSocketServerUrl).build())",
714+
"com.apollographql.apollo.network.ws.WebSocketNetworkTransport"
715+
)
716+
)
717+
@ApolloDeprecatedSince(ApolloDeprecatedSince.Version.v4_1_1)
649718
fun webSocketServerUrl(webSocketServerUrl: String?) = apply {
650719
this.webSocketServerUrl = webSocketServerUrl
651720
}
@@ -664,6 +733,14 @@ private constructor(
664733
*
665734
* @see subscriptionNetworkTransport
666735
*/
736+
@Deprecated(
737+
"Use subscriptionNetworkTransport() instead",
738+
ReplaceWith(
739+
"subscriptionNetworkTransport(WebSocketNetworkTransport.Builder().serverUrl(webSocketServerUrl).build())",
740+
"com.apollographql.apollo.network.ws.WebSocketNetworkTransport"
741+
)
742+
)
743+
@ApolloDeprecatedSince(ApolloDeprecatedSince.Version.v4_1_1)
667744
fun webSocketServerUrl(webSocketServerUrl: (suspend () -> String)?) = apply {
668745
this.webSocketReopenServerUrl = webSocketServerUrl
669746
}
@@ -677,6 +754,14 @@ private constructor(
677754
*
678755
* @see subscriptionNetworkTransport
679756
*/
757+
@Deprecated(
758+
"Use subscriptionNetworkTransport() instead",
759+
ReplaceWith(
760+
"subscriptionNetworkTransport(WebSocketNetworkTransport.Builder().idleTimeoutMillis(webSocketIdleTimeoutMillis).build())",
761+
"com.apollographql.apollo.network.ws.WebSocketNetworkTransport"
762+
)
763+
)
764+
@ApolloDeprecatedSince(ApolloDeprecatedSince.Version.v4_1_1)
680765
fun webSocketIdleTimeoutMillis(webSocketIdleTimeoutMillis: Long?) = apply {
681766
this.webSocketIdleTimeoutMillis = webSocketIdleTimeoutMillis
682767
}
@@ -688,6 +773,14 @@ private constructor(
688773
*
689774
* @see subscriptionNetworkTransport
690775
*/
776+
@Deprecated(
777+
"Use subscriptionNetworkTransport() instead",
778+
ReplaceWith(
779+
"subscriptionNetworkTransport(WebSocketNetworkTransport.Builder().protocol(wsProtocolFactory).build())",
780+
"com.apollographql.apollo.network.ws.WebSocketNetworkTransport"
781+
)
782+
)
783+
@ApolloDeprecatedSince(ApolloDeprecatedSince.Version.v4_1_1)
691784
fun wsProtocol(wsProtocolFactory: WsProtocol.Factory?) = apply {
692785
this.wsProtocolFactory = wsProtocolFactory
693786
}
@@ -699,6 +792,14 @@ private constructor(
699792
*
700793
* @see subscriptionNetworkTransport
701794
*/
795+
@Deprecated(
796+
"Use subscriptionNetworkTransport() instead",
797+
ReplaceWith(
798+
"subscriptionNetworkTransport(WebSocketNetworkTransport.Builder().webSocketEngine(webSocketEngine).build())",
799+
"com.apollographql.apollo.network.ws.WebSocketNetworkTransport"
800+
)
801+
)
802+
@ApolloDeprecatedSince(ApolloDeprecatedSince.Version.v4_1_1)
702803
fun webSocketEngine(webSocketEngine: WebSocketEngine?) = apply {
703804
this.webSocketEngine = webSocketEngine
704805
}
@@ -717,6 +818,14 @@ private constructor(
717818
*
718819
* @see subscriptionNetworkTransport
719820
*/
821+
@Deprecated(
822+
"Use subscriptionNetworkTransport() instead",
823+
ReplaceWith(
824+
"subscriptionNetworkTransport(WebSocketNetworkTransport.Builder().reopenWhen(webSocketReopenWhen).build())",
825+
"com.apollographql.apollo.network.ws.WebSocketNetworkTransport"
826+
)
827+
)
828+
@ApolloDeprecatedSince(ApolloDeprecatedSince.Version.v4_1_1)
720829
fun webSocketReopenWhen(webSocketReopenWhen: (suspend (Throwable, attempt: Long) -> Boolean)?) = apply {
721830
this.webSocketReopenWhen = webSocketReopenWhen
722831
}

libraries/apollo-runtime/src/jvmCommonMain/kotlin/com/apollographql/apollo/network/OkHttpExtensions.kt

+46-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
1+
@file:Suppress("DEPRECATION")
2+
13
package com.apollographql.apollo.network
24

35
import com.apollographql.apollo.ApolloClient
6+
import com.apollographql.apollo.annotations.ApolloDeprecatedSince
47
import com.apollographql.apollo.api.http.HttpHeader
58
import com.apollographql.apollo.network.http.DefaultHttpEngine
69
import com.apollographql.apollo.network.http.HttpNetworkTransport
@@ -16,6 +19,18 @@ import okhttp3.OkHttpClient
1619
*
1720
* See also [ApolloClient.Builder.httpEngine] and [ApolloClient.Builder.webSocketEngine]
1821
*/
22+
@Deprecated(
23+
"Use networkTransport() instead",
24+
ReplaceWith(
25+
"networkTransport(HttpNetworkTransport.Builder().httpEngine(DefaultHttpEngine(okHttpClient)).build())" +
26+
".subscriptionNetworkTransport(WebSocketNetworkTransport.Builder().webSocketEngine(DefaultWebSocketEngine(okHttpClient)).build())",
27+
"com.apollographql.apollo.network.http.HttpNetworkTransport",
28+
"com.apollographql.apollo.network.http.DefaultHttpEngine",
29+
"com.apollographql.apollo.network.ws.DefaultWebSocketEngine",
30+
"com.apollographql.apollo.network.ws.WebSocketNetworkTransport"
31+
)
32+
)
33+
@ApolloDeprecatedSince(ApolloDeprecatedSince.Version.v4_1_1)
1934
fun ApolloClient.Builder.okHttpClient(okHttpClient: OkHttpClient) = apply {
2035
httpEngine(DefaultHttpEngine(okHttpClient))
2136
webSocketEngine(DefaultWebSocketEngine(okHttpClient))
@@ -24,36 +39,61 @@ fun ApolloClient.Builder.okHttpClient(okHttpClient: OkHttpClient) = apply {
2439
/**
2540
* Configures the [ApolloClient] to use the [callFactory] for network requests.
2641
*/
42+
@Deprecated(
43+
"Use networkTransport() instead",
44+
ReplaceWith(
45+
"networkTransport(HttpNetworkTransport.Builder().httpEngine(DefaultHttpEngine(callFactory)).build())",
46+
"com.apollographql.apollo.network.http.HttpNetworkTransport",
47+
"com.apollographql.apollo.network.http.DefaultHttpEngine",
48+
)
49+
)
50+
@ApolloDeprecatedSince(ApolloDeprecatedSince.Version.v4_1_1)
2751
fun ApolloClient.Builder.okHttpCallFactory(callFactory: Call.Factory) = apply {
2852
httpEngine(DefaultHttpEngine(callFactory))
2953
}
3054

3155
/**
3256
* Configures the [ApolloClient] to use the lazily initialized [callFactory] for network requests.
3357
*/
58+
@Deprecated(
59+
"Use networkTransport() instead",
60+
ReplaceWith(
61+
"networkTransport(HttpNetworkTransport.Builder().httpEngine(DefaultHttpEngine(callFactory)).build())",
62+
"com.apollographql.apollo.network.http.HttpNetworkTransport",
63+
"com.apollographql.apollo.network.http.DefaultHttpEngine",
64+
)
65+
)
66+
@ApolloDeprecatedSince(ApolloDeprecatedSince.Version.v4_1_1)
3467
fun ApolloClient.Builder.okHttpCallFactory(callFactory: () -> Call.Factory) = apply {
3568
httpEngine(DefaultHttpEngine(callFactory))
3669
}
3770

3871
/**
3972
* Configures the [HttpNetworkTransport] to use the [DefaultHttpEngine] for network requests.
4073
*/
74+
@Deprecated("Use httpEngine instead.", ReplaceWith("httpEngine(DefaultHttpEngine(okHttpClient))"))
4175
fun HttpNetworkTransport.Builder.okHttpClient(okHttpClient: OkHttpClient) = apply {
4276
httpEngine(DefaultHttpEngine(okHttpClient))
4377
}
4478

4579
/**
46-
* Configures the [HttpNetworkTransport] to use the [okHttpCallFactory] for network requests.
80+
* Configures the [OkHttpClient] to use for HTTP requests.
81+
*
82+
* This is the same function as [okHttpCallFactory]
4783
*/
48-
fun HttpNetworkTransport.Builder.okHttpCallFactory(okHttpCallFactory: Call.Factory) = apply {
49-
httpEngine(DefaultHttpEngine(okHttpCallFactory))
84+
@Deprecated("Use webSocketEngine instead.", ReplaceWith("webSocketEngine(DefaultWebSocketEngine(okHttpClient))"))
85+
@ApolloDeprecatedSince(ApolloDeprecatedSince.Version.v4_1_1)
86+
fun WebSocketNetworkTransport.Builder.okHttpClient(okHttpClient: OkHttpClient) = apply {
87+
webSocketEngine(DefaultWebSocketEngine(okHttpClient))
5088
}
5189

5290
/**
53-
* Configures the [WebSocketNetworkTransport] to use the [okHttpCallFactory] for network requests.
91+
* Configures the [Call.Factory] to use for HTTP requests.
5492
*/
55-
fun WebSocketNetworkTransport.Builder.okHttpClient(okHttpClient: OkHttpClient) = apply {
56-
webSocketEngine(DefaultWebSocketEngine(okHttpClient))
93+
@Deprecated("Use httpEngine instead.", ReplaceWith("httpEngine(DefaultHttpEngine(callFactory))"))
94+
@ApolloDeprecatedSince(ApolloDeprecatedSince.Version.v4_1_1)
95+
fun HttpNetworkTransport.Builder.okHttpCallFactory(callFactory: Call.Factory) = apply {
96+
httpEngine(DefaultHttpEngine(callFactory))
5797
}
5898

5999
internal fun List<HttpHeader>.toOkHttpHeaders(): Headers =

libraries/apollo-runtime/src/jvmCommonMain/kotlin/com/apollographql/apollo/network/http/DefaultHttpEngine.jvm.kt

+3
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ actual fun DefaultHttpEngine(timeoutMillis: Long): HttpEngine = JvmHttpEngine(ti
2727

2828
fun DefaultHttpEngine(httpCallFactory: Call.Factory): HttpEngine = JvmHttpEngine(httpCallFactory)
2929

30+
/**
31+
* See https://github.com/square/okhttp/pull/8248 for why we use a lambda here
32+
*/
3033
fun DefaultHttpEngine(httpCallFactory: () -> Call.Factory): HttpEngine = JvmHttpEngine(httpCallFactory)
3134

3235
fun DefaultHttpEngine(okHttpClient: OkHttpClient): HttpEngine = JvmHttpEngine(okHttpClient)

libraries/apollo-runtime/src/jvmCommonMain/kotlin/com/apollographql/apollo/network/ws/OkHttpWebSocketEngine.kt

+1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ actual class DefaultWebSocketEngine(
3030
* See https://github.com/square/okhttp/pull/8248
3131
*/
3232
constructor(webSocketFactory: WebSocket.Factory): this({webSocketFactory})
33+
3334
actual constructor() : this(
3435
webSocketFactory = defaultOkHttpClientBuilder.build()
3536
)

0 commit comments

Comments
 (0)