blob: 13c4f05446792ed1138ec7d6c75ad894db1966ac [file] [log] [blame]
package org.testng.internal;
import java.lang.reflect.Constructor;
import org.testng.IObjectFactory;
import org.testng.TestNGException;
/**
* Default factory for test creation.
* Note that if no constructor is found matching the specified parameters,
* this factory will try to invoke a constructor that takes in a string object
*
* @author Hani Suleiman
* Date: Mar 6, 2007
* Time: 12:00:27 PM
* @since 5.6
*/
public class ObjectFactoryImpl implements IObjectFactory {
public Object newInstance(Constructor constructor, Object... params) {
try {
return constructor.newInstance(params);
}
catch (IllegalAccessException ex) {
return ClassHelper.tryOtherConstructor(constructor.getDeclaringClass());
}
catch (InstantiationException ex) {
return ClassHelper.tryOtherConstructor(constructor.getDeclaringClass());
}
catch(Exception ex) {
throw new TestNGException("Cannot instantiate class "
+ constructor.getDeclaringClass().getName(), ex);
}
}
}