package com.lordofthejars.nosqlunit.core;
public abstract class AbstractLifecycleManager implements LifecycleManager {
private boolean ready = false;
@Override
public void startEngine() throws Throwable {
if (isServerNotStartedYet()) {
ready = true;
doStart();
}
ConnectionManagement.getInstance().addConnection(getHost(), getPort());
}
@Override
public void stopEngine() {
int remainingConnections = ConnectionManagement.getInstance().removeConnection(getHost(), getPort());
if (noMoreConnectionsToManage(remainingConnections)) {
ready = false;
doStop();
}
}
public boolean isReady() {
return this.ready;
}
private boolean noMoreConnectionsToManage(int remainingConnections) {
return remainingConnections < 1;
}
private boolean isServerNotStartedYet() {
return !ConnectionManagement.getInstance().isConnectionRegistered(getHost(), getPort());
}
public abstract String getHost();
public abstract int getPort();
public abstract void doStart() throws Throwable;
public abstract void doStop();
}