1 /*
2 * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26
27 package javax.print.attribute;
28
29 import java.io.Serializable;
30 import java.net.URI;
31
32 /**
33 * Class URISyntax is an abstract base class providing the common
34 * implementation of all attributes whose value is a Uniform Resource
35 * Identifier (URI). Once constructed, a URI attribute's value is immutable.
36 * <P>
37 *
38 * @author Alan Kaminsky
39 */
40 public abstract class URISyntax implements Serializable, Cloneable {
41
42 private static final long serialVersionUID = -7842661210486401678L;
43
44 /**
45 * URI value of this URI attribute.
46 * @serial
47 */
48 private URI uri;
49
50 /**
51 * Constructs a URI attribute with the specified URI.
52 *
53 * @param uri URI.
54 *
55 * @exception NullPointerException
56 * (unchecked exception) Thrown if <CODE>uri</CODE> is null.
57 */
58 protected URISyntax(URI uri) {
59 this.uri = verify (uri);
60 }
61
62 private static URI verify(URI uri) {
63 if (uri == null) {
64 throw new NullPointerException(" uri is null");
65 }
66 return uri;
67 }
68
69 /**
70 * Returns this URI attribute's URI value.
71 * @return the URI.
72 */
73 public URI getURI() {
74 return uri;
75 }
76
77 /**
78 * Returns a hashcode for this URI attribute.
79 *
80 * @return A hashcode value for this object.
81 */
82 public int hashCode() {
83 return uri.hashCode();
84 }
85
86 /**
87 * Returns whether this URI attribute is equivalent to the passed in
88 * object.
89 * To be equivalent, all of the following conditions must be true:
90 * <OL TYPE=1>
91 * <LI>
92 * <CODE>object</CODE> is not null.
93 * <LI>
94 * <CODE>object</CODE> is an instance of class URISyntax.
95 * <LI>
96 * This URI attribute's underlying URI and <CODE>object</CODE>'s
97 * underlying URI are equal.
98 * </OL>
99 *
100 * @param object Object to compare to.
101 *
102 * @return True if <CODE>object</CODE> is equivalent to this URI
103 * attribute, false otherwise.
104 */
105 public boolean equals(Object object) {
106 return(object != null &&
107 object instanceof URISyntax &&
108 this.uri.equals (((URISyntax) object).uri));
109 }
110
111 /**
112 * Returns a String identifying this URI attribute. The String is the
113 * string representation of the attribute's underlying URI.
114 *
115 * @return A String identifying this object.
116 */
117 public String toString() {
118 return uri.toString();
119 }
120
121 }