@SuppressWarnings("unchecked") private Optional<EventListener<T>> findListener(final AbstractTargetHandler handler) { final EventListener<T> result = Stream.of(SupportedListener.values()) .filter(l -> Objects.equals(eventType, l.getEventType())) .peek(l -> LOGGER.trace("Found listener: {}.", l)) .filter(handler::isEnabled) .peek(l -> LOGGER.debug("{} notification enabled for '{}'.", l, handler.getTarget())) .findFirst() .map(l -> (EventListener<T>) l.getListener(handler)) .orElse(null); return Optional.ofNullable(result); }
private static String getCompositePropertyName(final SupportedListener listener, final String property) { return listener.getLabel() + "." + property; }
@Test void globalGagOverride() { final SupportedListener[] overriding = new SupportedListener[] { SupportedListener.UPDATE_DETECTED, SupportedListener.EXPERIMENTAL_UPDATE_DETECTED, SupportedListener.ENDING, SupportedListener.INITIALIZED, SupportedListener.CRASHED }; Arrays.stream(SupportedListener.values()).forEach(s -> { final boolean shouldOverride = Arrays.asList(overriding).contains(s); assertThat(s.overrideGlobalGag()).isEqualTo(shouldOverride); }); }
/** * Return ID of the listener. If listeners have the same ID, it means they share one namespace in configuration. * @return ID of the listener which will be used as namespace in the config file. */ public String getLabel() { final String className = this.getEventType().getSimpleName(); final String decapitalized = StringUtils.uncapitalize(className); // this works because Event subclasses must be named (Something)Event; check Event(). return decapitalized.substring(0, decapitalized.length() - "Event".length()); }
private boolean allowGlobal(final SupportedListener listener, final SessionInfo sessionInfo) { final boolean override = listener.overrideGlobalGag(); return override || getCounter(sessionInfo).allow(); }
private static AbstractListener<? extends Event> getListener(final SupportedListener s, final AbstractTargetHandler p) { final AbstractListener<? extends Event> e = spy((AbstractListener<? extends Event>) s.getListener(p)); // always return a listener that WILL send an e-mail, even though this means shouldSendEmail() is not tested doReturn(true).when(e).shouldNotify(any(), eq(SESSION_INFO)); return e; }
@SuppressWarnings("unchecked") private static <T extends Event> DynamicContainer forListener(final SupportedListener listener, final T e) throws IOException { final AbstractTargetHandler p = getHandler(); final AbstractListener<T> l = (AbstractListener<T>) getListener(listener, p); return DynamicContainer.dynamicContainer(listener.toString(), Stream.of( dynamicTest("is formally correct", () -> testFormal(l, e, listener)), dynamicTest("is processed as plain text", () -> testPlainTextProcessing(l, e)), dynamicTest("is processed as HTML", () -> testHtmlProcessing(l, e)), dynamicTest("triggers the sending code", () -> testTriggered(p, l, e)), dynamicTest("has listener enabled", () -> testListenerEnabled(e)) )); }
/** * Return ID of the listener. If listeners have the same ID, it means they share one namespace in configuration. * @return ID of the listener which will be used as namespace in the config file. */ public String getLabel() { final String className = this.getEventType().getSimpleName(); final String decapitalized = StringUtils.uncapitalize(className); // this works because Event subclasses must be named (Something)Event; check Event(). return decapitalized.substring(0, decapitalized.length() - "Event".length()); }
private boolean allowGlobal(final SupportedListener listener, final SessionInfo sessionInfo) { final boolean override = listener.overrideGlobalGag(); return override || getCounter(sessionInfo).allow(); }
@SuppressWarnings("unchecked") private Optional<EventListener<T>> findListener(final AbstractTargetHandler handler) { final EventListener<T> result = Stream.of(SupportedListener.values()) .filter(l -> Objects.equals(eventType, l.getEventType())) .peek(l -> LOGGER.trace("Found listener: {}.", l)) .filter(handler::isEnabled) .peek(l -> LOGGER.debug("{} notification enabled for '{}'.", l, handler.getTarget())) .findFirst() .map(l -> (EventListener<T>) l.getListener(handler)) .orElse(null); return Optional.ofNullable(result); }
private static <T extends Event> void testFormal(final AbstractListener<T> listener, final T event, final SupportedListener listenerType) { assertThat(event).isInstanceOf(listenerType.getEventType()); assertThat(listener.getTemplateFileName()) .isNotNull() .isNotEmpty(); }
private static String getCompositePropertyName(final SupportedListener listener, final String property) { return listener.getLabel() + "." + property; }