package org.kevoree.library;
import org.kevoree.ContainerNode;
import org.kevoree.ContainerRoot;
import org.kevoree.annotation.ComponentType;
import org.kevoree.annotation.Library;
import org.kevoree.annotation.Start;
import org.kevoree.annotation.Stop;
import org.kevoree.api.service.core.handler.ModelListener;
import org.kevoree.api.service.core.script.KevScriptEngine;
import org.kevoree.api.service.core.script.KevScriptEngineException;
import org.kevoree.framework.AbstractComponentType;
/**
* Created with IntelliJ IDEA.
* User: duke
* Date: 04/06/12
* Time: 01:14
*/
@Library(name = "JavaSE")
@ComponentType
public class FakeReasoner extends AbstractComponentType implements ModelListener, Runnable {
private Thread dummyReason = null;
@Start
public void start() {
getModelService().registerModelListener(this);
dummyReason = new Thread(this);
dummyReason.start();
}
@Stop
public void stop() {
getModelService().unregisterModelListener(this);
dummyReason.interrupt();
dummyReason = null;
}
@Override
public boolean preUpdate(ContainerRoot containerRoot, ContainerRoot containerRoot1) {
return true;
}
@Override
public boolean initUpdate(ContainerRoot containerRoot, ContainerRoot containerRoot1) {
return true;
}
@Override
public void modelUpdated() {
}
@Override
public void run() {
while (true) {
ContainerRoot root = getModelService().getLastModel();
KevScriptEngine engine = getKevScriptEngineFactory().createKevScriptEngine();
Boolean globalExecute = false;
for (ContainerNode node : root.getNodesForJ()) {
engine.addVariable("nodeName", node.getName());
engine.append("addComponent {nodeName}Console@{nodeName} : FakeConsole");
}
try {
engine.interpretDeploy();
} catch (KevScriptEngineException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
@Override
public boolean afterLocalUpdate(ContainerRoot arg0, ContainerRoot arg1) {
// TODO Auto-generated method stub
return false;
}
@Override
public void postRollback(ContainerRoot arg0, ContainerRoot arg1) {
// TODO Auto-generated method stub
}
@Override
public void preRollback(ContainerRoot arg0, ContainerRoot arg1) {
// TODO Auto-generated method stub
}
}