This is an automated email from the ASF dual-hosted git repository. andysch pushed a commit to branch issue/SLING-10900-201-fix in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-graphql-core.git
commit 544e580fc5791ff09c518330cace15aa1925efdc Author: Andreas Schaefer <[email protected]> AuthorDate: Thu Jun 29 14:01:37 2023 -0700 SLING-10900 - The current implementation lead to an issue where intermediary fields are dropped in favor of an Object Type Name property. In order to make it accessible the Selected Field needs to expose that list --- src/main/java/org/apache/sling/graphql/api/SelectedField.java | 2 ++ src/main/java/org/apache/sling/graphql/api/package-info.java | 2 +- .../sling/graphql/core/engine/SelectedFieldWrapper.java | 11 +++++++++-- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/apache/sling/graphql/api/SelectedField.java b/src/main/java/org/apache/sling/graphql/api/SelectedField.java index b3da627..fe0110a 100644 --- a/src/main/java/org/apache/sling/graphql/api/SelectedField.java +++ b/src/main/java/org/apache/sling/graphql/api/SelectedField.java @@ -62,4 +62,6 @@ public interface SelectedField { * @return true if this field is an inline (i.e: ... on Something { }). */ boolean isInline(); + + List<String> getObjectTypeNames(); } diff --git a/src/main/java/org/apache/sling/graphql/api/package-info.java b/src/main/java/org/apache/sling/graphql/api/package-info.java index 39a0bdc..f6ab9e6 100644 --- a/src/main/java/org/apache/sling/graphql/api/package-info.java +++ b/src/main/java/org/apache/sling/graphql/api/package-info.java @@ -21,6 +21,6 @@ * This package contains APIs which are independent of * a specific implementation of the underlying graphQL engine. */ -@Version("3.3.0") +@Version("3.4.0") package org.apache.sling.graphql.api; import org.osgi.annotation.versioning.Version; diff --git a/src/main/java/org/apache/sling/graphql/core/engine/SelectedFieldWrapper.java b/src/main/java/org/apache/sling/graphql/core/engine/SelectedFieldWrapper.java index 8b50e9e..6ee72e1 100644 --- a/src/main/java/org/apache/sling/graphql/core/engine/SelectedFieldWrapper.java +++ b/src/main/java/org/apache/sling/graphql/core/engine/SelectedFieldWrapper.java @@ -25,7 +25,9 @@ import graphql.language.SelectionSet; import graphql.schema.DataFetchingFieldSelectionSet; import org.apache.sling.graphql.api.SelectedField; +import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -40,13 +42,13 @@ public class SelectedFieldWrapper implements SelectedField { @Deprecated private boolean isInline; private boolean conditional; - private List<String> objectTypeBNames; + private List<String> objectTypeNames; private Map<String, SelectedField> subFieldMap = new HashMap<>(); private List<SelectedField> subFields; public SelectedFieldWrapper(graphql.schema.SelectedField selectedField) { this.name = selectedField.getName(); - this.objectTypeBNames = selectedField.getObjectTypeNames(); + this.objectTypeNames = selectedField.getObjectTypeNames() == null ? Collections.emptyList() : selectedField.getObjectTypeNames(); this.conditional = selectedField.isConditional(); DataFetchingFieldSelectionSet selectionSet = selectedField.getSelectionSet(); if (selectionSet != null) { @@ -82,4 +84,9 @@ public class SelectedFieldWrapper implements SelectedField { public boolean isInline() { return isInline; } + + @Override + public List<String> getObjectTypeNames() { + return new ArrayList<>(objectTypeNames); + } }
