--- /dev/null
+/*
+ *
+ * Copyright 2004 The Apache Software Foundation.
+ *
+ * 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Created on 8/03/2004
+ * $Id$
+ */
+package org.apache.fop.configuration;
+
+import java.io.InputStream;
+import java.net.URL;
+
+import org.apache.fop.apps.FOPException;
+
+/**
+ * @author pbw
+ * @version $Revision$ $Name$
+ */
+public class ConfigurationResource {
+
+ /**
+ * Convenience class for common functionality required by the config
+ * files.
+ * @param fname the configuration file name.
+ * @param classob the requesting class
+ * @return an <tt>InputStream</tt> generated through a call to
+ * <tt>getResourceAsStream</tt> on the context <tt>ClassLoader</tt>
+ * or the <tt>ClassLoader</tt> for the conf class provided as an argument.
+ */
+ public static InputStream getResourceFile(String fname, Class classob)
+ throws FOPException
+ {
+ InputStream configfile = null;
+
+ // Try to use Context Class Loader to load the properties file.
+ try {
+ java.lang.reflect.Method getCCL =
+ Thread.class.getMethod("getContextClassLoader", new Class[0]);
+ if (getCCL != null) {
+ ClassLoader contextClassLoader =
+ (ClassLoader)getCCL.invoke(Thread.currentThread(),
+ new Object[0]);
+ configfile = contextClassLoader.getResourceAsStream(fname);
+ }
+ } catch (Exception e) {}
+
+ // the entry /conf/config.xml refers to a directory conf
+ // which is a sibling of org
+ if (configfile == null)
+ configfile = classob.getResourceAsStream(fname);
+ if (configfile == null) {
+ throw new FOPException(
+ "can't find configuration file " + fname);
+ }
+ return configfile;
+ }
+
+ /**
+ * Convenience class for common functionality required by the config
+ * files.
+ * @param fname the configuration file name.
+ * @param classob the requesting class
+ * @return a <tt>URL</tt> generated through a call to
+ * <tt>getResource</tt> on the context <tt>ClassLoader</tt>
+ * or the <tt>ClassLoader</tt> for the conf class provided as an argument.
+ */
+ public static URL getResourceUrl(String fname, Class classob)
+ throws FOPException
+ {
+ URL configUrl = null;
+
+ // Try to use Context Class Loader to load the properties file.
+ try {
+ java.lang.reflect.Method getCCL =
+ Thread.class.getMethod("getContextClassLoader", new Class[0]);
+ if (getCCL != null) {
+ ClassLoader contextClassLoader =
+ (ClassLoader)getCCL.invoke(Thread.currentThread(),
+ new Object[0]);
+ configUrl = contextClassLoader.getResource(fname);
+ }
+ } catch (Exception e) {}
+
+ // the entry /conf/config.xml refers to a directory conf
+ // which is a sibling of org
+ if (configUrl == null)
+ configUrl = classob.getResource(fname);
+ if (configUrl == null) {
+ throw new FOPException(
+ "can't find configuration file " + fname);
+ }
+ return configUrl;
+ }
+}