Package de.bmiag.tapir.selenium.element
Class TapirElementMethodInterceptor
- java.lang.Object
-
- de.bmiag.tapir.selenium.element.TapirElementMethodInterceptor
-
- All Implemented Interfaces:
org.aopalliance.aop.Advice
,org.aopalliance.intercept.Interceptor
,org.aopalliance.intercept.MethodInterceptor
public class TapirElementMethodInterceptor extends java.lang.Object implements org.aopalliance.intercept.MethodInterceptor
TheTapirElementMethodInterceptor
wraps a singleTapirElement
. It intercepts all method calls in order to handle thrown exceptions. It retries the method invocation one more time ifWebDriverExceptionOccurrenceBehaviour.shouldRetry(WebDriverException)
returns true. Before retrying theTapirElement
is queried again.
For performance reason the first try is always executed without any implicit wait time and the second try respects the configured implicit wait time. If the exception is thrown again, the interceptor simply rethrows it. Moreover the interceptor checks if the return type of a method is assignable toTapirElement
orList
<TapirElement
>. If so aTapirElementMethodInterceptor
or aTapirElementListMethodInterceptor
is wrapped around the result.- Since:
- 2.0.0
- Author:
- Oliver Libutzki <[email protected]>
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
TapirElementMethodInterceptor.CacheKey
-
Constructor Summary
Constructors Constructor Description TapirElementMethodInterceptor(java.util.function.Supplier<TapirElement> query, CacheInvalidator parentCacheInvalidator, com.google.common.reflect.TypeToken<?> typeToken)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected java.util.Optional<java.lang.reflect.Type>
getListTypeArgument(java.lang.reflect.ParameterizedType parameterizedType)
java.lang.Object
invoke(org.aopalliance.intercept.MethodInvocation invocation)
protected java.lang.Object
invokeReflective(TapirElement tapirElement, java.lang.reflect.Method method, java.lang.Object... args)
-
-
-
Constructor Detail
-
TapirElementMethodInterceptor
public TapirElementMethodInterceptor(java.util.function.Supplier<TapirElement> query, CacheInvalidator parentCacheInvalidator, com.google.common.reflect.TypeToken<?> typeToken)
-
-
Method Detail
-
invoke
public java.lang.Object invoke(org.aopalliance.intercept.MethodInvocation invocation) throws java.lang.Throwable
- Specified by:
invoke
in interfaceorg.aopalliance.intercept.MethodInterceptor
- Throws:
java.lang.Throwable
-
invokeReflective
protected java.lang.Object invokeReflective(TapirElement tapirElement, java.lang.reflect.Method method, java.lang.Object... args)
-
getListTypeArgument
protected java.util.Optional<java.lang.reflect.Type> getListTypeArgument(java.lang.reflect.ParameterizedType parameterizedType)
-
-