content: /*
   *  This file is part of AndroidIDE.
   *
   *  AndroidIDE is free software: you can redistribute it and/or modify
   *  it under the terms of the GNU General Public License as published by
   *  the Free Software Foundation, either version 3 of the License, or
   *  (at your option) any later version.
   *
   *  AndroidIDE 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 for more details.
   *
   *  You should have received a copy of the GNU General Public License
   *   along with AndroidIDE.  If not, see <https://www.gnu.org/licenses/>.
   */
  
  /*
   * reserved comment block
   * DO NOT REMOVE OR ALTER!
   */
  /*
   * Copyright 1999-2004 The Apache Software Foundation.
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  /*
   * $Id: SerializableLocatorImpl.java,v 1.2.4.1 2005/09/15 08:15:54 suresh_emailid Exp $
   */
  package jaxp.sun.org.apache.xml.internal.utils;
  
  
  /**
   * The standard SAX implementation of LocatorImpl is not serializable,
   * limiting its utility as "a persistent snapshot of a locator".
   * This is a quick hack to make it so. Note that it makes more sense
   * in many cases to set up fields to hold this data rather than pointing
   * at another object... but that decision should be made on architectural
   * grounds rather than serializability.
   *<p>
   * It isn't clear whether subclassing LocatorImpl and adding serialization
   * methods makes more sense than copying it and just adding Serializable
   * to its interface. Since it's so simple, I've taken the latter approach
   * for now.
   *
   * @see org.xml.sax.helpers.LocatorImpl
   * @see org.xml.sax.Locator Locator
   * @since XalanJ2
   * @author Joe Kesselman
   */
  public class SerializableLocatorImpl
  implements org.xml.sax.Locator, java.io.Serializable
  
  {
      static final long serialVersionUID = -2660312888446371460L;
      /**
       * Zero-argument constructor.
       *
       * <p>SAX says "This will not normally be useful, since the main purpose
       * of this class is to make a snapshot of an existing Locator." In fact,
       * it _is_ sometimes useful when you want to construct a new Locator
       * pointing to a specific location... which, after all, is why the
       * setter methods are provided.
       * </p>
       */
      public SerializableLocatorImpl ()
      {
      }
  
  
      /**
       * 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 SerializableLocatorImpl (org.xml.sax.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.
       *
       * @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.
       *
       * @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).
       *
       * @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).
       *
       * @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.
       *
       * @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.
       *
       * @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).
       *
       * @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).
       *
       * @param columnNumber The column number, or -1 if none is available.
       * @see #getColumnNumber
       */
      public void setColumnNumber (int columnNumber)
      {
          this.columnNumber = columnNumber;
      }
  
  
      ////////////////////////////////////////////////////////////////////
      // Internal state.
      ////////////////////////////////////////////////////////////////////
  
      /**
       * The public ID.
       * @serial
       */
      private String publicId;
  
      /**
       * The system ID.
       * @serial
       */
      private String systemId;
  
      /**
       * The line number.
       * @serial
       */
      private int lineNumber;
  
      /**
       * The column number.
       * @serial
       */
      private int columnNumber;
  
  }
  
  // end of LocatorImpl.java
  