"Can not send message to self %s.", recipient); checkArgument(model.contains(recipient), "%s can not send message to unknown recipient: %s.", user, recipient);
@Override public boolean unregister(CommUser commUser) { checkArgument(contains(commUser), "CommModel does not contain %s.", commUser); final CommDevice unregDevice = usersDevices.remove(commUser); unregDevice.unregister(); unregisteredUsersDevices.put(commUser, unregDevice); usersHasChanged = true; if (eventDispatcher.hasListenerFor(EventTypes.REMOVE_COMM_USER)) { eventDispatcher.dispatchEvent(new CommModelEvent( EventTypes.REMOVE_COMM_USER, this, unregDevice, commUser)); } return true; }
@Override public boolean register(CommUser commUser) { checkArgument(!contains(commUser), "%s is already registered.", commUser); if (unregisteredUsersDevices.containsKey(commUser)) { // re-register, reuse already created device final CommDevice dev = unregisteredUsersDevices.remove(commUser); dev.register(); addDevice(dev, commUser); } else { final CommDeviceBuilder builder = CommDevice.builder(this, commUser) .setReliability(defaultReliability); commUser.setCommDevice(builder); checkState( builder.isUsed(), "%s is not implemented correctly, a CommDevice must be constructed in" + " setCommDevice()", commUser); } return true; }
/** * Test registration of object. */ @Test public void testRegister() { assertTrue(model.contains(agent1)); boolean fail = false; try { model.register(agent1); } catch (final IllegalArgumentException e) { fail = true; } assertTrue(fail); }
/** * Tests that the same device is used again upon re-registering. */ @Test public void testRegisterUnregistered() { final ListenerEventHistory leh = new ListenerEventHistory(); model.getEventAPI().addListener(leh, EventTypes.ADD_COMM_USER, EventTypes.REMOVE_COMM_USER); final CommDevice originalDevice = agent1.device(); assertThat(model.contains(agent1)).isTrue(); model.unregister(agent1); assertThat(model.contains(agent1)).isFalse(); assertThat(leh.getEventTypeHistory()).containsExactly(REMOVE_COMM_USER) .inOrder(); model.register(agent1); assertThat(model.contains(agent1)).isTrue(); final CommDevice newDevice = agent1.device(); assertThat(originalDevice).isSameAs(newDevice); assertThat(leh.getEventTypeHistory()).containsExactly(REMOVE_COMM_USER, ADD_COMM_USER) .inOrder(); newDevice.broadcast(Contents.HELLO_WORLD); }