Author: chatellier Date: 2009-02-19 16:50:46 +0000 (Thu, 19 Feb 2009) New Revision: 453 Modified: maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/helper/ResourceResolver.java Log: Improve external resource resolver. Modified: maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/helper/ResourceResolver.java =================================================================== --- maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/helper/ResourceResolver.java 2009-02-19 09:37:42 UTC (rev 452) +++ maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/helper/ResourceResolver.java 2009-02-19 16:50:46 UTC (rev 453) @@ -14,18 +14,18 @@ * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + package org.codelutin.generator.plugin.helper; -import java.net.MalformedURLException; import java.net.URL; import javax.xml.transform.Source; import javax.xml.transform.URIResolver; import javax.xml.transform.stream.StreamSource; -import org.codelutin.util.Resource; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.codelutin.util.Resource; /** * ResourceResolver is a URIResolver for XSL transformation. <br/> @@ -48,53 +48,62 @@ * {@link javax.xml.transform.TransformerFactory}. <br/> * * @author chorlet + * @version $Revision: 1.0 $ * + * Last update : $Date: 18 févr. 2009 $ + * By : $Author: chatellier $ */ public class ResourceResolver implements URIResolver { private static final Log log = LogFactory.getLog(ResourceResolver.class); - /** - * Resolve href on local resource. - * - * @return null if local resource not found - */ + /** + * Resolve href on local resource. + * + * @return null if local resource not found + */ @Override - public Source resolve(String href, String base) { - String filename = null; - try { - filename = new URL(href).getPath(); - int beginIndex = filename.lastIndexOf('/'); - if (beginIndex > 0) { - filename = filename.substring(beginIndex + 1); - } - } catch (MalformedURLException e) { - e.printStackTrace(); - return null; - } - if (filename == null || filename.length() == 0) { - return null; - } - return findSource(filename); - } + public Source resolve(String href, String base) { + + if (log.isDebugEnabled()) { + log.debug("Resolving " + href); + } + + // example 1 : pathmap://UML_METAMODELS/UML.metamodel.uml + // example 2 : http://argouml.org/profiles/uml14/default-java.xmi + + String filename = null; + int beginIndex = href.lastIndexOf('/'); + if (beginIndex > 0) { + filename = href.substring(beginIndex + 1); + } - protected Source findSource(String filename) { - // System.out.println("[ResourceResolver] " + filename); + if (filename == null || filename.length() == 0) { + return null; + } + return findSource(filename); + } - String extension = null; - int beginIndex = filename.lastIndexOf('.'); - if (beginIndex > 0) { - extension = filename.substring(beginIndex + 1); - } + protected Source findSource(String filename) { - URL url = Resource.getURLOrNull(extension + "/" + filename); - if (url == null) { - return null; - } + String extension = null; + int beginIndex = filename.lastIndexOf('.'); + if (beginIndex > 0) { + extension = filename.substring(beginIndex + 1); + } + + if (log.isDebugEnabled()) { + log.debug("findSource " + extension + "/" + filename); + } + + URL url = Resource.getURLOrNull(extension + "/" + filename); + if (url == null) { + return null; + } if (log.isInfoEnabled()) { - log.info("[ResourceResolver] " + url.toString()); + log.debug("[ResourceResolver] " + url.toString()); } - return new StreamSource(url.toString()); - } + return new StreamSource(url.toString()); + } }