SerializableLocatorImplpublic class SerializableLocatorImpl extends Object implements Locator, SerializableThe 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. |
Fields Summary |
---|
private String | publicIdThe public ID. | private String | systemIdThe system ID. | private int | lineNumberThe line number. | private int | columnNumberThe 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).
setPublicId(locator.getPublicId());
setSystemId(locator.getSystemId());
setLineNumber(locator.getLineNumber());
setColumnNumber(locator.getColumnNumber());
|
Methods Summary |
---|
public int | getColumnNumber()Return the saved column number (1-based).
return columnNumber;
| public int | getLineNumber()Return the saved line number (1-based).
return lineNumber;
| public java.lang.String | getPublicId()Return the saved public identifier.
return publicId;
| public java.lang.String | getSystemId()Return the saved system identifier.
return systemId;
| public void | setColumnNumber(int columnNumber)Set the column number for this locator (1-based).
this.columnNumber = columnNumber;
| public void | setLineNumber(int lineNumber)Set the line number for this locator (1-based).
this.lineNumber = lineNumber;
| public void | setPublicId(java.lang.String publicId)Set the public identifier for this locator.
this.publicId = publicId;
| public void | setSystemId(java.lang.String systemId)Set the system identifier for this locator.
this.systemId = systemId;
|
|