@Override public void proceed() { if (currentInterceptor == interceptors.size()) { invokeObservers(); invokeNonManagedObserver(); } else { ObserverMethod interceptor = interceptors.get(currentInterceptor++); runtimeLogger.debug(interceptor, true); interceptor.invoke(manager, this); } }
private List<ObserverMethod> resolveInterceptorObservers(Class<?> eventType) { List<ObserverMethod> observers = new ArrayList<ObserverMethod>(); for (Extension extension : extensions) { for (ObserverMethod observer : extension.getObservers()) { if (Reflections.isType(observer.getType(), EventContext.class)) { if (Reflections.getType(observer.getType()).isAssignableFrom(eventType)) { observers.add(observer); } } } } Collections.sort(observers); return observers; }
@Override public void proceed() { if (currentInterceptor == interceptors.size()) { invokeObservers(); invokeNonManagedObserver(); } else { ObserverMethod interceptor = interceptors.get(currentInterceptor++); runtimeLogger.debug(interceptor, true); interceptor.invoke(manager, this); } }
private List<ObserverMethod> resolveInterceptorObservers(Class<?> eventType) { List<ObserverMethod> observers = new ArrayList<ObserverMethod>(); for (Extension extension : extensions) { for (ObserverMethod observer : extension.getObservers()) { if (Reflections.isType(observer.getType(), EventContext.class)) { if (Reflections.getType(observer.getType()).isAssignableFrom(eventType)) { observers.add(observer); } } } } Collections.sort(observers); return observers; }
try { runtimeLogger.debug(observer, false); observer.invoke(this, event); } catch (Exception e) {
@Override public int compareTo(ObserverMethod o) { if (o == null) { return 1; } Integer a = getPresedence(getMethod()); Integer b = getPresedence(o.getMethod()); return b.compareTo(a); }
/** * @param eventType * @return */ private List<ObserverMethod> resolveObservers(Class<?> eventType) { List<ObserverMethod> observers = new ArrayList<ObserverMethod>(); for (Extension extension : extensions) { for (ObserverMethod observer : extension.getObservers()) { if (Reflections.getType(observer.getType()).isAssignableFrom(eventType) && !Reflections.isType( observer.getType(), EventContext.class)) { observers.add(observer); } } } Collections.sort(observers); return observers; }
try { runtimeLogger.debug(observer, false); observer.invoke(this, event); } catch (Exception e) {
@Override public int compareTo(ObserverMethod o) { if (o == null) { return 1; } Integer a = getPresedence(getMethod()); Integer b = getPresedence(o.getMethod()); return b.compareTo(a); }
/** * @param eventType * @return */ private List<ObserverMethod> resolveObservers(Class<?> eventType) { List<ObserverMethod> observers = new ArrayList<ObserverMethod>(); for (Extension extension : extensions) { for (ObserverMethod observer : extension.getObservers()) { if (Reflections.getType(observer.getType()).isAssignableFrom(eventType) && !Reflections.isType( observer.getType(), EventContext.class)) { observers.add(observer); } } } Collections.sort(observers); return observers; }
private void invokeObservers() { for (ObserverMethod observer : observers) { try { runtimeLogger.debug(observer, false); observer.invoke(manager, event); } catch (InvocationException e) { Throwable cause = e.getCause(); if (manager.isExceptionHandled(cause)) { UncheckedThrow.throwUnchecked(cause); } else { manager.fireException(cause); } } } }
private void invokeObservers() { for (ObserverMethod observer : observers) { try { runtimeLogger.debug(observer, false); observer.invoke(manager, event); } catch (InvocationException e) { Throwable cause = e.getCause(); if (manager.isExceptionHandled(cause)) { UncheckedThrow.throwUnchecked(cause); } else { manager.fireException(cause); } } } }
@Test public void shouldBeAbleToReadAndInvokeObserverMethods() throws Exception { ExtensionWithObservers target = new ExtensionWithObservers(); Extension extension = ExtensionImpl.of(target); Assert.assertEquals( "Verify correct observer methods were found", 2, extension.getObservers().size()); for (ObserverMethod observer : extension.getObservers()) { observer.invoke(null, new String()); } Assert.assertTrue(target.methodOneWasCalled); Assert.assertTrue(target.methodTwoWasCalled); }
@Test public void shouldBeAbleToReadAndInvokeObserverMethods() throws Exception { ExtensionWithObservers target = new ExtensionWithObservers(); Extension extension = ExtensionImpl.of(target); Assert.assertEquals( "Verify correct observer methods were found", 2, extension.getObservers().size()); for (ObserverMethod observer : extension.getObservers()) { observer.invoke(null, new String()); } Assert.assertTrue(target.methodOneWasCalled); Assert.assertTrue(target.methodTwoWasCalled); }
@Test public void shouldBeAbleToReadAndInvokeInjectionPoints() throws Exception { ExtensionWithInjection target = new ExtensionWithInjection(); Extension extension = ExtensionImpl.of(target); Assert.assertEquals( "Verify correct injection fields were found", 1, extension.getInjectionPoints().size()); Instance<Object> instance = new DummyInstanceImpl(); for (InjectionPoint point : extension.getInjectionPoints()) { point.set(instance); } extension.getObservers().get(0).invoke(null, new Object()); Assert.assertTrue(target.methodOneWasCalled); Assert.assertNotNull(instance.get()); }
@Test public void shouldBeAbleToReadAndInvokeInjectionPoints() throws Exception { ExtensionWithInjection target = new ExtensionWithInjection(); Extension extension = ExtensionImpl.of(target); Assert.assertEquals( "Verify correct injection fields were found", 1, extension.getInjectionPoints().size()); Instance<Object> instance = new DummyInstanceImpl(); for (InjectionPoint point : extension.getInjectionPoints()) { point.set(instance); } extension.getObservers().get(0).invoke(null, new Object()); Assert.assertTrue(target.methodOneWasCalled); Assert.assertNotNull(instance.get()); }
@Test public void shouldBeAbleToInjectEventAndFireNewEvent() throws Exception { ExtensionWithEvent target = new ExtensionWithEvent(); Extension extension = ExtensionImpl.of(target); Assert.assertEquals( "Verify correct event fields were found", 1, extension.getEventPoints().size()); Assert.assertEquals(1, extension.getObservers().size()); DummyEventImpl event = new DummyEventImpl(); for (EventPoint point : extension.getEventPoints()) { point.set(event); } extension.getObservers().get(0).invoke(null, new Object()); Assert.assertTrue(target.methodOneWasCalled); Assert.assertEquals( "Verify the Extensions Event was firable", "some string", event.getString()); }
@Test public void shouldBeAbleToInjectEventAndFireNewEvent() throws Exception { ExtensionWithEvent target = new ExtensionWithEvent(); Extension extension = ExtensionImpl.of(target); Assert.assertEquals( "Verify correct event fields were found", 1, extension.getEventPoints().size()); Assert.assertEquals(1, extension.getObservers().size()); DummyEventImpl event = new DummyEventImpl(); for (EventPoint point : extension.getEventPoints()) { point.set(event); } extension.getObservers().get(0).invoke(null, new Object()); Assert.assertTrue(target.methodOneWasCalled); Assert.assertEquals( "Verify the Extensions Event was firable", "some string", event.getString()); }