/*
* reserved comment block
* DO NOT REMOVE OR ALTER!
*/
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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
*
*
* 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.
*/
/**
* This class is extremely useful for loading resources and classes in a fault
* tolerant manner that works across different applications servers. Do not
* touch this unless you're a grizzled classloading guru veteran who is going to
* verify any change on 6 different application servers.
*/
// NOTE! This is a duplicate of utils.ClassLoaderUtils with public
// modifiers changed to package-private. Make sure to integrate any future
// changes to utils.ClassLoaderUtils to this file.
final class ClassLoaderUtils {
/** {@link org.apache.commons.logging} logging facility */
private ClassLoaderUtils() {
}
/**
* Load a given resource. <p/> This method will try to load the resource
* using the following methods (in order):
* <ul>
* <li>From Thread.currentThread().getContextClassLoader()
* <li>From ClassLoaderUtil.class.getClassLoader()
* <li>callingClass.getClassLoader()
* </ul>
*
* @param resourceName The name of the resource to load
* @param callingClass The Class object of the calling object
*/
//certain classloaders need it without the leading /
url =
);
}
if (cluClassloader == null) {
}
}
//certain classloaders need it without the leading /
}
}
}
}
}
return url;
}
/**
* Load a given resources. <p/> This method will try to load the resources
* using the following methods (in order):
* <ul>
* <li>From Thread.currentThread().getContextClassLoader()
* <li>From ClassLoaderUtil.class.getClassLoader()
* <li>callingClass.getClassLoader()
* </ul>
*
* @param resourceName The name of the resource to load
* @param callingClass The Class object of the calling object
*/
public boolean hasMoreElements() {
return false;
}
public URL nextElement() {
return null;
}
};
try {
} catch (IOException e) {
}
//ignore
}
//certain classloaders need it without the leading /
try {
urls =
);
} catch (IOException e) {
}
// ignore
}
}
if (cluClassloader == null) {
}
if (!urls.hasMoreElements()) {
try {
} catch (IOException e) {
}
// ignore
}
}
//certain classloaders need it without the leading /
try {
} catch (IOException e) {
}
// ignore
}
}
if (!urls.hasMoreElements()) {
try {
} catch (IOException e) {
}
// ignore
}
}
}
if (!urls.hasMoreElements()) {
}
}
while (urls.hasMoreElements()) {
}
}
return ret;
}
/**
* This is a convenience method to load a resource as a stream. <p/> The
* algorithm used to find the resource is given in getResource()
*
* @param resourceName The name of the resource to load
* @param callingClass The Class object of the calling object
*/
try {
} catch (IOException e) {
}
return null;
}
}
/**
* Load a class with a given name. <p/> It will try to load the class in the
* following order:
* <ul>
* <li>From Thread.currentThread().getContextClassLoader()
* <li>Using the basic Class.forName()
* <li>From ClassLoaderUtil.class.getClassLoader()
* <li>From the callingClass.getClassLoader()
* </ul>
*
* @param className The name of the class to load
* @param callingClass The Class object of the calling object
* @throws ClassNotFoundException If the class cannot be found anywhere.
*/
throws ClassNotFoundException {
try {
}
} catch (ClassNotFoundException e) {
}
//ignore
}
}
throws ClassNotFoundException {
try {
} catch (ClassNotFoundException ex) {
try {
}
} catch (ClassNotFoundException exc) {
}
}
}
throw ex;
}
}
}