/* Woodstox XML processor
*
* Copyright (c) 2004 Tatu Saloranta, tatu.saloranta@iki.fi
*
* Licensed under the License specified in file LICENSE, included with
* the source code.
* You may not use this file except in compliance with the License.
*
* 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.
*/
package com.ctc.wstx.ent;
import java.io.IOException;
import java.io.Writer;
import java.net.URL;
import javax.xml.stream.Location;
import javax.xml.stream.XMLResolver;
import javax.xml.stream.XMLStreamException;
import com.ctc.wstx.api.ReaderConfig;
import com.ctc.wstx.evt.WEntityDeclaration;
import com.ctc.wstx.io.WstxInputSource;
Abstract base class for various entity declarations DTD reader
has parsed from DTD subsets.
/**
* Abstract base class for various entity declarations DTD reader
* has parsed from DTD subsets.
*/
public abstract class EntityDecl
extends WEntityDeclaration
{
Name/id of the entity used to reference it.
/**
* Name/id of the entity used to reference it.
*/
final String mName;
Context that is to be used to resolve references encountered from
expanded contents of this entity.
/**
* Context that is to be used to resolve references encountered from
* expanded contents of this entity.
*/
final URL mContext;
Flag that can be set to indicate that the declaration was in the
external DTD subset. Default is false.
/**
* Flag that can be set to indicate that the declaration was in the
* external DTD subset. Default is false.
*/
protected boolean mDeclaredExternally = false;
public EntityDecl(Location loc, String name, URL ctxt)
{
super(loc);
mName = name;
mContext = ctxt;
}
public void markAsExternallyDeclared() {
mDeclaredExternally = true;
}
@Override
public final String getBaseURI() {
return mContext.toExternalForm();
}
@Override
public final String getName() {
return mName;
}
// 27-Mar-2018, tatu: Implemented by `BaseEventImpl` so...
/*
@Override
public final Location getLocation() {
return getLocation();
}
*/
@Override
public abstract String getNotationName();
@Override
public abstract String getPublicId();
@Override
public abstract String getReplacementText();
public abstract int getReplacementText(Writer w)
throws IOException;
@Override
public abstract String getSystemId();
Returns: True, if the declaration occured in the external DTD
subset; false if not (internal subset, custom declaration)
/**
* @return True, if the declaration occured in the external DTD
* subset; false if not (internal subset, custom declaration)
*/
public boolean wasDeclaredExternally() {
return mDeclaredExternally;
}
/*
////////////////////////////////////////////////////////////
// Implementation of abstract base methods
////////////////////////////////////////////////////////////
*/
@Override
public abstract void writeEnc(Writer w) throws IOException;
/*
////////////////////////////////////////////////////////////
// Extended API for Wstx core
////////////////////////////////////////////////////////////
*/
// // // Access to data
public abstract char[] getReplacementChars();
public final int getReplacementTextLength() {
String str = getReplacementText();
return (str == null) ? 0 : str.length();
}
// // // Type information
public abstract boolean isExternal();
public abstract boolean isParsed();
// // // Factory methods
Method called to create the new input source through which expansion
value of the entity can be read.
/**
* Method called to create the new input source through which expansion
* value of the entity can be read.
*/
public abstract WstxInputSource expand(WstxInputSource parent,
XMLResolver res, ReaderConfig cfg, int xmlVersion)
throws IOException, XMLStreamException;
}