blob: c58a002ef3bb21446e2bf3b21c1afda20764f1fe [file] [log] [blame]
/*
*
* 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;
}
}