@Override public Object invoke() throws Throwable { if (following == null) { return method.invoke(target, arguments); } else { return interceptor.intercept(following); } }
@Override public int compare(Interceptor o1, Interceptor o2) { return ((Integer)(o1.getPrecedence())).compareTo(o2.getPrecedence()); } }
@Override public Object invoke() throws Throwable { if (following == null) { return method.invoke(target, arguments); } else { return interceptor.intercept(following); } }
@Override public int compare(Interceptor o1, Interceptor o2) { return ((Integer)(o1.getPrecedence())).compareTo(o2.getPrecedence()); } }
Interceptor interceptor = iterator.next(); return interceptor.intercept(new InvocationContext() {
Interceptor interceptor = iterator.next(); return interceptor.intercept(new InvocationContext() {
@Before public void before() throws Throwable { Answer invoke = new Answer<Object>() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { return ((InvocationContext) invocation.getArguments()[0]).invoke(); } }; when(interceptor1.intercept(Mockito.any(InvocationContext.class))).thenAnswer(invoke); when(interceptor2.intercept(Mockito.any(InvocationContext.class))).thenAnswer(invoke); context = GrapheneContext.setContextFor(new GrapheneConfiguration(), driver, Default.class); }
@Test public void test() throws Throwable { InterceptorBuilder builder = new InterceptorBuilder(); builder.interceptInvocation(WebDriver.class, interceptor1).findElement(Interceptors.any(By.class)); builder.interceptInvocation(WebDriver.class, interceptor2).findElement(Interceptors.any(By.class)); Interceptor builtInterceptor = builder.build(); WebDriver driverProxy = GrapheneProxy.getProxyForTargetWithInterfaces(context, driver, WebDriver.class); GrapheneProxyInstance proxy = (GrapheneProxyInstance) driverProxy; proxy.registerInterceptor(builtInterceptor); driverProxy.findElement(by); Mockito.inOrder(interceptor1, interceptor2); verify(interceptor1).intercept(Mockito.any(InvocationContext.class)); verify(interceptor2).intercept(Mockito.any(InvocationContext.class)); } }