/* * Copyright 2013 Guidewire Software, Inc. */ package gw.internal.xml.xsd.typeprovider; import gw.xml.XmlException; import org.w3c.dom.ls.LSInput; import org.w3c.dom.ls.LSResourceResolver; import java.io.ByteArrayInputStream; import java.io.InputStream; import java.io.Reader; import java.util.Map; public class XmlSchemaCachedResourceResolver implements LSResourceResolver { private final Map<String, byte[]> _cache; public XmlSchemaCachedResourceResolver( Map<String, byte[]> cache ) { _cache = cache; } @Override public LSInput resolveResource( String type, String namespaceURI, final String publicId, final String systemId, final String baseURI ) { final byte[] bytes = _cache.get( namespaceURI == null ? "" : namespaceURI ); if ( bytes == null ) { throw new XmlException( "Schema not found with namespace " + ( namespaceURI == null ? "null" : '\'' + namespaceURI + '\'' ) ); } return new LSInput() { @Override public Reader getCharacterStream() { return null; } @Override public void setCharacterStream( Reader characterStream ) { throw new UnsupportedOperationException(); } @Override public InputStream getByteStream() { return new ByteArrayInputStream( bytes ); } @Override public void setByteStream( InputStream byteStream ) { throw new UnsupportedOperationException(); } @Override public String getStringData() { return null; } @Override public void setStringData( String stringData ) { throw new UnsupportedOperationException(); } @Override public String getSystemId() { return systemId; } @Override public void setSystemId( String systemId ) { throw new UnsupportedOperationException(); } @Override public String getPublicId() { return publicId; } @Override public void setPublicId( String publicId ) { throw new UnsupportedOperationException(); } @Override public String getBaseURI() { return baseURI; } @Override public void setBaseURI( String baseURI ) { throw new UnsupportedOperationException(); } @Override public String getEncoding() { return null; } @Override public void setEncoding( String encoding ) { throw new UnsupportedOperationException(); } @Override public boolean getCertifiedText() { throw new UnsupportedOperationException(); } @Override public void setCertifiedText( boolean certifiedText ) { throw new UnsupportedOperationException(); } }; } }