package eu.play_project.dcep.distribution.examples;
import java.rmi.registry.LocateRegistry;
import java.util.HashMap;
import org.etsi.uri.gcm.util.GCM;
import org.objectweb.fractal.adl.Factory;
import org.objectweb.fractal.api.Component;
import org.objectweb.proactive.core.component.Fractive;
import org.objectweb.proactive.core.component.adl.FactoryFactory;
import org.objectweb.proactive.core.component.adl.Registry;
import org.objectweb.proactive.core.config.CentralPAPropertyRepository;
import org.objectweb.proactive.core.xml.VariableContractImpl;
import org.objectweb.proactive.extensions.gcmdeployment.PAGCMDeployment;
import org.objectweb.proactive.gcmdeployment.GCMApplication;
import org.objectweb.proactive.gcmdeployment.GCMVirtualNode;
import eu.play_project.dcep.api.DcepManagmentApi;
import eu.play_project.dcep.distributedetalis.api.ConfigApi;
import eu.play_project.dcep.distributedetalis.configurations.DetalisConfigLocal;
import fr.inria.eventcloud.api.PublishApi;
public class Distibutor {
// " java -Djava.security.policy=proactive.java.policy -Dproactive.home=/tmp/ProActiveProgramming-5.3.2_core_bin -cp '/tmp/ProActiveProgramming-5.3.2_core_bin/dist/lib/*' org.objectweb.proactive.examples.components.userguide.starter.Main";
private static PublishApi dcepPublishApi;
private static DcepManagmentApi dcepManagmentApi = null;
public static void main(String[] args) throws Exception {
VariableContractImpl variableContract = new VariableContractImpl();
// variableContract.setVariableFromProgram("HOSTS",
// "detalis1.s-node.de", VariableContractType.DescriptorVariable);
CentralPAPropertyRepository.GCM_PROVIDER.setValue("org.objectweb.proactive.core.component.Fractive");
// Start node
GCMApplication gcma = PAGCMDeployment.loadApplicationDescriptor(Distibutor.class
.getResource("/dEtalisApplicationDescriptor-1.xml"));
gcma.startDeployment();
GCMVirtualNode vn = gcma.getVirtualNode("dEtalis-node");
vn.waitReady();
// Start component.
Factory factory = FactoryFactory.getFactory();
HashMap<String, GCMApplication> context = new HashMap<String, GCMApplication>(1);
context.put("deployment-descriptor", gcma);
Component root = (Component) factory.newComponent("DistributedEtalis", context);
GCM.getGCMLifeCycleController(root).startFc();
dcepManagmentApi = ((eu.play_project.dcep.api.DcepManagmentApi) root
.getFcInterface(DcepManagmentApi.class.getSimpleName()));
ConfigApi configApi = ((ConfigApi) root.getFcInterface(ConfigApi.class.getSimpleName()));
configApi.setConfig(new DetalisConfigLocal("play-epsparql-clic2call-historical-data.trig"));
// Register apis
java.rmi.registry.Registry registry = LocateRegistry.getRegistry();
Fractive.registerByName(root, "dEtalis");
// bind components
// BindingController bc = GCM.getBindingController(client);
// bc.bindFc("s", server.getFcInterface("s"));
// start components
// GCM.getGCMLifeCycleController(server).startFc();
// GCM.getGCMLifeCycleController(client).startFc();
// launch the application
// ((Runnable) client.getFcInterface("m")).run();
System.out.println("Press 3x RETURN to shutdown the application");
System.in.read();
System.in.read();
System.in.read();
// stop components
GCM.getGCMLifeCycleController(root).stopFc();
Registry.instance().clear();
gcma.kill();
}
}