Deprecate the introspectionEnabled option and remove it in 15.0.0
維護者通常 1 天內回覆
還沒有人認領這個 Issue。
評估
- 難度
- 4/5
- 預估耗時
- 3-5 天
- 新手友好度
- 56/100
- Issue 類型
- 重構
- 描述清晰度
- 描述清楚
- 活躍度
- 活躍
研究方向
Start with SchemaParserOptions, SchemaParser.parseSchemaObjects, and the related tests in IntrospectionTest; inspect how #849 added BlockedFields and how the existing option is exposed. Deprecate the builder method and property in a 14.x release with guidance to the graphql-java switches, then remove them and the BlockedFields logic and tests in 15.0.0. Done when the option is removed in 15.0.0 and introspection behavior follows the migration guidance.
由索引模型根據 Issue 內容生成。
描述
SchemaParserOptions.introspectionEnabled(false) turns off introspection with a field visibility that hides every field of the introspection types (__Schema, __Type, ...). Until #849 that was graphql-java's NoIntrospectionGraphqlFieldVisibility, which graphql-java deprecated in v22 (graphql-java/graphql-java#3526):
NoIntrospectionGraphqlFieldVisibility is another way to do this but it does not allow dynamic on or off and it makes the schema invalid according to spec.
Their replacement checks __schema and __type when the query runs and returns an "introspection disabled" error. It has two switches:
Introspection.enabledJvmWide(false)for the whole JVMIntrospection.INTROSPECTION_DISABLEDin theGraphQLContextof a single request
We can't use either one from the library. We don't execute requests, so we can't set the context key, and calling enabledJvmWide(false) from SchemaParser would also turn introspection off for every other schema in the app. So #849 swapped NoIntrospectionGraphqlFieldVisibility for the BlockedFields it wraps, which keeps the old behaviour, including its problems. Apps can use the graphql-java switches directly, so we should point them there and drop the option.
What to change
- deprecate
SchemaParserOptions.Builder.introspectionEnabled(...)and theintrospectionEnabledproperty in a 14.x release, pointing to the two switches - in 15.0.0, remove both, the
BlockedFieldsblock inSchemaParser.parseSchemaObjectsand the tests inIntrospectionTestthat turn it off
Migration
// before
SchemaParserOptions.newOptions().introspectionEnabled(false)
// after, for the whole JVM
Introspection.enabledJvmWide(false)
// after, per request
ExecutionInput.newExecutionInput()
.query(query)
.graphQLContext(mapOf(Introspection.INTROSPECTION_DISABLED to true))
With the graphql-java switches, an introspection query fails with an "introspection disabled" error when it runs, instead of the FieldUndefined validation error it gets now.
- 主要語言
- Kotlin
- 星號
- 824
- 分支
- 175
- 平均合併
- 2 天 5 小時
- 30 天內合併 PR
- 52
環境準備
這個專案沒有提供開發容器、Dockerfile 或貢獻指南,環境需要你自己搭建:先看它的 README,通用步驟見我們的新手貢獻指南。
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
graphql-java-kickstart/graphql-java-tools 的其他 Issue
-
難度 2/5 1-3 小時 新手友好度 85/100
graphql-java-kickstart/graphql-java-tools#893 ·
維護者通常 1 天內回覆
-
bug
難度 3/5 1-2 天 新手友好度 74/100
graphql-java-kickstart/graphql-java-tools#896 ·
維護者通常 1 天內回覆
-
難度 3/5 1-2 天 新手友好度 72/100
graphql-java-kickstart/graphql-java-tools#889 ·
維護者通常 1 天內回覆
-
bug
難度 3/5 1-2 天 新手友好度 55/100
graphql-java-kickstart/graphql-java-tools#886 ·
維護者通常 1 天內回覆
-
enhancement
難度 3/5 1-2 天 新手友好度 72/100
graphql-java-kickstart/graphql-java-tools#884 ·
維護者通常 1 天內回覆
查看 graphql-java-kickstart/graphql-java-tools 的全部 Issue
相似的 Issue
-
bug
難度 2/5 1-3 小時 新手友好度 70/100
beppe2880/opencode-mobile#60 ·
維護者通常 1 天內回覆
-
難度 2/5 1-3 小時 新手友好度 75/100
auth0/Auth0.Android#1101 ·
維護者通常 1 天內回覆
-
LiquidGlass / LiquidGlassContainer (iOS): padded content measured at the outer width and overflows by the padding可能已有人在做 @aleclarson 今天認領。 未關閉
難度 2/5 1-3 小時 新手友好度 74/100
NativeScript/NativeScript#11561 ·
維護者通常 1 天內回覆
-
Imported configuration's @Bean methods record the configuration class instead of the return type未關閉in:spring-core
難度 2/5 1-3 小時 新手友好度 76/100
explyt/spring-plugin#787 ·
維護者通常 1 天內回覆
-
難度 2/5 1-3 小時 新手友好度 84/100
IacobIonut01/ReFra#1335 ·
維護者通常 4 天內回覆