package com.neverwinterdp.scribengin.tool; import java.util.HashMap; import java.util.Map; import com.google.inject.Guice; import com.google.inject.Injector; import com.neverwinterdp.kafka.tool.server.KafkaCluster; import com.neverwinterdp.module.AppModule; import com.neverwinterdp.registry.Registry; import com.neverwinterdp.registry.RegistryConfig; import com.neverwinterdp.registry.RegistryException; import com.neverwinterdp.registry.zk.RegistryImpl; import com.neverwinterdp.util.FileUtil; import com.neverwinterdp.vm.client.LocalVMClient; import com.neverwinterdp.vm.client.VMClient; import com.neverwinterdp.vm.tool.VMClusterBuilder; public class EmbededVMClusterBuilder extends VMClusterBuilder { private String baseDir = "./build/data"; protected KafkaCluster kafkaCluster; public EmbededVMClusterBuilder() throws RegistryException { this(new LocalVMClient()); } public EmbededVMClusterBuilder(VMClient vmClient) throws RegistryException { super(vmClient); } public EmbededVMClusterBuilder(String baseDir, VMClient vmClient) { super(vmClient); this.baseDir = baseDir ; } @Override public void clean() throws Exception { super.clean(); FileUtil.removeIfExist(baseDir, false); } @Override public void start() throws Exception { startKafkaCluster() ; super.start(); } public void startKafkaCluster() throws Exception { h1("Start kafka cluster"); kafkaCluster = new KafkaCluster(baseDir, 1, 1); kafkaCluster.setNumOfPartition(5); kafkaCluster.start(); Thread.sleep(1000); } @Override public void shutdown() throws Exception { super.shutdown(); kafkaCluster.shutdown(); } public <T> Injector newAppContainer() { Map<String, String> props = new HashMap<String, String>(); props.put("registry.connect", "127.0.0.1:2181") ; props.put("registry.db-domain", "/NeverwinterDP") ; props.put("implementation:" + Registry.class.getName(), RegistryImpl.class.getName()) ; AppModule module = new AppModule(props) ; return Guice.createInjector(module); } public RegistryConfig getRegistryConfig() { return vmClient.getRegistry().getRegistryConfig() ; } public Registry newRegistry() { return new RegistryImpl(getRegistryConfig()); } }