/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.kevoree.library.defaultNodeTypes.osgi;
import org.apache.felix.framework.Felix;
import org.kevoree.ContainerRoot;
import org.kevoree.annotation.*;
import org.kevoree.kompare.KevoreeKompareBean;
import org.kevoree.library.defaultNodeTypes.JavaSENode;
import org.kevoree.library.defaultNodeTypes.jcl.deploy.context.KevoreeDeployManager;
import org.kevoree.library.defaultNodeTypes.osgi.deploy.BaseDeployOSGi;
import org.kevoree.library.defaultNodeTypes.osgi.deploy.OSGIKevoreeDeployManager;
import org.kevoree.library.defaultNodeTypes.osgi.deploy.runtime.EmbeddedFelix;
import org.kevoreeAdaptation.AdaptationModel;
import org.kevoreeAdaptation.AdaptationPrimitive;
import org.osgi.framework.BundleException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author ffouquet
*/
@Library(name = "JavaSE")
@NodeType
@PrimitiveCommands(
values = {"UpdateType", "UpdateDeployUnit", "AddType", "AddDeployUnit", "AddThirdParty", "RemoveType", "RemoveDeployUnit", "UpdateInstance", "UpdateBinding", "UpdateDictionaryInstance", "AddInstance", "RemoveInstance", "AddBinding", "RemoveBinding", "AddFragmentBinding", "RemoveFragmentBinding", "UpdateFragmentBinding", "StartInstance", "StopInstance", "StartThirdParty","RemoveThirdParty"}, value = {})
public class JavaSEOSGINode extends JavaSENode {
private static final Logger logger = LoggerFactory.getLogger(JavaSEOSGINode.class);
private KevoreeKompareBean kompareBean = null;
private Felix fwk = null;
private BaseDeployOSGi deployBean = null;
@Override
public void startNode() {
EmbeddedFelix emFelix = new EmbeddedFelix();
emFelix.run();
fwk = emFelix.getM_fwk();
OSGIKevoreeDeployManager.setBundle(fwk);
kompareBean = new KevoreeKompareBean();
deployBean = new BaseDeployOSGi(fwk,this);
}
@Override
public void stopNode() {
kompareBean = null;
deployBean = null;
//Cleanup the local runtime
OSGIKevoreeDeployManager.clearAll();
KevoreeDeployManager.clearAll(this);
try {
fwk.stop();
} catch (BundleException e) {
logger.debug("Error while stopping node ",e);
}
}
@Override
public AdaptationModel kompare(ContainerRoot current, ContainerRoot target) {
return kompareBean.kompare(current, target, this.getNodeName());
}
@Override
public org.kevoree.api.PrimitiveCommand getPrimitive(AdaptationPrimitive adaptationPrimitive) {
return deployBean.buildPrimitiveCommand(adaptationPrimitive, this.getNodeName());
}
}