/**
*
*/
package org.activejpa.entity.testng;
import java.lang.reflect.Constructor;
import java.util.Arrays;
import java.util.List;
import org.testng.IObjectFactory;
/**
* @author ganeshs
*
*/
public class DomainClassObjectFactory implements IObjectFactory {
private static final long serialVersionUID = 1L;
private ClassLoader loader;
public DomainClassObjectFactory(List<String> ingnoredPackages) throws Exception {
Class<?> clazz = Class.forName("org.activejpa.enhancer.MyClassLoader");
Constructor<?> constructor = clazz.getConstructor(ClassLoader.class, List.class);
loader = (ClassLoader) constructor.newInstance(Thread.currentThread().getContextClassLoader(), ingnoredPackages);
Thread.currentThread().setContextClassLoader(loader);
}
public DomainClassObjectFactory() throws Exception {
this(Arrays.asList("org.xml."));
}
@SuppressWarnings("rawtypes")
@Override
public Object newInstance(Constructor constructor, Object... params) {
Class<?> clazz = constructor.getDeclaringClass();
try {
clazz = loader.loadClass(clazz.getName());
constructor = clazz.getConstructor(constructor.getParameterTypes());
return constructor.newInstance(params);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}