blob: a8c9fc9d9fdeaea619c81ab23454932cc1068769 [file] [log] [blame]
/**
*
*/
package com.gemstone.gemfire.mgmt.DataBrowser.ui;
import java.util.ArrayList;
import java.util.HashMap;
import com.gemstone.gemfire.mgmt.DataBrowser.utils.LogUtil;
/**
* @author mghosh
*
*/
public class CustomMsgDispatcher {
public interface ICustomMessageListener {
void handleEvent( String msg, ArrayList< Object > params, ArrayList< Object > results );
}
static private HashMap< String, ArrayList< ICustomMessageListener > > customMsgHandlers_;
// -- Init storage for custom message handling
static {
CustomMsgDispatcher.customMsgHandlers_ = new HashMap< String, ArrayList< ICustomMessageListener > >();
for( String s : CustomUIMessages.customMessages_ ) {
CustomMsgDispatcher.customMsgHandlers_.put( s, new ArrayList< ICustomMessageListener >() );
}
}
public synchronized boolean addCustomMessageListener( String msg, ICustomMessageListener lstnrNew ) {
ArrayList< ICustomMessageListener > lstnrs = CustomMsgDispatcher.customMsgHandlers_.get( msg );
if( null == lstnrs ) {
lstnrs = new ArrayList< ICustomMessageListener >();
customMsgHandlers_.put( msg , lstnrs );
}
boolean fRet = true;
if( false == lstnrs.contains( lstnrNew )) {
LogUtil.fine( "addCustomMessageListener : lstnrs does not contain " + lstnrNew );
fRet = lstnrs.add( lstnrNew );
}
else {
LogUtil.fine( "addCustomMessageListener : lstnrs **does** contain " + lstnrNew );
}
return fRet;
}
public synchronized void sendCustomMessage( String msg, ArrayList< Object > prms, ArrayList< Object > res ) {
if( null != msg ) {
ArrayList< ICustomMessageListener > listeners = customMsgHandlers_.get( msg );
ArrayList< Object > resTmp = new ArrayList< Object >();
for( ICustomMessageListener l : listeners ) {
l.handleEvent(msg, prms, resTmp );
res.addAll( resTmp );
resTmp.clear();
}
}
}
/**
*
*/
public CustomMsgDispatcher() {
// TODO Auto-generated constructor stub
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}