@Override
public void execute(final NodeMain nodeMain, final NodeConfiguration nodeConfiguration,
final Collection<NodeListener> nodeListeners) {
final NodeConfiguration nodeConfigurationCopy = NodeConfiguration.copyOf(nodeConfiguration);
nodeConfigurationCopy.setDefaultNodeName(nodeMain.getDefaultNodeName());
Preconditions.checkNotNull(nodeConfigurationCopy.getNodeName(), "Node name not specified.");
if (DEBUG) {
log.info("Starting node: " + nodeConfigurationCopy.getNodeName());
}
scheduledExecutorService.execute(new Runnable() {
@Override
public void run() {
Collection<NodeListener> nodeListenersCopy = Lists.newArrayList();
nodeListenersCopy.add(new RegistrationListener());
nodeListenersCopy.add(nodeMain);
if (nodeListeners != null) {
nodeListenersCopy.addAll(nodeListeners);
}
Node node = nodeFactory.newNode(nodeConfigurationCopy, nodeListenersCopy);
nodeMains.put(node, nodeMain);
}
});
}