package com.neverwinterdp.scribengin.dataflow; import java.util.Map; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.inject.Guice; import com.google.inject.Inject; import com.google.inject.Injector; import com.google.inject.Singleton; import com.mycila.jmx.annotation.JmxBean; import com.neverwinterdp.module.AppModule; import com.neverwinterdp.scribengin.dataflow.worker.DataflowTaskExecutorManager; import com.neverwinterdp.scribengin.storage.sink.SinkFactory; import com.neverwinterdp.scribengin.storage.source.SourceFactory; import com.neverwinterdp.vm.VMDescriptor; @Singleton @JmxBean("role=dataflow, type=DataflowContainer, name=DataflowContainer") public class DataflowContainer { private Logger logger = LoggerFactory.getLogger(DataflowContainer.class); @Inject private Injector appContainer; public DataflowContainer() {} @Deprecated public DataflowContainer(Map<String, String> props) { AppModule module = new AppModule(props) { @Override protected void configure(Map<String, String> properties) { try { FileSystem fs = FileSystem.getLocal(new Configuration()) ; bindInstance(FileSystem.class, fs); } catch (Exception e) { logger.error("Error:", e);; } }; }; appContainer = Guice.createInjector(module); } public <T> T getInstance(Class<T> type) { return appContainer.getInstance(type); } public DataflowTaskExecutorManager getDataflowTaskExecutorManager() { return getInstance(DataflowTaskExecutorManager.class); } public VMDescriptor getVMDescriptor() { return appContainer.getInstance(VMDescriptor.class) ; } public DataflowRegistry getDataflowRegistry() { return appContainer.getInstance(DataflowRegistry.class); } public DataflowTaskReporter getDataflowTaskReporter() { return appContainer.getInstance(DataflowTaskReporter.class); } public SourceFactory getSourceFactory() { return appContainer.getInstance(SourceFactory.class); } public SinkFactory getSinkFactory() { return appContainer.getInstance(SinkFactory.class); } }