/* * Created on 27.7.2004 */ package net.sf.tomp.xml.resolver; import javax.xml.transform.Source; import javax.xml.transform.TransformerException; import javax.xml.transform.stream.StreamSource; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.xml.resolver.CatalogManager; import org.apache.xml.resolver.tools.CatalogResolver; /** * @author tomp */ public class JavaResolver extends CatalogResolver { private Log log = LogFactory.getLog(JavaResolver.class); protected static final String JAVA_PREFIX = "java:"; /** * */ public JavaResolver() { super(); // TODO Auto-generated constructor stub } /** * @param privateCatalog */ public JavaResolver(boolean privateCatalog) { super(privateCatalog); // TODO Auto-generated constructor stub } /** * @param manager */ public JavaResolver(CatalogManager manager) { super(manager); // TODO Auto-generated constructor stub } /* * (non-Javadoc) * * @see org.apache.xml.resolver.tools.CatalogResolver#getResolvedEntity(java.lang.String, * java.lang.String) */ public String getResolvedEntity(String publicId, String systemId) { // TODO Auto-generated method stub return super.getResolvedEntity(publicId, systemId); } /* * (non-Javadoc) * * @see javax.xml.transform.URIResolver#resolve(java.lang.String, * java.lang.String) */ public Source resolve(String href, String base) throws TransformerException { if (isJavaURI(href, base)) { String ref = href; String fragment = null; int hashPos = href.indexOf("#"); if (hashPos >= 0) { ref = href.substring(0, hashPos); fragment = href.substring(hashPos + 1); } ref = ref.substring(JAVA_PREFIX.length()); // FIXME base ignored; this is not OK! return new StreamSource(JavaResolver.class.getClassLoader() .getResourceAsStream(ref)); } else { Source src = super.resolve(href, base); log.debug("CatalogResolver resolved href="+href+" base="+base+" to systemId="+src.getSystemId()); // System.out.println("catalog="+this.getCatalog()); // System.out.println("catalog.currbase="+this.getCatalog().getCurrentBase()); return src; } } private boolean isJavaURI(String href, String base) { return base.startsWith(JAVA_PREFIX) || href.startsWith(JAVA_PREFIX); } }