1e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera/* 2e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. 3e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * 5e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * This code is free software; you can redistribute it and/or modify it 6e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * under the terms of the GNU General Public License version 2 only, as 7e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * published by the Free Software Foundation. Oracle designates this 8e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * particular file as subject to the "Classpath" exception as provided 9e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * by Oracle in the LICENSE file that accompanied this code. 10e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * 11e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * This code is distributed in the hope that it will be useful, but WITHOUT 12e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * version 2 for more details (a copy is included in the LICENSE file that 15e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * accompanied this code). 16e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * 17e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * You should have received a copy of the GNU General Public License version 18e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * 2 along with this work; if not, write to the Free Software Foundation, 19e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * 21e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * or visit www.oracle.com if you need additional information or have any 23e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * questions. 24e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera */ 25e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 26e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmerapackage sun.nio.fs; 27e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 28e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmeraimport java.nio.file.*; 29e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmeraimport java.io.File; 30e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmeraimport java.io.IOException; 31e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmeraimport java.util.Iterator; 32e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmeraimport java.util.NoSuchElementException; 33e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 34e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera/** 35e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * Base implementation class of {@code Path}. 36e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera */ 37e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 38e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmeraabstract class AbstractPath implements Path { 39e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera protected AbstractPath() { } 40e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 41e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera @Override 42e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera public final boolean startsWith(String other) { 43e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera return startsWith(getFileSystem().getPath(other)); 44e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } 45e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 46e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera @Override 47e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera public final boolean endsWith(String other) { 48e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera return endsWith(getFileSystem().getPath(other)); 49e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } 50e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 51e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera @Override 52e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera public final Path resolve(String other) { 53e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera return resolve(getFileSystem().getPath(other)); 54e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } 55e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 56e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera @Override 57e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera public final Path resolveSibling(Path other) { 58e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera if (other == null) 59e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera throw new NullPointerException(); 60e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera Path parent = getParent(); 61e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera return (parent == null) ? other : parent.resolve(other); 62e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } 63e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 64e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera @Override 65e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera public final Path resolveSibling(String other) { 66e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera return resolveSibling(getFileSystem().getPath(other)); 67e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } 68e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 69e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera @Override 70e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera public final Iterator<Path> iterator() { 71e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera return new Iterator<Path>() { 72e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera private int i = 0; 73e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera @Override 74e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera public boolean hasNext() { 75e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera return (i < getNameCount()); 76e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } 77e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera @Override 78e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera public Path next() { 79e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera if (i < getNameCount()) { 80e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera Path result = getName(i); 81e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera i++; 82e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera return result; 83e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } else { 84e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera throw new NoSuchElementException(); 85e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } 86e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } 87e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera @Override 88e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera public void remove() { 89e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera throw new UnsupportedOperationException(); 90e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } 91e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera }; 92e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } 93e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 94e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera @Override 95e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera public final File toFile() { 96e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera return new File(toString()); 97e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } 98e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 99e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera @Override 100e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera public final WatchKey register(WatchService watcher, 101e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera WatchEvent.Kind<?>... events) 102e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera throws IOException 103e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera { 104e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera return register(watcher, events, new WatchEvent.Modifier[0]); 105e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } 106e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera} 107