/*******************************************************************************
* ATE, Automation Test Engine
*
* Copyright 2014, Montreal PROT, or individual contributors as
* indicated by the @author tags or express copyright attribution
* statements applied by the authors. All third-party contributions are
* distributed under license by Montreal PROT.
*
* 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.bigtester.ate;//NOPMD
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.sql.SQLException;
import java.util.Map;
import java.util.Set;
import org.bigtester.ate.constant.GlobalConstants;
import org.bigtester.ate.constant.XsdElementConstants;
import org.bigtester.ate.model.data.TestDatabaseInitializer;
import org.bigtester.ate.model.project.TestProject;
import org.bigtester.ate.systemlogger.problemhandler.IATEProblemHandler;
import org.bigtester.ate.systemlogger.problemhandler.ProblemHandlerRegistry;
import org.bigtester.ate.xmlschema.AlertDialogAcceptActionBeanDefinitionParser;
import org.bigtester.ate.xmlschema.AlertDialogFindInFocusBeanDefinitionParser;
import org.bigtester.ate.xmlschema.AssignValueActionBeanDefinitionParser;
import org.bigtester.ate.xmlschema.AteReferenceBeanDefinitionParser;
import org.bigtester.ate.xmlschema.AutoIncrementalDataHolderBeanDefinitionParser;
import org.bigtester.ate.xmlschema.BaseERValueBeanDefinitionParser;
import org.bigtester.ate.xmlschema.BaseElementActionBeanDefinitionParser;
import org.bigtester.ate.xmlschema.BaseInputDataValueBeanDefinitionParser;
import org.bigtester.ate.xmlschema.BasePageModelBeanDefinitionParser;
import org.bigtester.ate.xmlschema.BasePageObjectBeanDefinitionParser;
import org.bigtester.ate.xmlschema.CaseDependencyBeanDefinitionParser;
import org.bigtester.ate.xmlschema.CaseTypeServiceBeanDefinitionParser;
import org.bigtester.ate.xmlschema.ChromeDriverBeanDefinitionParser;
import org.bigtester.ate.xmlschema.ClearTextActionBeanDefinitionParser;
import org.bigtester.ate.xmlschema.ClickActionBeanDefinitionParser;
import org.bigtester.ate.xmlschema.CookiesFindAllBeanDefinitionParser;
import org.bigtester.ate.xmlschema.CookiesFindByDomainNameBeanDefinitionParser;
import org.bigtester.ate.xmlschema.CursorMoveActionBeanDefinitionParser;
import org.bigtester.ate.xmlschema.DropdownListSelectActionBeanDefinitionParser;
import org.bigtester.ate.xmlschema.ElementActionDefBeanDefinitionParser;
import org.bigtester.ate.xmlschema.ElementStepBeanDefinitionParser;
import org.bigtester.ate.xmlschema.FileExportActionBeanDefinitionParser;
import org.bigtester.ate.xmlschema.FileImportActionBeanDefinitionParser;
import org.bigtester.ate.xmlschema.FilesExportActionBeanDefinitionParser;
import org.bigtester.ate.xmlschema.FilesImportActionBeanDefinitionParser;
import org.bigtester.ate.xmlschema.FindByClassBeanDefinitionParser;
import org.bigtester.ate.xmlschema.FindByCssBeanDefinitionParser;
import org.bigtester.ate.xmlschema.FindByIdBeanDefinitionParser;
import org.bigtester.ate.xmlschema.FindByLinkTextBeanDefinitionParser;
import org.bigtester.ate.xmlschema.FindByNameBeanDefinitionParser;
import org.bigtester.ate.xmlschema.FindByPartialLinkTextBeanDefinitionParser;
import org.bigtester.ate.xmlschema.FindByTagNameBeanDefinitionParser;
import org.bigtester.ate.xmlschema.FindByXpathBeanDefinitionParser;
import org.bigtester.ate.xmlschema.FirefoxDriverBeanDefinitionParser;
import org.bigtester.ate.xmlschema.GenericSystemLoggerBeanDefinitionParser;
import org.bigtester.ate.xmlschema.HomeStepBeanDefinitionParser;
import org.bigtester.ate.xmlschema.HomepageBeanDefinitionParser;
import org.bigtester.ate.xmlschema.HtmlUnitDriverBeanDefinitionParser;
import org.bigtester.ate.xmlschema.IEDriverBeanDefinitionParser;
import org.bigtester.ate.xmlschema.IXsdBeanDefinitionParser;
import org.bigtester.ate.xmlschema.InputDataValueParentBeanDefinitionParser;
import org.bigtester.ate.xmlschema.LastPageBeanDefinitionParser;
import org.bigtester.ate.xmlschema.LastStepBeanDefinitionParser;
import org.bigtester.ate.xmlschema.MyWebElementBeanDefinitionParser;
import org.bigtester.ate.xmlschema.OperaDriverBeanDefinitionParser;
import org.bigtester.ate.xmlschema.PageElementExistBeanDefinitionParser;
import org.bigtester.ate.xmlschema.PagePropertyCorrectBeanDefinitionParser;
import org.bigtester.ate.xmlschema.RegularPageBeanDefinitionParser;
import org.bigtester.ate.xmlschema.RepeatStepBeanDefinitionParser;
import org.bigtester.ate.xmlschema.RunTimeDataHolderBeanDefinitionParser;
import org.bigtester.ate.xmlschema.SafariDriverBeanDefinitionParser;
import org.bigtester.ate.xmlschema.SendKeysActionBeanDefinitionParser;
import org.bigtester.ate.xmlschema.StepERValueBeanDefinitionParser;
import org.bigtester.ate.xmlschema.StepInputDataValueBeanDefinitionParser;
import org.bigtester.ate.xmlschema.StepTypeReferenceBeanDefinitionParser;
import org.bigtester.ate.xmlschema.StepTypeServiceBeanDefinitionParser;
import org.bigtester.ate.xmlschema.TestCaseBeanDefinitionParser;
import org.bigtester.ate.xmlschema.TestDatabaseInitializerBeanDefinitionParser;
import org.bigtester.ate.xmlschema.TestProjectBeanDefinitionParser;
import org.bigtester.ate.xmlschema.TestSuiteBeanDefinitionParser;
import org.bigtester.ate.xmlschema.UploadFileActionBeanDefinitionParser;
import org.bigtester.ate.xmlschema.WindowCloseActionBeanDefinitionParser;
import org.bigtester.ate.xmlschema.WindowFindByOpenSequenceBeanDefinitionParser;
import org.bigtester.ate.xmlschema.WindowFindByTitleBeanDefinitionParser;
import org.bigtester.ate.xmlschema.WindowSwitchActionBeanDefinitionParser;
import org.bigtester.ate.xmlschema.XmlTestCaseBeanDefinitionParser;
import org.bigtester.ate.xmlschema.XsdNameSpaceParserRegistry;
import org.bigtester.problomatic2.ProblemHandler;
import org.dbunit.DatabaseUnitException;
import org.eclipse.jdt.annotation.Nullable;
import org.reflections.Reflections;
import org.springframework.beans.factory.xml.BeanDefinitionParser;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import org.springframework.util.StringUtils;
import com.github.javaparser.ParseException;
// TODO: Auto-generated Javadoc
/**
* The Class TestProjectRunner defines ....
*
* @author Peidong Hu & Jun Yang
*/
public final class TestProjectRunner {
private TestProjectRunner() {
}
/**
* The main method.
*
* @param args
* the arguments
* @throws SQLException
* @throws DatabaseUnitException
* @throws IOException
* @throws ClassNotFoundException
* @throws ParseException
*/
public static void main(final String... args) throws DatabaseUnitException, SQLException, IOException, ClassNotFoundException, ParseException {
if (args.length > 2 ) //NOPMD
throw GlobalUtils.createNotInitializedException("Only support two arguments");
if (args.length > 1 ) { //NOPMD
GlobalUtils.setDriverPath (args[1]); //NOPMD
}
if (args.length > 0 ) {
runTest(args[0]);
}
else {
runTest("");
}
}
/**
* Run test.
* @throws ClassNotFoundException
* @throws IOException
* @throws ParseException
*/
private static void runTest(ApplicationContext context) throws ClassNotFoundException, ParseException, IOException {
TestProject testProj = GlobalUtils.findTestProjectBean(context);
testProj.runSuites();
}
/**
* Run test.
*
* @param testProjectXml the test project xml
* @throws DatabaseUnitException the database unit exception
* @throws SQLException the SQL exception
* @throws IOException
* @throws ClassNotFoundException
* @throws ParseException
*/
public static void runTest(@Nullable final String testProjectXml) throws DatabaseUnitException, SQLException, IOException, ClassNotFoundException, ParseException {
registerXsdNameSpaceParsers();
registerProblemHandlers();
ApplicationContext context;
if (StringUtils.isEmpty(testProjectXml)) {
context = new ClassPathXmlApplicationContext(
"testproject.xml");
} else {
context = new FileSystemXmlApplicationContext(testProjectXml);
}
TestProject testplan = GlobalUtils.findTestProjectBean(context);
testplan.setAppCtx(context);
TestDatabaseInitializer dbinit = (TestDatabaseInitializer) context.getBean(GlobalConstants.BEAN_ID_GLOBAL_DBINITIALIZER);
dbinit.setSingleInitXmlFile(testplan.getGlobalInitXmlFile());
//TODO add db initialization handler
dbinit.initializeGlobalDataFile(context);
runTest(context);
((ConfigurableApplicationContext)context).close();
}
private static void registerLegacyXsdNameSpaceParsers() {
/******************************* following for Test Project ******************************/
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_TESTPROJECT, new TestProjectBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_TESTSUITE, new TestSuiteBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_XMLTESTCASE, new XmlTestCaseBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_CASEDEPENDENCY, new CaseDependencyBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_GENERICSYSTEMLOGGER, new GenericSystemLoggerBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_TESTDATABASEINITIALIZER, new TestDatabaseInitializerBeanDefinitionParser());
/******************************* following for Test Case ******************************/
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_TESTCASE, new TestCaseBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_CASETYPESERVICE, new CaseTypeServiceBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_STEPTYPESERVICEDEFINITION, new StepTypeServiceBeanDefinitionParser());
/******************************* following for Test Step ******************************/
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_ELEMENTSTEP, new ElementStepBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_HOMESTEP, new HomeStepBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_REPEATSTEP, new RepeatStepBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_LASTSTEP, new LastStepBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_BASEERVALUE, new BaseERValueBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_STEPEXPECTEDRESULTVALUE, new StepERValueBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_STEPTYPESERVICEREFERENCE, new StepTypeReferenceBeanDefinitionParser());
/******************************* following for Test Page ******************************/
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_BASEPAGEOBJECT, new BasePageObjectBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_BASEPAGEMODEL, new BasePageModelBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_MYWEBELEMENT, new MyWebElementBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_HOMEPAGE, new HomepageBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_LASTPAGE, new LastPageBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_REGULARPAGE, new RegularPageBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_BASEELEMENTACTION, new BaseElementActionBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_PAGEELEMENTEXISTENCE, new PageElementExistBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_PAGEPROPERTYCORRECTNESS, new PagePropertyCorrectBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler("ateXmlElementReference", new AteReferenceBeanDefinitionParser());
/******************************* following for Test Data ******************************/
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_BASEINPUTDATAVALUE, new BaseInputDataValueBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_STEPINPUTDATAVALUE, new StepInputDataValueBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_INPUTDATAVALUEPARENT, new InputDataValueParentBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_RUNTIMEDATAHOLDER, new RunTimeDataHolderBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_AUTOINCREMENTALDATAHOLDSER, new AutoIncrementalDataHolderBeanDefinitionParser());
/******************************* following for Element Find ******************************/
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_ELEMENTFINDBYXPATH, new FindByXpathBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_ELEMENTFINDBYID, new FindByIdBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_BROWSERWINDOWFINDBYTITLE, new WindowFindByTitleBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_BROWSERWINDOWFINDBYOPENSEQUENCE, new WindowFindByOpenSequenceBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_ELEMENTFINDBYNAME, new FindByNameBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_ELEMENTFINDBYCLASSNAME, new FindByClassBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_ELEMENTFINDBYCSS, new FindByCssBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_ELEMENTFINDBYLINKTEXT, new FindByLinkTextBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_ALERTDIALOGFINDINCURRENTFOCUS, new AlertDialogFindInFocusBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_COOKIESFINDALL, new CookiesFindAllBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_COOKIESFINDBYDOMAINNAME, new CookiesFindByDomainNameBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_ELEMENTFINDBYPLINKTEXT, new FindByPartialLinkTextBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_ELEMENTFINDBYTAGNAME, new FindByTagNameBeanDefinitionParser());
/******************************* following for Element Action ******************************/
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_ELEMENTACTIONDEF, new ElementActionDefBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_CLICKACTION, new ClickActionBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_CLEARTEXTACTION, new ClearTextActionBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_MOUSEMOVETOACTION, new CursorMoveActionBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_SENDKEYSACTION, new SendKeysActionBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_DROPDOWNLISTSELECTACTION, new DropdownListSelectActionBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_ASSIGNVALUEACTION, new AssignValueActionBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_UPLOADFILEACTION, new UploadFileActionBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_BROWSERWINDOWSWITCH, new WindowSwitchActionBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_BROWSERWINDOWCLOSE, new WindowCloseActionBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_ALERTDIALOGACCEPT, new AlertDialogAcceptActionBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_FILEIMPORTACTION, new FileImportActionBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_FILESIMPORTACTION, new FilesImportActionBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_FILEEXPORTACTION, new FileExportActionBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_FILESEXPORTACTION, new FilesExportActionBeanDefinitionParser());
/******************************* following for Webdriver ******************************/
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_FIREFOXDRIVER, new FirefoxDriverBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_CHROMEDRIVER, new ChromeDriverBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_IEDRIVER, new IEDriverBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_SAFARIDRIVER, new SafariDriverBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_OPERADRIVER, new OperaDriverBeanDefinitionParser());
XsdNameSpaceParserRegistry.registerNameSpaceHandler(XsdElementConstants.ELEMENT_HTMLUNITDRIVER, new HtmlUnitDriverBeanDefinitionParser());
Map<String, BeanDefinitionParser> userParsers = XsdNameSpaceParserRegistry.getNameSpaceHandlerRegistry();
for (Map.Entry<String, BeanDefinitionParser> parser : userParsers.entrySet()) {
String elmName = parser.getKey();
BeanDefinitionParser bdp = parser.getValue();
if (null == elmName || bdp == null) throw GlobalUtils.createNotInitializedException("jvm map iterator");
XsdNameSpaceParserRegistry.registerNameSpaceHandler(elmName, bdp);
}
}
/**
* Register xsd name space parsers.
*/
public static void registerXsdNameSpaceParsers() {
registerLegacyXsdNameSpaceParsers();
Reflections reflections = new Reflections("org.bigtester.ate");
Set<Class<? extends IXsdBeanDefinitionParser>> subTypes = reflections.getSubTypesOf(IXsdBeanDefinitionParser.class);
for (Class<? extends IXsdBeanDefinitionParser> parser:subTypes) {
try {
Object ins = parser.newInstance();
Method getParser = parser.getDeclaredMethod("getParser");
Method getElementName = parser.getDeclaredMethod("getXsdElementTag");
BeanDefinitionParser bDef = (BeanDefinitionParser) getParser.invoke(ins,(Object[]) null);
String elementName = (String) getElementName.invoke(ins, (Object[]) null);
if (elementName == null || null == bDef) throw GlobalUtils.createNotInitializedException("elementname or beandefinition parser");
XsdNameSpaceParserRegistry.registerNameSpaceHandler(elementName, bDef);
} catch (NoSuchMethodException | SecurityException e) {
throw GlobalUtils.createNotInitializedException("xsd name space parser", e);//NOPMD
} catch (IllegalAccessException e) {
throw GlobalUtils.createNotInitializedException("xsd name space parser", e);
} catch (IllegalArgumentException e) {
throw GlobalUtils.createNotInitializedException("xsd name space parser", e);
} catch (InvocationTargetException e) {
throw GlobalUtils.createNotInitializedException("xsd name space parser", e);
} catch (InstantiationException e) {
throw GlobalUtils.createNotInitializedException("class needs to provide a no argument constructor.", e);
}
}
}
/**
* Register problem handlers.
*/
public static void registerProblemHandlers() {
Reflections reflections = new Reflections("org.bigtester.ate");
Set<Class<? extends IATEProblemHandler>> handlers = reflections.getSubTypesOf(IATEProblemHandler.class);
for (Class<? extends IATEProblemHandler> handler:handlers) {
try {
Object ins = handler.newInstance();
Method getAttachedClassMethod = handler.getDeclaredMethod("getAttachedClass");
Class<?> cls = (Class<?>) getAttachedClassMethod.invoke(ins,(Object[]) null);
if (null == cls) {
ProblemHandler hlr = (ProblemHandler) ins;
if (hlr == null) throw GlobalUtils.createInternalError("object conversion");
ProblemHandlerRegistry.registerGenericProblemHandler(hlr);
} else {
ProblemHandler hlr = (ProblemHandler) ins;
if (hlr == null) throw GlobalUtils.createInternalError("object conversion");
ProblemHandlerRegistry.registerAttachedProblemHandler(cls, hlr);
}
} catch (NoSuchMethodException | SecurityException e) {
throw GlobalUtils.createNotInitializedException("xsd name space parser", e);//NOPMD
} catch (IllegalAccessException e) {
throw GlobalUtils.createNotInitializedException("xsd name space parser", e);
} catch (IllegalArgumentException e) {
throw GlobalUtils.createNotInitializedException("xsd name space parser", e);
} catch (InvocationTargetException e) {
throw GlobalUtils.createNotInitializedException("xsd name space parser", e);
} catch (InstantiationException e) {
throw GlobalUtils.createNotInitializedException("class needs to provide a no argument constructor.", e);
}
}
}
}