package org.kevoree.library.ehcache;
import org.kevoree.ContainerNode;
import org.kevoree.ContainerRoot;
import org.kevoree.Group;
import org.kevoree.annotation.*;
import org.kevoree.framework.AbstractChannelFragment;
import org.kevoree.framework.ChannelFragmentSender;
import org.kevoree.framework.KevoreeFragmentPropertyHelper;
import org.kevoree.framework.KevoreePlatformHelper;
import org.kevoree.framework.message.Message;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
* Created by jed
* User: jedartois@gmail.com
* Date: 11/05/12
* Time: 14:46
*/
@Library(name = "JavaSE", names = {"Android"})
@ChannelTypeFragment
@DictionaryType({
@DictionaryAttribute(name = "cacheName", defaultValue = "kevoreeCluster", optional = false)
})
public class ehcacheChannel extends AbstractChannelFragment implements Runnable {
private Thread handler=null;
private boolean alive=true;
private Logger logger = LoggerFactory.getLogger(ehcacheChannel.class);
@Start
public void startChannel() {
alive = true;
handler = new Thread(this);
handler.start();
}
@Stop
public void stopChannel() {
try
{
alive = false;
handler.interrupt();
} catch (Exception e) {
//ignore
}
}
@Update
public void updateChannel() {
}
@Override
public Object dispatch(Message message) {
return null;
}
@Override
public ChannelFragmentSender createSender(String s, String s1) {
return null;
}
@Override
public void run() {
}
public String getAddress(String remoteNodeName) {
String ip = KevoreePlatformHelper.getProperty(this.getModelService().getLastModel(), remoteNodeName,
org.kevoree.framework.Constants.KEVOREE_PLATFORM_REMOTE_NODE_IP());
if (ip == null || ip.equals("")) {
ip = "127.0.0.1";
}
return ip;
}
public String getAddressModel(String remoteNodeName) {
String ip = KevoreePlatformHelper.getProperty(this.getModelService().getLastModel(), remoteNodeName,
org.kevoree.framework.Constants.KEVOREE_PLATFORM_REMOTE_NODE_IP());
if (ip == null || ip.equals("")) {
ip = "127.0.0.1";
}
return ip;
}
public List<String> getAllNodes () {
ContainerRoot model = this.getModelService().getLastModel();
for (Object o : model.getGroupsForJ()) {
Group g = (Group) o;
List<String> peers = new ArrayList<String>(g.getSubNodes().size());
for (ContainerNode node : g.getSubNodesForJ()) {
peers.add(node.getName());
}
return peers;
}
return new ArrayList<String>();
}
public int getport(String nodeName,String port) throws IOException {
try {
//logger.debug("look for port on " + nodeName);
return KevoreeFragmentPropertyHelper.getIntPropertyFromFragmentChannel(getModelService().getLastModel(), getName(), port, nodeName);
} catch (NumberFormatException e)
{
throw new IOException(e.getMessage());
}
}
}