Skip to content

Commit

Permalink
TEIIDDES-1459: Server listener for TeiidServer
Browse files Browse the repository at this point in the history
* Adds a listener to the parent server that will disconnect / reconnect
  when the parent jboss server is stopped or started.
  • Loading branch information
Paul Richardson committed Sep 3, 2012
1 parent 5673833 commit 54e34d4
Showing 1 changed file with 37 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,17 @@
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.wst.server.core.IServer;
import org.eclipse.wst.server.core.IServerListener;
import org.eclipse.wst.server.core.ServerCore;
import org.eclipse.wst.server.core.ServerEvent;
import org.jboss.ide.eclipse.as.core.server.internal.v7.JBoss7Server;
import org.teiid.adminapi.Admin;
import org.teiid.adminapi.AdminException;
import org.teiid.adminapi.AdminFactory;
import org.teiid.core.util.CoreArgCheck;
import org.teiid.core.util.HashCodeUtil;
import org.teiid.designer.core.util.StringUtilities;
import org.teiid.designer.runtime.adapter.TeiidServerAdapterUtil;
import org.teiid.jdbc.TeiidDriver;


Expand Down Expand Up @@ -94,6 +97,38 @@ private static boolean equivalent( Object thisObj,
*/
private IServer parentServer;

private IServerListener serverListener = new IServerListener() {

@Override
public void serverChanged(ServerEvent event) {
if (event == null)
return;

int eventKind = event.getKind();
if ((eventKind & ServerEvent.SERVER_CHANGE) == 0)
return;

// server change event
if ((eventKind & ServerEvent.STATE_CHANGE) == 0)
return;

int state = event.getState();

if (state == IServer.STATE_STOPPING || state == IServer.STATE_STOPPED) {
disconnect();
notifyRefresh();
} else if (state == IServer.STATE_STARTED && TeiidServerAdapterUtil.isJBossServerConnected(event.getServer())) {
try {
getAdmin();
} catch (Exception ex) {
Util.log(ex);
} finally {
notifyRefresh();
}
}
}
};

// ===========================================================================================================================
// Constructors
// ===========================================================================================================================
Expand Down Expand Up @@ -147,6 +182,8 @@ private void initParent() {

// The host and admin port match so must be the same server
parentServer = server;
parentServer.addServerListener(serverListener);

return;
}

Expand Down

0 comments on commit 54e34d4

Please sign in to comment.