1 package at.ac.tuwien.sbc.valesriegler.xvsm;
3 import java.io.Serializable;
6 import javax.swing.SwingUtilities;
8 import org.mozartspaces.core.MzsCoreException;
9 import org.mozartspaces.notifications.Notification;
10 import org.mozartspaces.notifications.NotificationListener;
11 import org.mozartspaces.notifications.Operation;
12 import org.slf4j.Logger;
13 import org.slf4j.LoggerFactory;
15 import at.ac.tuwien.sbc.valesriegler.group.GroupAgent;
16 import at.ac.tuwien.sbc.valesriegler.types.GroupData;
18 public class GroupAgentXVSM extends AbstractXVSMConnector {
19 private static final Logger log = LoggerFactory.getLogger(GroupAgentXVSM.class);
21 public GroupAgentXVSM() {
24 useAssignTableContainer();
27 public void listenForGroupDataChanges() {
28 NotificationListener groupDataListener = new NotificationListener() {
30 public void entryOperationFinished(final Notification notification, final Operation operation, final List<? extends Serializable> entries) {
32 log.info("{} groups have changed", entries.size());
34 final List<GroupData> groups = castEntries(entries);
36 SwingUtilities.invokeLater(new Runnable() {
40 GroupAgent.getInstance().getGroupModel().addGroupData(groups);
46 notificationMgr.createNotification(groupsContainer, groupDataListener, Operation.WRITE);
47 log.info("Created groupsContainer notification for a waiter");
48 } catch (MzsCoreException e) {
50 } catch (InterruptedException e) {