Search in sources :

Example 26 with PathMatcher

use of java.nio.file.PathMatcher in project elasticsearch by elastic.

the class IngestUserAgentPlugin method createUserAgentParsers.

static Map<String, UserAgentParser> createUserAgentParsers(Path userAgentConfigDirectory, UserAgentCache cache) throws IOException {
    Map<String, UserAgentParser> userAgentParsers = new HashMap<>();
    UserAgentParser defaultParser = new UserAgentParser(DEFAULT_PARSER_NAME, IngestUserAgentPlugin.class.getResourceAsStream("/regexes.yaml"), cache);
    userAgentParsers.put(DEFAULT_PARSER_NAME, defaultParser);
    if (Files.exists(userAgentConfigDirectory) && Files.isDirectory(userAgentConfigDirectory)) {
        PathMatcher pathMatcher = userAgentConfigDirectory.getFileSystem().getPathMatcher("glob:**.yaml");
        try (Stream<Path> regexFiles = Files.find(userAgentConfigDirectory, 1, (path, attr) -> attr.isRegularFile() && pathMatcher.matches(path))) {
            Iterable<Path> iterable = regexFiles::iterator;
            for (Path path : iterable) {
                String parserName = path.getFileName().toString();
                try (InputStream regexStream = Files.newInputStream(path, StandardOpenOption.READ)) {
                    userAgentParsers.put(parserName, new UserAgentParser(parserName, regexStream, cache));
                }
            }
        }
    }
    return Collections.unmodifiableMap(userAgentParsers);
}
Also used : Path(java.nio.file.Path) PathMatcher(java.nio.file.PathMatcher) HashMap(java.util.HashMap) InputStream(java.io.InputStream)

Example 27 with PathMatcher

use of java.nio.file.PathMatcher in project jetty.project by eclipse.

the class BaseHome method getPaths.

/**
     * Get a List of {@link Path}s from a provided pattern.
     * <p>
     * Resolution Steps:
     * <ol>
     * <li>If the pattern starts with "regex:" or "glob:" then a standard {@link PathMatcher} is built using
     * {@link java.nio.file.FileSystem#getPathMatcher(String)} as a file search.</li>
     * <li>If pattern starts with a known filesystem root (using information from {@link java.nio.file.FileSystem#getRootDirectories()}) then this is assumed to
     * be a absolute file system pattern.</li>
     * <li>All other patterns are treated as relative to BaseHome information:
     * <ol>
     * <li>Search ${jetty.home} first</li>
     * <li>Search ${jetty.base} for overrides</li>
     * </ol>
     * </li>
     * </ol>
     * <p>
     * Pattern examples:
     * <dl>
     * <dt><code>lib/logging/*.jar</code></dt>
     * <dd>Relative pattern, not recursive, search <code>${jetty.home}</code> then <code>${jetty.base}</code> for lib/logging/*.jar content</dd>
     * 
     * <dt><code>lib/**&#47;*-dev.jar</code></dt>
     * <dd>Relative pattern, recursive search <code>${jetty.home}</code> then <code>${jetty.base}</code> for files under <code>lib</code> ending in
     * <code>-dev.jar</code></dd>
     * 
     * <dt><code>etc/jetty.xml</code></dt>
     * <dd>Relative pattern, no glob, search for <code>${jetty.home}/etc/jetty.xml</code> then <code>${jetty.base}/etc/jetty.xml</code></dd>
     * 
     * <dt><code>glob:/opt/app/common/*-corp.jar</code></dt>
     * <dd>PathMapper pattern, glob, search <code>/opt/app/common/</code> for <code>*-corp.jar</code></dd>
     * 
     * </dl>
     * 
     * <p>
     * Notes:
     * <ul>
     * <li>FileSystem case sensitivity is implementation specific (eg: linux is case-sensitive, windows is case-insensitive).<br>
     * See {@link java.nio.file.FileSystem#getPathMatcher(String)} for more details</li>
     * <li>Pattern slashes are implementation neutral (use '/' always and you'll be fine)</li>
     * <li>Recursive searching is limited to 30 levels deep (not configurable)</li>
     * <li>File System loops are detected and skipped</li>
     * </ul>
     * 
     * @param pattern
     *            the pattern to search.
     * @return the collection of paths found
     * @throws IOException
     *             if error during search operation
     */
public List<Path> getPaths(String pattern) throws IOException {
    StartLog.debug("getPaths('%s')", pattern);
    List<Path> hits = new ArrayList<>();
    if (PathMatchers.isAbsolute(pattern)) {
        // Perform absolute path pattern search
        // The root to start search from
        Path root = PathMatchers.getSearchRoot(pattern);
        // The matcher for file hits
        PathMatcher matcher = PathMatchers.getMatcher(pattern);
        if (FS.isValidDirectory(root)) {
            PathFinder finder = new PathFinder();
            finder.setIncludeDirsInResults(true);
            finder.setFileMatcher(matcher);
            finder.setBase(root);
            Files.walkFileTree(root, SEARCH_VISIT_OPTIONS, MAX_SEARCH_DEPTH, finder);
            hits.addAll(finder.getHits());
        }
    } else {
        // Perform relative path pattern search
        Path relativePath = PathMatchers.getSearchRoot(pattern);
        PathMatcher matcher = PathMatchers.getMatcher(pattern);
        PathFinder finder = new PathFinder();
        finder.setIncludeDirsInResults(true);
        finder.setFileMatcher(matcher);
        // walk config sources backwards ...
        ListIterator<ConfigSource> iter = sources.reverseListIterator();
        while (iter.hasPrevious()) {
            ConfigSource source = iter.previous();
            if (source instanceof DirConfigSource) {
                DirConfigSource dirsource = (DirConfigSource) source;
                Path dir = dirsource.getDir();
                Path deepDir = dir.resolve(relativePath);
                if (FS.isValidDirectory(deepDir)) {
                    finder.setBase(dir);
                    Files.walkFileTree(deepDir, SEARCH_VISIT_OPTIONS, MAX_SEARCH_DEPTH, finder);
                }
            }
        }
        hits.addAll(finder.getHits());
    }
    Collections.sort(hits, new NaturalSort.Paths());
    return hits;
}
Also used : Path(java.nio.file.Path) DirConfigSource(org.eclipse.jetty.start.config.DirConfigSource) JettyHomeConfigSource(org.eclipse.jetty.start.config.JettyHomeConfigSource) ConfigSource(org.eclipse.jetty.start.config.ConfigSource) JettyBaseConfigSource(org.eclipse.jetty.start.config.JettyBaseConfigSource) CommandLineConfigSource(org.eclipse.jetty.start.config.CommandLineConfigSource) PathMatcher(java.nio.file.PathMatcher) ArrayList(java.util.ArrayList) DirConfigSource(org.eclipse.jetty.start.config.DirConfigSource)

Example 28 with PathMatcher

use of java.nio.file.PathMatcher in project jetty.project by eclipse.

the class BaseHome method getPaths.

/**
     * Search specified Path with pattern and return hits
     * 
     * @param dir
     *            the path to a directory to start search from
     * @param searchDepth
     *            the number of directories deep to perform the search
     * @param pattern
     *            the raw pattern to use for the search (must be relative)
     * @return the list of Paths found
     * @throws IOException
     *             if unable to search the path
     */
public List<Path> getPaths(Path dir, int searchDepth, String pattern) throws IOException {
    if (PathMatchers.isAbsolute(pattern)) {
        throw new RuntimeException("Pattern cannot be absolute: " + pattern);
    }
    List<Path> hits = new ArrayList<>();
    if (FS.isValidDirectory(dir)) {
        PathMatcher matcher = PathMatchers.getMatcher(pattern);
        PathFinder finder = new PathFinder();
        finder.setFileMatcher(matcher);
        finder.setBase(dir);
        finder.setIncludeDirsInResults(true);
        Files.walkFileTree(dir, SEARCH_VISIT_OPTIONS, searchDepth, finder);
        hits.addAll(finder.getHits());
        Collections.sort(hits, new NaturalSort.Paths());
    }
    return hits;
}
Also used : Path(java.nio.file.Path) PathMatcher(java.nio.file.PathMatcher) ArrayList(java.util.ArrayList)

Example 29 with PathMatcher

use of java.nio.file.PathMatcher in project jphp by jphp-compiler.

the class FileObject method matches.

@Signature(@Arg("pattern"))
public Memory matches(Environment env, Memory... args) {
    FileSystem aDefault = FileSystems.getDefault();
    PathMatcher pathMatcher = aDefault.getPathMatcher(args[0].toString());
    return pathMatcher.matches(aDefault.getPath(file.getPath())) ? Memory.TRUE : Memory.FALSE;
}
Also used : PathMatcher(java.nio.file.PathMatcher) FileSystem(java.nio.file.FileSystem)

Example 30 with PathMatcher

use of java.nio.file.PathMatcher in project neo4j by neo4j.

the class SpecSuiteResources method findAndUnpackTo.

private static void findAndUnpackTo(FileSystem sourceFileSystem, Path sourceRootDirectory, String sourceFilePattern, File targetDirectory) throws IOException {
    System.out.println("Unpacking to " + targetDirectory.getCanonicalPath());
    PathMatcher matcher = sourceFileSystem.getPathMatcher(sourceFilePattern);
    for (Iterator<Path> it = Files.walk(sourceRootDirectory, 3).iterator(); it.hasNext(); ) {
        Path next = it.next();
        if (matcher.matches(next)) {
            File target = new File(targetDirectory, next.getFileName().toString());
            Files.copy(next, target.toPath(), StandardCopyOption.REPLACE_EXISTING);
            System.out.println("Unpacked " + target.getName());
        }
    }
}
Also used : Path(java.nio.file.Path) PathMatcher(java.nio.file.PathMatcher) File(java.io.File)

Aggregations

PathMatcher (java.nio.file.PathMatcher)31 Path (java.nio.file.Path)15 File (java.io.File)9 HashSet (java.util.HashSet)5 ProjectHandlerRegistry (org.eclipse.che.api.project.server.handlers.ProjectHandlerRegistry)5 ProjectImporterRegistry (org.eclipse.che.api.project.server.importer.ProjectImporterRegistry)5 ProjectTypeRegistry (org.eclipse.che.api.project.server.type.ProjectTypeRegistry)5 DefaultFileWatcherNotificationHandler (org.eclipse.che.api.vfs.impl.file.DefaultFileWatcherNotificationHandler)5 FileTreeWatcher (org.eclipse.che.api.vfs.impl.file.FileTreeWatcher)5 LocalVirtualFileSystemProvider (org.eclipse.che.api.vfs.impl.file.LocalVirtualFileSystemProvider)5 FSLuceneSearcherProvider (org.eclipse.che.api.vfs.search.impl.FSLuceneSearcherProvider)5 Test (org.junit.Test)5 IOException (java.io.IOException)4 FileSystem (java.nio.file.FileSystem)4 ArrayList (java.util.ArrayList)4 EventService (org.eclipse.che.api.core.notification.EventService)4 FileVisitResult (java.nio.file.FileVisitResult)3 BasicFileAttributes (java.nio.file.attribute.BasicFileAttributes)3 Set (java.util.Set)3 ProjectManager (org.eclipse.che.api.project.server.ProjectManager)3