package senseiTests.concurrency;
import sensei.domains.*;
import sensei.middleware.domains.*;
import sensei.middleware.gms.GroupMember;
import sensei.util.Error;
import java.util.Map;
class DynamicCreator extends DynamicSubgroupsUserBaseImpl
{
public DynamicCreator(DomainGroupHandler groupHandler, Map monitors, Printer printer) throws Exception
{
this.groupHandler=groupHandler;
this.monitors=monitors;
this.printer=printer;
}
public void subgroupRemoved(int remover, int id, DynamicSubgroupInfo member)
{
String memberName = ((DynamicSubgroupInfoAsString)member).info;
printer.print("Deleted monitor with id "+id + ", from member " +memberName);
monitors.remove(new Integer(id));
}
public GroupMember subgroupCreated(int creator, int id, DynamicSubgroupInfo member)
{
String memberName = ((DynamicSubgroupInfoAsString)member).info;
printer.print("New monitor created with id "+id + ", originated in member " +memberName);
GroupMonitor impl = null;
try
{
impl=new GroupMonitorImpl(id, groupHandler).theGroupMonitor();
monitors.put(new Integer(id), impl);
impl.assumeState();
}
catch(Exception ex)
{
Error.unhandledException("TestMonitor", ex);
}
return impl;
}
public GroupMember acceptSubgroup(int id, DynamicSubgroupInfo member)
{
String memberName = ((DynamicSubgroupInfoAsString)member).info;
printer.print("Additional monitor created with id "+id + ", originated in member " +memberName);
GroupMonitor impl = null;
try
{
impl=new GroupMonitorImpl(id, groupHandler).theGroupMonitor();
monitors.put(new Integer(id), impl);
}
catch(Exception ex)
{
Error.unhandledException("TestMonitor", ex);
}
return impl;
}
DomainGroupHandler groupHandler;
Map monitors;
Printer printer;
}