@Override
public void onSuccess(final Boolean wasSuccessful)
{
if (wasSuccessful)
{
LongRunningTask poll = new LongRunningTask(new AsyncCommand<Boolean>()
{
@Override
public void execute(final AsyncCallback<Boolean> callback)
{
final List<Server> finishedServers = new ArrayList<Server>();
for (Map.Entry<HostInfo, List<ServerInstance>> entry : serversPerHost
.entrySet())
{
HostInfo hostInfo = entry.getKey();
List<ServerInstance> serverInstances = entry.getValue();
for (ServerInstance serverInstance : serverInstances)
{
hostInfoStore.getServerConfiguration(hostInfo.getName(), serverInstance.getServer(),
new SimpleCallback<Server>()
{
@Override
public void onSuccess(final Server server)
{
finishedServers.add(server);
boolean keepPolling = lifecycleOp == START || lifecycleOp == RESTART ? !server
.isStarted() : server.isStarted();
if (!keepPolling && finishedServers.size() == servers)
{
ServerGroupLifecycleCallback.this.callback.onSuccess(finishedServers);
Console.MODULES.getEventBus().fireEvent(
new StaleModelEvent(StaleModelEvent.SERVER_GROUPS)
);
Console.MODULES.getEventBus().fireEvent(
new StaleModelEvent(StaleModelEvent.SERVER_INSTANCES)
);
}
callback.onSuccess(keepPolling);
}
});
}
}
}
}, lifecycleOp.limit());
poll.schedule(500);
}
}