Skip to content

Commit 27b11d9

Browse files
authored
Merge pull request #2513 from graphql-java/fix_glob_matching_on_window
Fixes glob matching on Windows
2 parents 45b5901 + bb1ca20 commit 27b11d9

1 file changed

Lines changed: 11 additions & 0 deletions

File tree

‎src/main/java/graphql/schema/DataFetchingFieldSelectionSetImpl.java‎

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import graphql.Internal;
66
import graphql.normalized.ExecutableNormalizedField;
77

8+
import java.io.File;
89
import java.nio.file.FileSystems;
910
import java.nio.file.Path;
1011
import java.nio.file.PathMatcher;
@@ -30,6 +31,7 @@
3031
public class DataFetchingFieldSelectionSetImpl implements DataFetchingFieldSelectionSet {
3132

3233
private final static String SEP = "/";
34+
private final static boolean UNIXY = SEP.equals(File.separator);
3335

3436
private final static DataFetchingFieldSelectionSet NOOP = new DataFetchingFieldSelectionSet() {
3537

@@ -110,6 +112,7 @@ public boolean contains(String fieldGlobPattern) {
110112
fieldGlobPattern = removeLeadingSlash(fieldGlobPattern);
111113
PathMatcher globMatcher = globMatcher(fieldGlobPattern);
112114
for (String flattenedField : flattenedFieldsForGlobSearching) {
115+
flattenedField = osAppropriate(flattenedField);
113116
Path path = Paths.get(flattenedField);
114117
if (globMatcher.matches(path)) {
115118
return true;
@@ -118,6 +121,14 @@ public boolean contains(String fieldGlobPattern) {
118121
return false;
119122
}
120123

124+
private String osAppropriate(String flattenedField) {
125+
if (UNIXY) {
126+
return flattenedField;
127+
} else {
128+
return flattenedField.replace(SEP, "\\");
129+
}
130+
}
131+
121132
@Override
122133
public boolean containsAnyOf(String fieldGlobPattern, String... fieldGlobPatterns) {
123134
assertNotNull(fieldGlobPattern);

0 commit comments

Comments
 (0)