/*
* Copyright 2010, 2011 Christopher Pheby
*
* 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.
*/
package org.jadira.usertype.spi.utils.reflection;
/**
* Utility methods related to {@link ClassLoader} resolution and the like
*/
public final class ClassLoaderUtils {
private ClassLoaderUtils() {
}
/**
* Gets an appropriate {@link ClassLoader} for the current thread
* @return The ClassLoader
*/
public static ClassLoader getClassLoader() {
ClassLoader cl = Thread.currentThread().getContextClassLoader();
if (cl == null) {
cl = ClassLoaderUtils.class.getClassLoader();
}
return cl;
}
/**
* Attempts to instantiate the named class, using the context ClassLoader for the current thread,
* or Class.forName if this does not work
* @param name The class name
* @return The Class instance
* @throws ClassNotFoundException If the class cannot be found
*/
public static Class<?> classForName(String name) throws ClassNotFoundException {
ClassLoader cl = getClassLoader();
try {
if (cl != null) {
return cl.loadClass(name);
}
} catch (ClassNotFoundException e) {
// Ignore and try using Class.forName()
}
return Class.forName(name);
}
}