ClasspathUriResolver is now also an LSInputResolver so it can be used for both XSLT...
[utils] / support / general / src / main / java / org / wamblee / xml / ClasspathUriResolver.java
index 5fe5afb1e9a0c452c04f66b3b91d334de829d945..6ee7389e4014256d03c67acaa1a7d260e4971f7a 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright 2005 the original author or authors.
- *
+ * Copyright 2005-2010 the original author or authors.
+ * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- *
+ * 
  *      http://www.apache.org/licenses/LICENSE-2.0
- *
+ * 
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  */
 package org.wamblee.xml;
 
+import org.w3c.dom.ls.DOMImplementationLS;
+import org.w3c.dom.ls.LSInput;
+import org.w3c.dom.ls.LSResourceResolver;
 import org.wamblee.io.ClassPathResource;
 import org.wamblee.io.InputResource;
 
 import java.io.IOException;
+import java.io.InputStream;
 
 import javax.xml.transform.Source;
 import javax.xml.transform.TransformerException;
 import javax.xml.transform.URIResolver;
 import javax.xml.transform.stream.StreamSource;
 
-
 /**
  * URI resolver that resolves stylesheets through the classpath.
  */
-public class ClasspathUriResolver implements URIResolver {
-/**
+public class ClasspathUriResolver implements URIResolver, LSResourceResolver {
+    /**
      * Constructs the resolver.
-     *
+     * 
      */
     public ClasspathUriResolver() {
         // Empty.
@@ -40,19 +43,9 @@ public class ClasspathUriResolver implements URIResolver {
 
     /*
      * (non-Javadoc)
-     *
+     * 
      * @see javax.xml.transform.URIResolver#resolve(java.lang.String,
-     *      java.lang.String)
-     */
-    /**
-     * DOCUMENT ME!
-     *
-     * @param aHref DOCUMENT ME!
-     * @param aBase DOCUMENT ME!
-     *
-     * @return DOCUMENT ME!
-     *
-     * @throws TransformerException DOCUMENT ME!
+     * java.lang.String)
      */
     public Source resolve(String aHref, String aBase)
         throws TransformerException {
@@ -62,7 +55,28 @@ public class ClasspathUriResolver implements URIResolver {
             return new StreamSource(xslt.getInputStream());
         } catch (IOException e) {
             throw new TransformerException(
-                "Could not get XSLT style sheet in classpath '" + aHref + "'", e);
+                "Could not get XSLT style sheet in classpath '" + aHref + "'",
+                e);
         }
     }
+
+    @Override
+    public LSInput resolveResource(String aType, String aNamespaceURI,
+        String aPublicId, String aSystemId, String aBaseURI) {
+        try {
+            InputStream xslt = new ClassPathResource(aSystemId)
+                .getInputStream();
+            DOMImplementationLS impl = DomUtils.getDomImplementationLS();
+            LSInput input = impl.createLSInput();
+            input.setPublicId(aPublicId);
+            input.setSystemId(aSystemId);
+            input.setByteStream(xslt);
+            return input;
+        } catch (IOException e) {
+            return null;
+        }
+       
+       
+    }
+
 }