package com.thoughtworks.winstonwolfe.application; import com.thoughtworks.winstonwolfe.config.WinstonConfig; import com.thoughtworks.winstonwolfe.config.YamlConfigLoader; import com.thoughtworks.winstonwolfe.datasource.DataSource; import com.thoughtworks.winstonwolfe.datasource.DataSourceFactory; import com.thoughtworks.winstonwolfe.datasource.FileDataSource; import com.thoughtworks.winstonwolfe.endpoint.NamedEndPointFactory; import com.thoughtworks.winstonwolfe.endpoint.ReportingEndPointFactory; import com.thoughtworks.winstonwolfe.endpoint.ScriptEndPointFactory; import com.thoughtworks.winstonwolfe.reporting.HtmlReport; import com.thoughtworks.winstonwolfe.runner.CommandLineArguments; import com.thoughtworks.winstonwolfe.script.Script; import com.thoughtworks.winstonwolfe.validators.ExactMatchValidatorFactory; import com.thoughtworks.winstonwolfe.validators.ReportingValidatorFactory; import com.thoughtworks.winstonwolfe.validators.ResponseValidatorFactory; import com.thoughtworks.winstonwolfe.validators.SelectorMatchValidatorFactory; public class WinstonWolfe { public static void main(final String[] args) throws Exception { CommandLineArguments arguments = new CommandLineArguments(args); WinstonConfig endpointConfig = new YamlConfigLoader().load(arguments.getPathToConfiguration()); WinstonConfig scriptConfig = new YamlConfigLoader().load(arguments.getPathToTestScript()); HtmlReport report = new HtmlReport(); NamedEndPointFactory namedEndPointFactory = new NamedEndPointFactory(endpointConfig); ScriptEndPointFactory scriptEndPointFactory = new ScriptEndPointFactory(scriptConfig, namedEndPointFactory); ReportingEndPointFactory reportingEndPointFactory = new ReportingEndPointFactory(report, scriptEndPointFactory); DataSourceFactory dataSourceFactory = new DataSourceFactory(scriptConfig); DataSource requestDataSource = dataSourceFactory.buildDataSource(); ExactMatchValidatorFactory exactMatchValidatorFactory = new ExactMatchValidatorFactory(scriptConfig); SelectorMatchValidatorFactory selectorMatchValidatorFactory = new SelectorMatchValidatorFactory(scriptConfig); ResponseValidatorFactory validatorFactory = new ResponseValidatorFactory(scriptConfig, exactMatchValidatorFactory, selectorMatchValidatorFactory); ReportingValidatorFactory reportingValidatorFactory = new ReportingValidatorFactory(report,validatorFactory); Script script = new Script(reportingEndPointFactory, requestDataSource, reportingValidatorFactory); try { script.run(); } finally { System.out.println(report.render()); } } }