Author: boisvert Date: Wed Apr 18 08:29:17 2007 New Revision: 530061 URL: http://svn.apache.org/viewvc?view=rev&rev=530061 Log: Fix ODE-111: Support <xsd:include> with relative schemaLocation
Modified: incubator/ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/DefaultResourceFinder.java Modified: incubator/ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/DefaultResourceFinder.java URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/DefaultResourceFinder.java?view=diff&rev=530061&r1=530060&r2=530061 ============================================================================== --- incubator/ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/DefaultResourceFinder.java (original) +++ incubator/ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/DefaultResourceFinder.java Wed Apr 18 08:29:17 2007 @@ -31,13 +31,13 @@ /** * Basic implementation of the [EMAIL PROTECTED] ResourceFinder} interface. Resolves * URIs relative to a base URI specified at the time of construction. - * + * * @author Maciej Szefler - m s z e f l e r @ g m a i l . c o m * */ public class DefaultResourceFinder implements ResourceFinder { - private static final Log __log = LogFactory.getLog(DefaultResourceFinder.class); - + private static final Log __log = LogFactory.getLog(DefaultResourceFinder.class); + private File _suDir; /** @@ -58,21 +58,30 @@ public InputStream openResource(URI uri) throws MalformedURLException, IOException { URI suURI = _suDir.toURI(); - - // Note that if we get an absolute URI, the relativize operation will simply - // return the absolute URI. + + if (uri.isAbsolute() && uri.getScheme().equals("file")) { + try { + return uri.toURL().openStream(); + } catch (Exception except) { + __log.fatal("openResource: unable to open file URL " + uri + "; " + except.toString()); + return null; + } + } + + // Note that if we get an absolute URI, the relativize operation will simply + // return the absolute URI. URI relative = suURI.relativize(uri); if (relative.isAbsolute() && !relative.getScheme().equals("urn")) { __log.fatal("openResource: invalid scheme (should be urn:) " + uri); return null; } - + File f = new File(suURI.getPath(),relative.getPath()); if (!f.exists()) { __log.debug("fileNotFound: " + f); return null; } - + return new FileInputStream(f); }