/** * Resolves the given path. * @param path the given path * @return the base path, or {@code empty} if it is not a valid base path */ public static Optional<BasePath> parse(String path) { if (isEmpty(path)) { return Optional.of(EMPTY); } FilePattern pattern = FilePattern.compile(path); List<String> results = new ArrayList<>(); for (FilePattern.Segment segment : pattern.getSegments()) { if (isPlain(segment)) { results.add(segment.toString()); } else { return Optional.empty(); } } return Optional.of(new BasePath(results)); }
private static BasePath headOf(FilePattern pattern) { List<String> results = new ArrayList<>(); for (FilePattern.Segment segment : pattern.getSegments()) { if (isPlain(segment)) { results.add(segment.toString()); } else { break; } } return new BasePath(results); }