001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017:
018: package java.net;
019:
020: import org.apache.harmony.luni.util.Msg;
021:
022: /**
023: * Represents an exception that occurred during parsing of a URI.
024: */
025: public class URISyntaxException extends Exception {
026:
027: private static final long serialVersionUID = 2137979680897488891L;
028:
029: private String input;
030:
031: private int index;
032:
033: /**
034: * Constructs a URISyntaxException, containing the input that caused the
035: * exception, a description of the problem, and the index at which the error
036: * occurred.
037: *
038: * @param input
039: * @param reason
040: * @param index
041: * @exception NullPointerException
042: * if input or reason is null
043: * @exception IllegalArgumentException
044: * if index < -1
045: */
046: public URISyntaxException(String input, String reason, int index) {
047: super (reason);
048:
049: if (input == null || reason == null) {
050: throw new NullPointerException();
051: }
052:
053: if (index < -1) {
054: throw new IllegalArgumentException();
055: }
056:
057: this .input = input;
058: this .index = index;
059: }
060:
061: /**
062: * Constructs a URISyntaxException containing the string that caused the
063: * exception and a description of the error.
064: *
065: * @param input
066: * @param reason
067: *
068: * @exception NullPointerException
069: * if input or reason is null
070: */
071: public URISyntaxException(String input, String reason) {
072: super (reason);
073:
074: if (input == null || reason == null) {
075: throw new NullPointerException();
076: }
077:
078: this .input = input;
079: index = -1;
080: }
081:
082: /**
083: * Answers the index at which the syntax error was found, or -1 if the index
084: * is unknown/unavailable.
085: *
086: * @return the index of the syntax error
087: */
088: public int getIndex() {
089: return index;
090: }
091:
092: /**
093: * Answers a String describing the syntax error in the URI string
094: *
095: * @return a String describing the syntax error
096: */
097: public String getReason() {
098: return super .getMessage();
099: }
100:
101: /**
102: * Answers the String that contained the syntax error
103: *
104: * @return the String that caused the exception
105: */
106: public String getInput() {
107: return input;
108: }
109:
110: /**
111: * Returns a description of the exception, including the reason, the string
112: * that had the syntax error, and the index of the syntax error if
113: * available.
114: *
115: * @return a String containing information about the exception.
116: * @see java.lang.Throwable#getMessage()
117: */
118: @Override
119: public String getMessage() {
120: String reason = super .getMessage();
121:
122: if (index != -1) {
123: return Msg.getString("K0326", //$NON-NLS-1$
124: new String[] { reason, Integer.toString(index),
125: input });
126: }
127: return Msg.getString("K0327", //$NON-NLS-1$
128: new String[] { reason, input });
129: }
130: }
|