package com.ctc.wstx.dom;
import java.util.Collections;
import javax.xml.stream.*;
import javax.xml.transform.dom.DOMSource;
import org.codehaus.stax2.ri.dom.DOMWrappingReader;
import com.ctc.wstx.api.ReaderConfig;
import com.ctc.wstx.exc.WstxParsingException;
public class WstxDOMWrappingReader
extends DOMWrappingReader
{
protected final ReaderConfig mConfig;
protected WstxDOMWrappingReader(DOMSource src, ReaderConfig cfg)
throws XMLStreamException
{
super(src, cfg.willSupportNamespaces(), cfg.willCoalesceText());
mConfig = cfg;
if (cfg.hasInternNamesBeenEnabled()) {
setInternNames(true);
}
if (cfg.hasInternNsURIsBeenEnabled()) {
setInternNsURIs(true);
}
}
public static WstxDOMWrappingReader createFrom(DOMSource src, ReaderConfig cfg)
throws XMLStreamException
{
return new WstxDOMWrappingReader(src, cfg);
}
@Override
public boolean isPropertySupported(String name) {
return mConfig.isPropertySupported(name);
}
@Override
public Object getProperty(String name)
{
if (name.equals("javax.xml.stream.entities")) {
return Collections.EMPTY_LIST;
}
if (name.equals("javax.xml.stream.notations")) {
return Collections.EMPTY_LIST;
}
return mConfig.getProperty(name);
}
@Override
public boolean setProperty(String name, Object value)
{
return mConfig.setProperty(name, value);
}
@Override
protected void throwStreamException(String msg, Location loc)
throws XMLStreamException
{
if (loc == null) {
throw new WstxParsingException(msg);
}
throw new WstxParsingException(msg, loc);
}
}