FileDocCategorySizeDatePackage
SerializableLocatorImpl.javaAPI DocJava SE 6 API6156Tue Jun 10 00:23:10 BST 2008com.sun.org.apache.xml.internal.utils

SerializableLocatorImpl

public class SerializableLocatorImpl extends Object implements Locator, 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.

see
org.xml.sax.helpers.LocatorImpl
see
org.xml.sax.Locator Locator
since
XalanJ2
author
Joe Kesselman
version
1.0

Fields Summary
static final long
serialVersionUID
private String
publicId
The public ID.
private String
systemId
The system ID.
private int
lineNumber
The line number.
private int
columnNumber
The column number.
Constructors Summary
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.

                                                                 
      
    
    
public SerializableLocatorImpl(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).

param
locator The locator to copy.

        setPublicId(locator.getPublicId());
        setSystemId(locator.getSystemId());
        setLineNumber(locator.getLineNumber());
        setColumnNumber(locator.getColumnNumber());
    
Methods Summary
public intgetColumnNumber()
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

        return columnNumber;
    
public intgetLineNumber()
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

        return lineNumber;
    
public java.lang.StringgetPublicId()
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

        return publicId;
    
public java.lang.StringgetSystemId()
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

        return systemId;
    
public voidsetColumnNumber(int columnNumber)
Set the column number for this locator (1-based).

param
columnNumber The column number, or -1 if none is available.
see
#getColumnNumber

        this.columnNumber = columnNumber;
    
public voidsetLineNumber(int lineNumber)
Set the line number for this locator (1-based).

param
lineNumber The line number, or -1 if none is available.
see
#getLineNumber

        this.lineNumber = lineNumber;
    
public voidsetPublicId(java.lang.String publicId)
Set the public identifier for this locator.

param
publicId The new public identifier, or null if none is available.
see
#getPublicId

        this.publicId = publicId;
    
public voidsetSystemId(java.lang.String systemId)
Set the system identifier for this locator.

param
systemId The new system identifier, or null if none is available.
see
#getSystemId

        this.systemId = systemId;