package org.sef4j.testwebapp.config;
import org.sef4j.callstack.stats.dto.BasicStatPropTreeValueProviderDef;
import org.sef4j.callstack.stats.dto.PendingCountPropTreeValueProviderDef;
import org.sef4j.callstack.stattree.changes.BasicStatPropTreeValueProvider;
import org.sef4j.callstack.stattree.changes.PendingCountPropTreeValueProvider;
import org.sef4j.core.helpers.export.senders.ExportFragmentsPollingEventProvider.ExportFragmentsPollingEventProviderFactory;
import org.sef4j.core.helpers.export.senders.ExportFragmentsPollingEventProviderDef;
import org.sef4j.core.helpers.ioeventchain.PeriodicTaskInputEventChain;
import org.sef4j.core.helpers.proptree.dto.PropTreeRootNodeDef;
import org.sef4j.core.helpers.proptree.model.PropTreeNode;
import org.sef4j.core.helpers.proptree.model.PropTreeRootNodeFactory;
import org.sef4j.core.helpers.tasks.PeriodicTaskInputEventChainDef;
import org.sef4j.core.util.factorydef.ObjectByDefRepositories;
import org.sef4j.testwebapp.service.MetricsStatsTreeRegistry;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MetricsFactoryConfig {
// @Autowired protected MetricsStatsTreeRegistry metricsStatsTreeRegistry;
@Bean
public ObjectByDefRepositories sharedObjByDefRepositories() {
ObjectByDefRepositories res = new ObjectByDefRepositories();
// register factories
res.registerFactoryFor(PeriodicTaskInputEventChainDef.class,
PeriodicTaskInputEventChain.Factory.instance());
res.registerFactoryFor(ExportFragmentsPollingEventProviderDef.class,
new ExportFragmentsPollingEventProviderFactory<Object>());
PropTreeNode rootWSNode = MetricsStatsTreeRegistry.getRootWSStatsNode();
PropTreeRootNodeFactory propTreeRootFactory = PropTreeRootNodeFactory.INSTANCE;
propTreeRootFactory.putRootNode("ws", rootWSNode);
res.registerFactoryFor(PropTreeRootNodeDef.class, propTreeRootFactory);
res.registerFactoryFor(BasicStatPropTreeValueProviderDef.class,
new BasicStatPropTreeValueProvider.Factory());
res.registerFactoryFor(PendingCountPropTreeValueProviderDef.class,
new PendingCountPropTreeValueProvider.Factory());
return res;
}
}