1e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera/* 2e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * Copyright (c) 2007, 2009, 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 java.nio.file; 27e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 28e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera/** 29e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * Unchecked exception thrown when path string cannot be converted into a 30e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * {@link Path} because the path string contains invalid characters, or 31e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * the path string is invalid for other file system specific reasons. 32e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera */ 33e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 34e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmerapublic class InvalidPathException 35e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera extends IllegalArgumentException 36e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera{ 37e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera static final long serialVersionUID = 4355821422286746137L; 38e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 39e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera private String input; 40e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera private int index; 41e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 42e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera /** 43e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * Constructs an instance from the given input string, reason, and error 44e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * index. 45e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * 46e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * @param input the input string 47e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * @param reason a string explaining why the input was rejected 48e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * @param index the index at which the error occurred, 49e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * or <tt>-1</tt> if the index is not known 50e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * 51e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * @throws NullPointerException 52e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * if either the input or reason strings are <tt>null</tt> 53e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * 54e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * @throws IllegalArgumentException 55e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * if the error index is less than <tt>-1</tt> 56e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera */ 57e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera public InvalidPathException(String input, String reason, int index) { 58e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera super(reason); 59e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera if ((input == null) || (reason == null)) 60e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera throw new NullPointerException(); 61e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera if (index < -1) 62e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera throw new IllegalArgumentException(); 63e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera this.input = input; 64e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera this.index = index; 65e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } 66e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 67e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera /** 68e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * Constructs an instance from the given input string and reason. The 69e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * resulting object will have an error index of <tt>-1</tt>. 70e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * 71e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * @param input the input string 72e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * @param reason a string explaining why the input was rejected 73e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * 74e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * @throws NullPointerException 75e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * if either the input or reason strings are <tt>null</tt> 76e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera */ 77e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera public InvalidPathException(String input, String reason) { 78e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera this(input, reason, -1); 79e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } 80e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 81e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera /** 82e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * Returns the input string. 83e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * 84e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * @return the input string 85e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera */ 86e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera public String getInput() { 87e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera return input; 88e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } 89e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 90e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera /** 91e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * Returns a string explaining why the input string was rejected. 92e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * 93e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * @return the reason string 94e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera */ 95e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera public String getReason() { 96e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera return super.getMessage(); 97e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } 98e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 99e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera /** 100e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * Returns an index into the input string of the position at which the 101e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * error occurred, or <tt>-1</tt> if this position is not known. 102e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * 103e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * @return the error index 104e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera */ 105e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera public int getIndex() { 106e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera return index; 107e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } 108e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera 109e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera /** 110e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * Returns a string describing the error. The resulting string 111e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * consists of the reason string followed by a colon character 112e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * (<tt>':'</tt>), a space, and the input string. If the error index is 113e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * defined then the string <tt>" at index "</tt> followed by the index, in 114e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * decimal, is inserted after the reason string and before the colon 115e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * character. 116e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * 117e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera * @return a string describing the error 118e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera */ 119e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera public String getMessage() { 120e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera StringBuffer sb = new StringBuffer(); 121e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera sb.append(getReason()); 122e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera if (index > -1) { 123e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera sb.append(" at index "); 124e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera sb.append(index); 125e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } 126e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera sb.append(": "); 127e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera sb.append(input); 128e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera return sb.toString(); 129e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera } 130e6bac4bf9c85c2454ce22c91da6c654552c268e0Shubham Ajmera} 131