61 lines
2.2 KiB
Java
61 lines
2.2 KiB
Java
package org.apache.xerces.util;
|
|
|
|
import java.io.IOException;
|
|
import java.io.InputStream;
|
|
import java.io.Reader;
|
|
import org.apache.xerces.xni.XMLResourceIdentifier;
|
|
import org.apache.xerces.xni.XNIException;
|
|
import org.apache.xerces.xni.parser.XMLEntityResolver;
|
|
import org.apache.xerces.xni.parser.XMLInputSource;
|
|
import org.xml.sax.EntityResolver;
|
|
import org.xml.sax.InputSource;
|
|
import org.xml.sax.SAXException;
|
|
|
|
public class EntityResolverWrapper implements XMLEntityResolver {
|
|
protected EntityResolver fEntityResolver;
|
|
|
|
public EntityResolverWrapper() {}
|
|
|
|
public EntityResolverWrapper(EntityResolver entityResolver) {
|
|
setEntityResolver(entityResolver);
|
|
}
|
|
|
|
public void setEntityResolver(EntityResolver entityResolver) {
|
|
this.fEntityResolver = entityResolver;
|
|
}
|
|
|
|
public EntityResolver getEntityResolver() {
|
|
return this.fEntityResolver;
|
|
}
|
|
|
|
public XMLInputSource resolveEntity(XMLResourceIdentifier resourceIdentifier) throws XNIException, IOException {
|
|
String pubId = resourceIdentifier.getPublicId();
|
|
String sysId = resourceIdentifier.getExpandedSystemId();
|
|
if (pubId == null && sysId == null)
|
|
return null;
|
|
if (this.fEntityResolver != null && resourceIdentifier != null)
|
|
try {
|
|
InputSource inputSource = this.fEntityResolver.resolveEntity(pubId, sysId);
|
|
if (inputSource != null) {
|
|
String publicId = inputSource.getPublicId();
|
|
String systemId = inputSource.getSystemId();
|
|
String baseSystemId = resourceIdentifier.getBaseSystemId();
|
|
InputStream byteStream = inputSource.getByteStream();
|
|
Reader charStream = inputSource.getCharacterStream();
|
|
String encoding = inputSource.getEncoding();
|
|
XMLInputSource xmlInputSource = new XMLInputSource(publicId, systemId, baseSystemId);
|
|
xmlInputSource.setByteStream(byteStream);
|
|
xmlInputSource.setCharacterStream(charStream);
|
|
xmlInputSource.setEncoding(encoding);
|
|
return xmlInputSource;
|
|
}
|
|
} catch (SAXException e) {
|
|
Exception ex = e.getException();
|
|
if (ex == null)
|
|
ex = e;
|
|
throw new XNIException(ex);
|
|
}
|
|
return null;
|
|
}
|
|
}
|