| 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); |
| } |
| } |
| } |