Tue, 06 Mar 2012 16:09:35 -0800
7150322: Stop using drop source bundles in jaxws
Reviewed-by: darcy, ohrstrom
1 /*
2 * Copyright (c) 2003, 2010, 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 */
26 package javax.xml.bind.helpers;
28 import java.net.URL;
29 import java.net.MalformedURLException;
30 import java.text.MessageFormat;
32 import javax.xml.bind.ValidationEventLocator;
33 import org.w3c.dom.Node;
34 import org.xml.sax.Locator;
35 import org.xml.sax.SAXParseException;
37 /**
38 * Default implementation of the ValidationEventLocator interface.
39 *
40 * <p>
41 * JAXB providers are allowed to use whatever class that implements
42 * the ValidationEventLocator interface. This class is just provided for a
43 * convenience.
44 *
45 * @author <ul><li>Kohsuke Kawaguchi, Sun Microsystems, Inc.</li></ul>
46 * @see javax.xml.bind.Validator
47 * @see javax.xml.bind.ValidationEventHandler
48 * @see javax.xml.bind.ValidationEvent
49 * @see javax.xml.bind.ValidationEventLocator
50 * @since JAXB1.0
51 */
52 public class ValidationEventLocatorImpl implements ValidationEventLocator
53 {
54 /**
55 * Creates an object with all fields unavailable.
56 */
57 public ValidationEventLocatorImpl() {
58 }
60 /**
61 * Constructs an object from an org.xml.sax.Locator.
62 *
63 * The object's ColumnNumber, LineNumber, and URL become available from the
64 * values returned by the locator's getColumnNumber(), getLineNumber(), and
65 * getSystemId() methods respectively. Node, Object, and Offset are not
66 * available.
67 *
68 * @param loc the SAX Locator object that will be used to populate this
69 * event locator.
70 * @throws IllegalArgumentException if the Locator is null
71 */
72 public ValidationEventLocatorImpl( Locator loc ) {
73 if( loc == null ) {
74 throw new IllegalArgumentException(
75 Messages.format( Messages.MUST_NOT_BE_NULL, "loc" ) );
76 }
78 this.url = toURL(loc.getSystemId());
79 this.columnNumber = loc.getColumnNumber();
80 this.lineNumber = loc.getLineNumber();
81 }
83 /**
84 * Constructs an object from the location information of a SAXParseException.
85 *
86 * The object's ColumnNumber, LineNumber, and URL become available from the
87 * values returned by the locator's getColumnNumber(), getLineNumber(), and
88 * getSystemId() methods respectively. Node, Object, and Offset are not
89 * available.
90 *
91 * @param e the SAXParseException object that will be used to populate this
92 * event locator.
93 * @throws IllegalArgumentException if the SAXParseException is null
94 */
95 public ValidationEventLocatorImpl( SAXParseException e ) {
96 if( e == null ) {
97 throw new IllegalArgumentException(
98 Messages.format( Messages.MUST_NOT_BE_NULL, "e" ) );
99 }
101 this.url = toURL(e.getSystemId());
102 this.columnNumber = e.getColumnNumber();
103 this.lineNumber = e.getLineNumber();
104 }
106 /**
107 * Constructs an object that points to a DOM Node.
108 *
109 * The object's Node becomes available. ColumnNumber, LineNumber, Object,
110 * Offset, and URL are not available.
111 *
112 * @param _node the DOM Node object that will be used to populate this
113 * event locator.
114 * @throws IllegalArgumentException if the Node is null
115 */
116 public ValidationEventLocatorImpl(Node _node) {
117 if( _node == null ) {
118 throw new IllegalArgumentException(
119 Messages.format( Messages.MUST_NOT_BE_NULL, "_node" ) );
120 }
122 this.node = _node;
123 }
125 /**
126 * Constructs an object that points to a JAXB content object.
127 *
128 * The object's Object becomes available. ColumnNumber, LineNumber, Node,
129 * Offset, and URL are not available.
130 *
131 * @param _object the Object that will be used to populate this
132 * event locator.
133 * @throws IllegalArgumentException if the Object is null
134 */
135 public ValidationEventLocatorImpl(Object _object) {
136 if( _object == null ) {
137 throw new IllegalArgumentException(
138 Messages.format( Messages.MUST_NOT_BE_NULL, "_object" ) );
139 }
141 this.object = _object;
142 }
144 /** Converts a system ID to an URL object. */
145 private static URL toURL( String systemId ) {
146 try {
147 return new URL(systemId);
148 } catch( MalformedURLException e ) {
149 // TODO: how should we handle system id here?
150 return null; // for now
151 }
152 }
154 private URL url = null;
155 private int offset = -1;
156 private int lineNumber = -1;
157 private int columnNumber = -1;
158 private Object object = null;
159 private Node node = null;
162 /**
163 * @see javax.xml.bind.ValidationEventLocator#getURL()
164 */
165 public URL getURL() {
166 return url;
167 }
169 /**
170 * Set the URL field on this event locator. Null values are allowed.
171 *
172 * @param _url the url
173 */
174 public void setURL( URL _url ) {
175 this.url = _url;
176 }
178 /**
179 * @see javax.xml.bind.ValidationEventLocator#getOffset()
180 */
181 public int getOffset() {
182 return offset;
183 }
185 /**
186 * Set the offset field on this event locator.
187 *
188 * @param _offset the offset
189 */
190 public void setOffset( int _offset ) {
191 this.offset = _offset;
192 }
194 /**
195 * @see javax.xml.bind.ValidationEventLocator#getLineNumber()
196 */
197 public int getLineNumber() {
198 return lineNumber;
199 }
201 /**
202 * Set the lineNumber field on this event locator.
203 *
204 * @param _lineNumber the line number
205 */
206 public void setLineNumber( int _lineNumber ) {
207 this.lineNumber = _lineNumber;
208 }
210 /**
211 * @see javax.xml.bind.ValidationEventLocator#getColumnNumber()
212 */
213 public int getColumnNumber() {
214 return columnNumber;
215 }
217 /**
218 * Set the columnNumber field on this event locator.
219 *
220 * @param _columnNumber the column number
221 */
222 public void setColumnNumber( int _columnNumber ) {
223 this.columnNumber = _columnNumber;
224 }
226 /**
227 * @see javax.xml.bind.ValidationEventLocator#getObject()
228 */
229 public Object getObject() {
230 return object;
231 }
233 /**
234 * Set the Object field on this event locator. Null values are allowed.
235 *
236 * @param _object the java content object
237 */
238 public void setObject( Object _object ) {
239 this.object = _object;
240 }
242 /**
243 * @see javax.xml.bind.ValidationEventLocator#getNode()
244 */
245 public Node getNode() {
246 return node;
247 }
249 /**
250 * Set the Node field on this event locator. Null values are allowed.
251 *
252 * @param _node the Node
253 */
254 public void setNode( Node _node ) {
255 this.node = _node;
256 }
258 /**
259 * Returns a string representation of this object in a format
260 * helpful to debugging.
261 *
262 * @see Object#equals(Object)
263 */
264 public String toString() {
265 return MessageFormat.format("[node={0},object={1},url={2},line={3},col={4},offset={5}]",
266 getNode(),
267 getObject(),
268 getURL(),
269 String.valueOf(getLineNumber()),
270 String.valueOf(getColumnNumber()),
271 String.valueOf(getOffset()));
272 }
273 }