public CanvasItemImpl(Config config, CounterSupport counterSupport) { super(config); lastSavedHash = DigestUtils.md5Hex(config.xmlText()); this.counterSupport = counterSupport; scheduler = BeanInjector.getBean(ScheduledExecutorService.class); componentRegistry = BeanInjector.getBean(ComponentRegistry.class); componentList = CollectionEventSupport.of(this, COMPONENTS); connectionList = CollectionEventSupport.of(this, CONNECTIONS); statisticHolderSupport = new StatisticHolderSupport(this); counterStatisticSupport = new CounterStatisticSupport(this); StatisticVariable.Mutable requestVariable = statisticHolderSupport.addStatisticVariable(REQUEST_VARIABLE); statisticHolderSupport.addStatisticsWriter(CounterStatisticsWriter.TYPE, requestVariable); counterStatisticSupport.addCounterVariable(REQUEST_COUNTER, requestVariable); StatisticVariable.Mutable failuresVariable = statisticHolderSupport.addStatisticVariable(FAILURE_VARIABLE); statisticHolderSupport.addStatisticsWriter(CounterStatisticsWriter.TYPE, failuresVariable); counterStatisticSupport.addCounterVariable(FAILURE_COUNTER, failuresVariable); StatisticVariable.Mutable assertionFailuresVariable = statisticHolderSupport.addStatisticVariable(ASSERTION_FAILURE_VARIABLE); statisticHolderSupport.addStatisticsWriter( CounterStatisticsWriter.TYPE, assertionFailuresVariable); counterStatisticSupport.addCounterVariable( ASSERTION_FAILURE_COUNTER, assertionFailuresVariable); StatisticVariable.Mutable requestFailuresVariable = statisticHolderSupport.addStatisticVariable(REQUEST_FAILURE_VARIABLE); statisticHolderSupport.addStatisticsWriter( CounterStatisticsWriter.TYPE, requestFailuresVariable); counterStatisticSupport.addCounterVariable(REQUEST_FAILURE_COUNTER, requestFailuresVariable); abortOnFinish = createProperty(ABORT_ON_FINISH_PROPERTY, Boolean.class, false); }