package org.ow2.choreos.ee.bus;
import java.util.List;
import org.apache.log4j.Logger;
import org.ow2.choreos.chors.datamodel.Choreography;
import org.ow2.choreos.invoker.Invoker;
import org.ow2.choreos.invoker.InvokerException;
import org.ow2.choreos.invoker.InvokerFactory;
public class ServicesProxifier {
private static final String TASK_NAME = "PROXIFY";
private Choreography chor;
private List<ProxificationTask> proxificationTasks;
private Logger logger = Logger.getLogger(ServicesProxifier.class);
public ServicesProxifier(Choreography chor) {
this.chor = chor;
}
public void proxify() {
logger.info("Resquested to proxify depoloyed services");
selectEsbNodes();
executeProxificationTasks();
// TODO: should PUT /services/ (a registry would resolve...)
}
private void selectEsbNodes() {
ESBNodesSelector selector = new ESBNodesSelector();
proxificationTasks = selector.selectESBNodes(chor);
}
private void executeProxificationTasks() {
for (ProxificationTask task : proxificationTasks) {
String svcName = task.getSvcName();
try {
InvokerFactory<String> factory = new InvokerFactory<String>();
Invoker<String> invoker = factory.geNewInvokerInstance(TASK_NAME, task);
String proxifiedAddress = invoker.invoke();
logger.info(svcName + " instance proxified (" + proxifiedAddress + ")");
} catch (InvokerException e) {
logger.error(svcName + " could not be proxified");
}
}
}
}