Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-multiarch-jdk8u
Path: blob/aarch64-shenandoah-jdk8u272-b10/jdk/src/share/classes/javax/sql/rowset/serial/SerialDatalink.java
38918 views
1
/*
2
* Copyright (c) 2003, 2013, 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
package javax.sql.rowset.serial;
27
28
import java.sql.*;
29
import java.io.*;
30
import java.net.URL;
31
32
33
/**
34
* A serialized mapping in the Java programming language of an SQL
35
* <code>DATALINK</code> value. A <code>DATALINK</code> value
36
* references a file outside of the underlying data source that the
37
* data source manages.
38
* <P>
39
* <code>RowSet</code> implementations can use the method <code>RowSet.getURL</code>
40
* to retrieve a <code>java.net.URL</code> object, which can be used
41
* to manipulate the external data.
42
* <pre>
43
* java.net.URL url = rowset.getURL(1);
44
* </pre>
45
*
46
* <h3> Thread safety </h3>
47
*
48
* A SerialDatalink is not safe for use by multiple concurrent threads. If a
49
* SerialDatalink is to be used by more than one thread then access to the
50
* SerialDatalink should be controlled by appropriate synchronization.
51
*/
52
public class SerialDatalink implements Serializable, Cloneable {
53
54
/**
55
* The extracted URL field retrieved from the DATALINK field.
56
* @serial
57
*/
58
private URL url;
59
60
/**
61
* The SQL type of the elements in this <code>SerialDatalink</code>
62
* object. The type is expressed as one of the contants from the
63
* class <code>java.sql.Types</code>.
64
* @serial
65
*/
66
private int baseType;
67
68
/**
69
* The type name used by the DBMS for the elements in the SQL
70
* <code>DATALINK</code> value that this SerialDatalink object
71
* represents.
72
* @serial
73
*/
74
private String baseTypeName;
75
76
/**
77
* Constructs a new <code>SerialDatalink</code> object from the given
78
* <code>java.net.URL</code> object.
79
* <P>
80
* @param url the {@code URL} to create the {@code SerialDataLink} from
81
* @throws SerialException if url parameter is a null
82
*/
83
public SerialDatalink(URL url) throws SerialException {
84
if (url == null) {
85
throw new SerialException("Cannot serialize empty URL instance");
86
}
87
this.url = url;
88
}
89
90
/**
91
* Returns a new URL that is a copy of this <code>SerialDatalink</code>
92
* object.
93
*
94
* @return a copy of this <code>SerialDatalink</code> object as a
95
* <code>URL</code> object in the Java programming language.
96
* @throws SerialException if the <code>URL</code> object cannot be de-serialized
97
*/
98
public URL getDatalink() throws SerialException {
99
100
URL aURL = null;
101
102
try {
103
aURL = new URL((this.url).toString());
104
} catch (java.net.MalformedURLException e) {
105
throw new SerialException("MalformedURLException: " + e.getMessage());
106
}
107
return aURL;
108
}
109
110
/**
111
* Compares this {@code SerialDatalink} to the specified object.
112
* The result is {@code true} if and only if the argument is not
113
* {@code null} and is a {@code SerialDatalink} object whose URL is
114
* identical to this object's URL
115
*
116
* @param obj The object to compare this {@code SerialDatalink} against
117
*
118
* @return {@code true} if the given object represents a {@code SerialDatalink}
119
* equivalent to this SerialDatalink, {@code false} otherwise
120
*
121
*/
122
public boolean equals(Object obj) {
123
if (this == obj) {
124
return true;
125
}
126
if (obj instanceof SerialDatalink) {
127
SerialDatalink sdl = (SerialDatalink) obj;
128
return url.equals(sdl.url);
129
}
130
return false;
131
}
132
133
/**
134
* Returns a hash code for this {@code SerialDatalink}. The hash code for a
135
* {@code SerialDatalink} object is taken as the hash code of
136
* the {@code URL} it stores
137
*
138
* @return a hash code value for this object.
139
*/
140
public int hashCode() {
141
return 31 + url.hashCode();
142
}
143
144
/**
145
* Returns a clone of this {@code SerialDatalink}.
146
*
147
* @return a clone of this SerialDatalink
148
*/
149
public Object clone() {
150
try {
151
SerialDatalink sdl = (SerialDatalink) super.clone();
152
return sdl;
153
} catch (CloneNotSupportedException ex) {
154
// this shouldn't happen, since we are Cloneable
155
throw new InternalError();
156
}
157
}
158
159
/**
160
* readObject and writeObject are called to restore the state
161
* of the {@code SerialDatalink}
162
* from a stream. Note: we leverage the default Serialized form
163
*/
164
165
/**
166
* The identifier that assists in the serialization of this
167
* {@code SerialDatalink} object.
168
*/
169
static final long serialVersionUID = 2826907821828733626L;
170
}
171
172