private void disableNotifications(ServerNotificationManager notificationManager, Map<String, Class<? extends Notification>> eventMap, Map<String, Class<? extends NotificationListener>> interfaceMap) throws InitialisationException { for (NotificationConfig<?, ?> disabledNotification : disabledNotifications) { final Supplier<InitialisationException> noNotificationExceptionSupplier = () -> new InitialisationException(createStaticMessage("No notification '%s' declared in this applications plugins to disable. Expected one of %s", disabledNotification.getEventName(), eventMap.keySet().toString()), this); if (disabledNotification.isInterfaceExplicitlyConfigured()) { notificationManager .disableInterface(getInterfaceClass(disabledNotification, interfaceMap).orElseThrow(noNotificationExceptionSupplier)); } if (disabledNotification.isEventExplicitlyConfigured()) { notificationManager .disableType(getEventClass(disabledNotification, eventMap).orElseThrow(noNotificationExceptionSupplier)); } } }
/** * When the manager is not dynamic (the default), decisions should not change */ @Test public void testNonDynamicManagerDecisions() throws ClassNotFoundException { registerDefaultEvents(); registerDefaultListeners(); OptimisedNotificationHandler decision = new OptimisedNotificationHandler(manager, Event2.class); assertTrue(decision.isNotificationEnabled(Event2.class)); manager.disableType(Event2.class); assertTrue(decision.isNotificationEnabled(Event2.class)); }
@Test public void testDynamicManagerDecisions() throws ClassNotFoundException { registerDefaultEvents(); registerDefaultListeners(); manager.setNotificationDynamic(true); OptimisedNotificationHandler decision = new OptimisedNotificationHandler(manager, Event2.class); assertTrue(decision.isNotificationEnabled(Event2.class)); manager.disableType(Event2.class); assertFalse(decision.isNotificationEnabled(Event2.class)); }
/** * A new policy should only be generated when the configuration changes */ @Test public void testPolicyCaching() throws ClassNotFoundException { registerDefaultEvents(); registerDefaultListeners(); Policy policy = manager.getPolicy(); assertStandardEventsEnabled(); assertSame(policy, manager.getPolicy()); manager.disableType(Event2.class); assertNotSame(policy, manager.getPolicy()); }
private void disableNotifications(ServerNotificationManager notificationManager, Map<String, Class<? extends Notification>> eventMap, Map<String, Class<? extends NotificationListener>> interfaceMap) throws InitialisationException { for (NotificationConfig<?, ?> disabledNotification : disabledNotifications) { final Supplier<InitialisationException> noNotificationExceptionSupplier = () -> new InitialisationException(createStaticMessage("No notification '%s' declared in this applications plugins to disable. Expected one of %s", disabledNotification.getEventName(), eventMap.keySet().toString()), this); if (disabledNotification.isInterfaceExplicitlyConfigured()) { notificationManager .disableInterface(getInterfaceClass(disabledNotification, interfaceMap).orElseThrow(noNotificationExceptionSupplier)); } if (disabledNotification.isEventExplicitlyConfigured()) { notificationManager .disableType(getEventClass(disabledNotification, eventMap).orElseThrow(noNotificationExceptionSupplier)); } } }
@Test public void testDynamicResponseToDisablingEvents() throws ClassNotFoundException { registerDefaultEvents(); registerDefaultListeners(); assertStandardEventsEnabled(); // now disable event 2 manager.disableType(Event2.class); assertTrue("via subclass", manager.isNotificationEnabled(Event1.class)); assertTrue("direct", manager.isNotificationEnabled(SubEvent1.class)); assertFalse("disabled", manager.isNotificationEnabled(Event2.class)); assertFalse("no listener", manager.isNotificationEnabled(SubEvent2.class)); assertFalse("not specified at all", manager.isNotificationEnabled(Event3.class)); // the subclass should be blocked too manager.addInterfaceToType(Listener2.class, SubEvent2.class); assertTrue("via subclass", manager.isNotificationEnabled(Event1.class)); assertTrue("direct", manager.isNotificationEnabled(SubEvent1.class)); assertFalse("disabled", manager.isNotificationEnabled(Event2.class)); assertFalse("disabled", manager.isNotificationEnabled(SubEvent2.class)); assertFalse("not specified at all", manager.isNotificationEnabled(Event3.class)); }
/** * When the manager is not dynamic (the default), decisions should not change */ @Test public void testNonDynamicManagerDecisions() throws ClassNotFoundException { registerDefaultEvents(); registerDefaultListeners(); OptimisedNotificationHandler decision = new OptimisedNotificationHandler(manager, Event2.class); assertTrue(decision.isNotificationEnabled(Event2.class)); manager.disableType(Event2.class); assertTrue(decision.isNotificationEnabled(Event2.class)); }
@Test public void testDynamicManagerDecisions() throws ClassNotFoundException { registerDefaultEvents(); registerDefaultListeners(); manager.setNotificationDynamic(true); OptimisedNotificationHandler decision = new OptimisedNotificationHandler(manager, Event2.class); assertTrue(decision.isNotificationEnabled(Event2.class)); manager.disableType(Event2.class); assertFalse(decision.isNotificationEnabled(Event2.class)); }
/** * A new policy should only be generated when the configuration changes */ @Test public void testPolicyCaching() throws ClassNotFoundException { registerDefaultEvents(); registerDefaultListeners(); Policy policy = manager.getPolicy(); assertStandardEventsEnabled(); assertSame(policy, manager.getPolicy()); manager.disableType(Event2.class); assertNotSame(policy, manager.getPolicy()); }
@Test public void testDynamicResponseToDisablingEvents() throws ClassNotFoundException { registerDefaultEvents(); registerDefaultListeners(); assertStandardEventsEnabled(); // now disable event 2 manager.disableType(Event2.class); assertTrue("via subclass", manager.isNotificationEnabled(Event1.class)); assertTrue("direct", manager.isNotificationEnabled(SubEvent1.class)); assertFalse("disabled", manager.isNotificationEnabled(Event2.class)); assertFalse("no listener", manager.isNotificationEnabled(SubEvent2.class)); assertFalse("not specified at all", manager.isNotificationEnabled(Event3.class)); // the subclass should be blocked too manager.addInterfaceToType(Listener2.class, SubEvent2.class); assertTrue("via subclass", manager.isNotificationEnabled(Event1.class)); assertTrue("direct", manager.isNotificationEnabled(SubEvent1.class)); assertFalse("disabled", manager.isNotificationEnabled(Event2.class)); assertFalse("disabled", manager.isNotificationEnabled(SubEvent2.class)); assertFalse("not specified at all", manager.isNotificationEnabled(Event3.class)); }