* @throws ConfigurationException
* if the configuration fails.
*/
public CrawljaxController(final CrawljaxConfiguration config) throws ConfigurationException {
configurationReader = new CrawljaxConfigurationReader(config);
CrawlSpecificationReader crawlerReader =
configurationReader.getCrawlSpecificationReader();
stateComparator = new StateComparator(crawlerReader.getOracleComparators());
invariantList = crawlerReader.getInvariants();
crawlConditionChecker = new CrawlConditionChecker(crawlerReader.getCrawlConditions());
waitConditionChecker.setWaitConditions(crawlerReader.getWaitConditions());
eventableConditionChecker =
new EventableConditionChecker(configurationReader.getEventableConditions());
elementChecker =
new CandidateElementManager(eventableConditionChecker, crawlConditionChecker);