summaryrefslogtreecommitdiffstats
path: root/daemon/src/main/java/org/openslx/taskmanager/util/ClassLoaderHack.java
blob: 2557fcb34777f5566a00c45e9b1b85d43a09fa4c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package org.openslx.taskmanager.util;

public class ClassLoaderHack
{

	/**
	 * Get Class meta-object for given class in package. Only return class if it's somehow
	 * extending from given baseClass.
	 * 
	 * @param packageName package to search in
	 * @param className name of class to look for
	 * @param baseClass class the class in question has to be extended from
	 * @return class meta object, or null if not found
	 */
	@SuppressWarnings( "unchecked" )
	public static <T> Class<? extends T> getClass( String packageName, String className, Class<T> baseClass )
	{
		final Class<?> clazz;
		try {
			clazz = Class.forName( packageName + '.' + className );
		} catch ( ClassNotFoundException e ) {
			return null;
		}
		if ( clazz == null || ( baseClass != null && !baseClass.isAssignableFrom( clazz ) ) ) {
			return null;
		}
		return (Class<? extends T>)clazz;
	}

}