/*
 * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.  Oracle designates this
 * particular file as subject to the "Classpath" exception as provided
 * by Oracle in the LICENSE file that accompanied this code.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */

// SAX default implementation for Locator.
// http://www.saxproject.org
// No warranty; no copyright -- use this as you will.
// $Id: LocatorImpl.java,v 1.2 2004/11/03 22:53:09 jsuttor Exp $

package org.xml.sax.helpers;

import org.xml.sax.Locator;


Provide an optional convenience implementation of Locator.
This module, both source code and documentation, is in the Public Domain, and comes with NO WARRANTY. See http://www.saxproject.org for further information.

This class is available mainly for application writers, who can use it to make a persistent snapshot of a locator at any point during a document parse:

Locator locator;
Locator startloc;
public void setLocator (Locator locator)
{
        // note the locator
  this.locator = locator;
}
public void startDocument ()
{
        // save the location of the start of the document
        // for future use.
  Locator startloc = new LocatorImpl(locator);
}

Normally, parser writers will not use this class, since it is more efficient to provide location information only when requested, rather than constantly updating a Locator object.

Author:David Megginson
See Also:
Since:1.4, SAX 1.0
/** * Provide an optional convenience implementation of Locator. * * <blockquote> * <em>This module, both source code and documentation, is in the * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em> * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a> * for further information. * </blockquote> * * <p>This class is available mainly for application writers, who * can use it to make a persistent snapshot of a locator at any * point during a document parse:</p> * * <pre> * Locator locator; * Locator startloc; * * public void setLocator (Locator locator) * { * // note the locator * this.locator = locator; * } * * public void startDocument () * { * // save the location of the start of the document * // for future use. * Locator startloc = new LocatorImpl(locator); * } *</pre> * * <p>Normally, parser writers will not use this class, since it * is more efficient to provide location information only when * requested, rather than constantly updating a Locator object.</p> * * @since 1.4, SAX 1.0 * @author David Megginson * @see org.xml.sax.Locator Locator */
public class LocatorImpl implements Locator {
Zero-argument constructor.

This will not normally be useful, since the main purpose of this class is to make a snapshot of an existing Locator.

/** * Zero-argument constructor. * * <p>This will not normally be useful, since the main purpose * of this class is to make a snapshot of an existing Locator.</p> */
public LocatorImpl () { }
Copy constructor.

Create a persistent copy of the current state of a locator. When the original locator changes, this copy will still keep the original values (and it can be used outside the scope of DocumentHandler methods).

Params:
  • locator – The locator to copy.
/** * Copy constructor. * * <p>Create a persistent copy of the current state of a locator. * When the original locator changes, this copy will still keep * the original values (and it can be used outside the scope of * DocumentHandler methods).</p> * * @param locator The locator to copy. */
public LocatorImpl (Locator locator) { setPublicId(locator.getPublicId()); setSystemId(locator.getSystemId()); setLineNumber(locator.getLineNumber()); setColumnNumber(locator.getColumnNumber()); } //////////////////////////////////////////////////////////////////// // Implementation of org.xml.sax.Locator ////////////////////////////////////////////////////////////////////
Return the saved public identifier.
See Also:
Returns:The public identifier as a string, or null if none is available.
/** * Return the saved public identifier. * * @return The public identifier as a string, or null if none * is available. * @see org.xml.sax.Locator#getPublicId * @see #setPublicId */
public String getPublicId () { return publicId; }
Return the saved system identifier.
See Also:
Returns:The system identifier as a string, or null if none is available.
/** * Return the saved system identifier. * * @return The system identifier as a string, or null if none * is available. * @see org.xml.sax.Locator#getSystemId * @see #setSystemId */
public String getSystemId () { return systemId; }
Return the saved line number (1-based).
See Also:
Returns:The line number as an integer, or -1 if none is available.
/** * Return the saved line number (1-based). * * @return The line number as an integer, or -1 if none is available. * @see org.xml.sax.Locator#getLineNumber * @see #setLineNumber */
public int getLineNumber () { return lineNumber; }
Return the saved column number (1-based).
See Also:
Returns:The column number as an integer, or -1 if none is available.
/** * Return the saved column number (1-based). * * @return The column number as an integer, or -1 if none is available. * @see org.xml.sax.Locator#getColumnNumber * @see #setColumnNumber */
public int getColumnNumber () { return columnNumber; } //////////////////////////////////////////////////////////////////// // Setters for the properties (not in org.xml.sax.Locator) ////////////////////////////////////////////////////////////////////
Set the public identifier for this locator.
Params:
  • publicId – The new public identifier, or null if none is available.
See Also:
/** * Set the public identifier for this locator. * * @param publicId The new public identifier, or null * if none is available. * @see #getPublicId */
public void setPublicId (String publicId) { this.publicId = publicId; }
Set the system identifier for this locator.
Params:
  • systemId – The new system identifier, or null if none is available.
See Also:
/** * Set the system identifier for this locator. * * @param systemId The new system identifier, or null * if none is available. * @see #getSystemId */
public void setSystemId (String systemId) { this.systemId = systemId; }
Set the line number for this locator (1-based).
Params:
  • lineNumber – The line number, or -1 if none is available.
See Also:
/** * Set the line number for this locator (1-based). * * @param lineNumber The line number, or -1 if none is available. * @see #getLineNumber */
public void setLineNumber (int lineNumber) { this.lineNumber = lineNumber; }
Set the column number for this locator (1-based).
Params:
  • columnNumber – The column number, or -1 if none is available.
See Also:
/** * Set the column number for this locator (1-based). * * @param columnNumber The column number, or -1 if none is available. * @see #getColumnNumber */
public void setColumnNumber (int columnNumber) { this.columnNumber = columnNumber; } //////////////////////////////////////////////////////////////////// // Internal state. //////////////////////////////////////////////////////////////////// private String publicId; private String systemId; private int lineNumber; private int columnNumber; } // end of LocatorImpl.java