org.apache.xml.utils
Class SerializableLocatorImpl

java.lang.Object
  extended by org.apache.xml.utils.SerializableLocatorImpl
All Implemented Interfaces:
java.io.Serializable, org.xml.sax.Locator

public class SerializableLocatorImpl
extends java.lang.Object
implements org.xml.sax.Locator, java.io.Serializable

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.

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.

Since:
XalanJ2
See Also:
LocatorImpl, Locator, Serialized Form

Field Summary
private  int columnNumber
          The column number.
private  int lineNumber
          The line number.
private  java.lang.String publicId
          The public ID.
(package private) static long serialVersionUID
           
private  java.lang.String systemId
          The system ID.
 
Constructor Summary
SerializableLocatorImpl()
          Zero-argument constructor.
SerializableLocatorImpl(org.xml.sax.Locator locator)
          Copy constructor.
 
Method Summary
 int getColumnNumber()
          Return the saved column number (1-based).
 int getLineNumber()
          Return the saved line number (1-based).
 java.lang.String getPublicId()
          Return the saved public identifier.
 java.lang.String getSystemId()
          Return the saved system identifier.
 void setColumnNumber(int columnNumber)
          Set the column number for this locator (1-based).
 void setLineNumber(int lineNumber)
          Set the line number for this locator (1-based).
 void setPublicId(java.lang.String publicId)
          Set the public identifier for this locator.
 void setSystemId(java.lang.String systemId)
          Set the system identifier for this locator.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

serialVersionUID

static final long serialVersionUID
See Also:
Constant Field Values

publicId

private java.lang.String publicId
The public ID.


systemId

private java.lang.String systemId
The system ID.


lineNumber

private int lineNumber
The line number.


columnNumber

private int columnNumber
The column number.

Constructor Detail

SerializableLocatorImpl

public SerializableLocatorImpl()
Zero-argument constructor.

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.


SerializableLocatorImpl

public SerializableLocatorImpl(org.xml.sax.Locator locator)
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).

Parameters:
locator - The locator to copy.
Method Detail

getPublicId

public java.lang.String getPublicId()
Return the saved public identifier.

Specified by:
getPublicId in interface org.xml.sax.Locator
Returns:
The public identifier as a string, or null if none is available.
See Also:
Locator.getPublicId(), setPublicId(java.lang.String)

getSystemId

public java.lang.String getSystemId()
Return the saved system identifier.

Specified by:
getSystemId in interface org.xml.sax.Locator
Returns:
The system identifier as a string, or null if none is available.
See Also:
Locator.getSystemId(), setSystemId(java.lang.String)

getLineNumber

public int getLineNumber()
Return the saved line number (1-based).

Specified by:
getLineNumber in interface org.xml.sax.Locator
Returns:
The line number as an integer, or -1 if none is available.
See Also:
Locator.getLineNumber(), setLineNumber(int)

getColumnNumber

public int getColumnNumber()
Return the saved column number (1-based).

Specified by:
getColumnNumber in interface org.xml.sax.Locator
Returns:
The column number as an integer, or -1 if none is available.
See Also:
Locator.getColumnNumber(), setColumnNumber(int)

setPublicId

public void setPublicId(java.lang.String publicId)
Set the public identifier for this locator.

Parameters:
publicId - The new public identifier, or null if none is available.
See Also:
getPublicId()

setSystemId

public void setSystemId(java.lang.String systemId)
Set the system identifier for this locator.

Parameters:
systemId - The new system identifier, or null if none is available.
See Also:
getSystemId()

setLineNumber

public void setLineNumber(int lineNumber)
Set the line number for this locator (1-based).

Parameters:
lineNumber - The line number, or -1 if none is available.
See Also:
getLineNumber()

setColumnNumber

public void setColumnNumber(int columnNumber)
Set the column number for this locator (1-based).

Parameters:
columnNumber - The column number, or -1 if none is available.
See Also:
getColumnNumber()