001: /*
002: * Copyright 1999-2004 The Apache Software Foundation.
003: *
004: * Licensed under the Apache License, Version 2.0 (the "License");
005: * you may not use this file except in compliance with the License.
006: * You may obtain a copy of the License at
007: *
008: * http://www.apache.org/licenses/LICENSE-2.0
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS,
012: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: */
016: /*
017: * $Id: SAXSourceLocator.java,v 1.9 2004/08/17 18:57:22 jycli Exp $
018: */
019: package org.apache.xml.utils;
020:
021: import java.io.Serializable;
022:
023: import javax.xml.transform.SourceLocator;
024:
025: import org.xml.sax.Locator;
026: import org.xml.sax.SAXParseException;
027: import org.xml.sax.helpers.LocatorImpl;
028:
029: /**
030: * Class SAXSourceLocator extends org.xml.sax.helpers.LocatorImpl
031: * for the purpose of implementing the SourceLocator interface,
032: * and thus can be both a SourceLocator and a SAX Locator.
033: */
034: public class SAXSourceLocator extends LocatorImpl implements
035: SourceLocator, Serializable {
036: static final long serialVersionUID = 3181680946321164112L;
037: /** The SAX Locator object.
038: * @serial
039: */
040: Locator m_locator;
041:
042: /**
043: * Constructor SAXSourceLocator
044: *
045: */
046: public SAXSourceLocator() {
047: }
048:
049: /**
050: * Constructor SAXSourceLocator
051: *
052: *
053: * @param locator Source locator
054: */
055: public SAXSourceLocator(Locator locator) {
056: m_locator = locator;
057: this .setColumnNumber(locator.getColumnNumber());
058: this .setLineNumber(locator.getLineNumber());
059: this .setPublicId(locator.getPublicId());
060: this .setSystemId(locator.getSystemId());
061: }
062:
063: /**
064: * Constructor SAXSourceLocator
065: *
066: *
067: * @param locator Source locator
068: */
069: public SAXSourceLocator(javax.xml.transform.SourceLocator locator) {
070: m_locator = null;
071: this .setColumnNumber(locator.getColumnNumber());
072: this .setLineNumber(locator.getLineNumber());
073: this .setPublicId(locator.getPublicId());
074: this .setSystemId(locator.getSystemId());
075: }
076:
077: /**
078: * Constructor SAXSourceLocator
079: *
080: *
081: * @param spe SAXParseException exception.
082: */
083: public SAXSourceLocator(SAXParseException spe) {
084: this .setLineNumber(spe.getLineNumber());
085: this .setColumnNumber(spe.getColumnNumber());
086: this .setPublicId(spe.getPublicId());
087: this .setSystemId(spe.getSystemId());
088: }
089:
090: /**
091: * Return the public identifier for the current document event.
092: *
093: * <p>The return value is the public identifier of the document
094: * entity or of the external parsed entity in which the markup
095: * triggering the event appears.</p>
096: *
097: * @return A string containing the public identifier, or
098: * null if none is available.
099: * @see #getSystemId
100: */
101: public String getPublicId() {
102: return (null == m_locator) ? super .getPublicId() : m_locator
103: .getPublicId();
104: }
105:
106: /**
107: * Return the system identifier for the current document event.
108: *
109: * <p>The return value is the system identifier of the document
110: * entity or of the external parsed entity in which the markup
111: * triggering the event appears.</p>
112: *
113: * <p>If the system identifier is a URL, the parser must resolve it
114: * fully before passing it to the application.</p>
115: *
116: * @return A string containing the system identifier, or null
117: * if none is available.
118: * @see #getPublicId
119: */
120: public String getSystemId() {
121: return (null == m_locator) ? super .getSystemId() : m_locator
122: .getSystemId();
123: }
124:
125: /**
126: * Return the line number where the current document event ends.
127: *
128: * <p><strong>Warning:</strong> The return value from the method
129: * is intended only as an approximation for the sake of error
130: * reporting; it is not intended to provide sufficient information
131: * to edit the character content of the original XML document.</p>
132: *
133: * <p>The return value is an approximation of the line number
134: * in the document entity or external parsed entity where the
135: * markup triggering the event appears.</p>
136: *
137: * @return The line number, or -1 if none is available.
138: * @see #getColumnNumber
139: */
140: public int getLineNumber() {
141: return (null == m_locator) ? super .getLineNumber() : m_locator
142: .getLineNumber();
143: }
144:
145: /**
146: * Return the column number where the current document event ends.
147: *
148: * <p><strong>Warning:</strong> The return value from the method
149: * is intended only as an approximation for the sake of error
150: * reporting; it is not intended to provide sufficient information
151: * to edit the character content of the original XML document.</p>
152: *
153: * <p>The return value is an approximation of the column number
154: * in the document entity or external parsed entity where the
155: * markup triggering the event appears.</p>
156: *
157: * @return The column number, or -1 if none is available.
158: * @see #getLineNumber
159: */
160: public int getColumnNumber() {
161: return (null == m_locator) ? super.getColumnNumber()
162: : m_locator.getColumnNumber();
163: }
164: }
|