From bb1ca20aafe800ed2ad4f5432dc2375195c1430e Mon Sep 17 00:00:00 2001 From: Brad Baker Date: Sun, 15 Aug 2021 15:56:38 +1000 Subject: [PATCH] Fixes glob matching on Windows --- .../schema/DataFetchingFieldSelectionSetImpl.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/main/java/graphql/schema/DataFetchingFieldSelectionSetImpl.java b/src/main/java/graphql/schema/DataFetchingFieldSelectionSetImpl.java index bb9501ec6f..98423a978a 100644 --- a/src/main/java/graphql/schema/DataFetchingFieldSelectionSetImpl.java +++ b/src/main/java/graphql/schema/DataFetchingFieldSelectionSetImpl.java @@ -5,6 +5,7 @@ import graphql.Internal; import graphql.normalized.ExecutableNormalizedField; +import java.io.File; import java.nio.file.FileSystems; import java.nio.file.Path; import java.nio.file.PathMatcher; @@ -30,6 +31,7 @@ public class DataFetchingFieldSelectionSetImpl implements DataFetchingFieldSelectionSet { private final static String SEP = "/"; + private final static boolean UNIXY = SEP.equals(File.separator); private final static DataFetchingFieldSelectionSet NOOP = new DataFetchingFieldSelectionSet() { @@ -110,6 +112,7 @@ public boolean contains(String fieldGlobPattern) { fieldGlobPattern = removeLeadingSlash(fieldGlobPattern); PathMatcher globMatcher = globMatcher(fieldGlobPattern); for (String flattenedField : flattenedFieldsForGlobSearching) { + flattenedField = osAppropriate(flattenedField); Path path = Paths.get(flattenedField); if (globMatcher.matches(path)) { return true; @@ -118,6 +121,14 @@ public boolean contains(String fieldGlobPattern) { return false; } + private String osAppropriate(String flattenedField) { + if (UNIXY) { + return flattenedField; + } else { + return flattenedField.replace(SEP, "\\"); + } + } + @Override public boolean containsAnyOf(String fieldGlobPattern, String... fieldGlobPatterns) { assertNotNull(fieldGlobPattern);