package com.ctc.wstx.evt;
import java.util.ArrayList;
import java.util.List;
import javax.xml.stream.Location;
import javax.xml.stream.events.EntityDeclaration;
import javax.xml.stream.events.NotationDeclaration;
import org.codehaus.stax2.ri.evt.DTDEventImpl;
import com.ctc.wstx.dtd.DTDSubset;
Event that contains all StAX accessible information read from internal
and external DTD subsets.
/**
* Event that contains all StAX accessible information read from internal
* and external DTD subsets.
*/
public class WDTD
extends DTDEventImpl
{
Internal DTD Object that contains combined information from internal
and external subsets.
/**
* Internal DTD Object that contains combined information from internal
* and external subsets.
*/
final DTDSubset mSubset;
/*
/////////////////////////////////////////////////////
// Lazily constructed objects
/////////////////////////////////////////////////////
*/
List<EntityDeclaration> mEntities = null;
List<NotationDeclaration> mNotations = null;
/*
/////////////////////////////////////////////////////
// Constuctors
/////////////////////////////////////////////////////
*/
public WDTD(Location loc, String rootName,
String sysId, String pubId, String intSubset,
DTDSubset dtdSubset)
{
super(loc, rootName, sysId, pubId, intSubset, dtdSubset);
mSubset = dtdSubset;
}
public WDTD(Location loc, String rootName,
String sysId, String pubId, String intSubset)
{
this(loc, rootName, sysId, pubId, intSubset, null);
}
Constructor used when only partial information is available...
/**
* Constructor used when only partial information is available...
*/
public WDTD(Location loc, String rootName, String intSubset)
{
this(loc, rootName, null, null, intSubset, null);
}
public WDTD(Location loc, String fullText)
{
super(loc, fullText);
mSubset = null;
}
/*
/////////////////////////////////////////////////////
// Accessors
/////////////////////////////////////////////////////
*/
@Override
public List<EntityDeclaration> getEntities()
{
if (mEntities == null && (mSubset != null)) {
/* Better make a copy, so that caller can not modify list
* DTD has, which may be shared (since DTD subset instances
* are cached and reused)
*/
mEntities = new ArrayList<EntityDeclaration>(mSubset.getGeneralEntityList());
}
return mEntities;
}
@Override
public List<NotationDeclaration> getNotations() {
if (mNotations == null && (mSubset != null)) {
mNotations = new ArrayList<NotationDeclaration>(mSubset.getNotationList());
}
return mNotations;
}
}