public static boolean isCompileWeaving() { return WeavingMode.COMPILE == getWeavingMode(); } }
private Method getAjcMethod(Object target, Method fallback) { if (isCompileWeaving()) { return getAjcMethodAroundAdvice(target.getClass(), fallback); } return null; }
@Override public Closure createClosure(MetaHolder metaHolder, Method method, Object o, Object... args) { try { Object closureObj; method.setAccessible(true); if (isCompileWeaving()) { closureObj = invokeAjcMethod(metaHolder.getAjcMethod(), o, metaHolder, args); } else { closureObj = method.invoke(o, args); // creates instance of an anonymous class } return createClosure(method.getName(), closureObj); } catch (InvocationTargetException e) { throw Throwables.propagate(e.getCause()); } catch (Exception e) { throw Throwables.propagate(e); } }
public static boolean isCompileWeaving() { return WeavingMode.COMPILE == getWeavingMode(); } }
/** * Invokes the method. * * @return result of execution */ private Object execute(Object o, Method m, Object... args) throws CommandActionExecutionException { Object result = null; try { m.setAccessible(true); // suppress Java language access if (isCompileWeaving() && metaHolder.getAjcMethod() != null) { result = invokeAjcMethod(metaHolder.getAjcMethod(), o, metaHolder, args); } else { result = m.invoke(o, args); } } catch (IllegalAccessException e) { propagateCause(e); } catch (InvocationTargetException e) { propagateCause(e); } return result; }
@Around("cacheRemoveAnnotationPointcut()") public Object methodsAnnotatedWithCacheRemove(final ProceedingJoinPoint joinPoint) throws Throwable { Method method = getMethodFromTarget(joinPoint); Object obj = joinPoint.getTarget(); Object[] args = joinPoint.getArgs(); Validate.notNull(method, "failed to get method from joinPoint: %s", joinPoint); MetaHolder metaHolder = MetaHolder.builder() .args(args).method(method).obj(obj) .executionType(ExecutionType.SYNCHRONOUS) .ajcMethod(isCompileWeaving() ? getAjcMethodAroundAdvice(obj.getClass(), method) : null) .build(); CacheInvocationContext<CacheRemove> context = CacheInvocationContextFactory .createCacheRemoveInvocationContext(metaHolder); HystrixRequestCacheManager.getInstance().clearCache(context); return joinPoint.proceed(); }
if (isCompileWeaving()) { builder.ajcMethod(getAjcMethodAroundAdvice(obj.getClass(), batchCommandMethod.getName(), List.class));
@Override public MetaHolder create(Object proxy, Method method, Object obj, Object[] args, final ProceedingJoinPoint joinPoint) { HystrixCommand hystrixCommand = method.getAnnotation(HystrixCommand.class); ExecutionType executionType = ExecutionType.getExecutionType(method.getReturnType()); MetaHolder.Builder builder = metaHolderBuilder(proxy, method, obj, args, joinPoint); if (isCompileWeaving()) { builder.ajcMethod(getAjcMethodFromTarget(joinPoint)); } return builder.defaultCommandKey(method.getName()) .hystrixCommand(hystrixCommand) .observableExecutionMode(hystrixCommand.observableExecutionMode()) .executionType(executionType) .observable(ExecutionType.OBSERVABLE == executionType) .build(); } }
private Method getAjcMethod(Object target, Method fallback) { if (isCompileWeaving()) { return getAjcMethodAroundAdvice(target.getClass(), fallback); } return null; }
@Override public Closure createClosure(MetaHolder metaHolder, Method method, Object o, Object... args) { try { Object closureObj; method.setAccessible(true); if (isCompileWeaving()) { closureObj = invokeAjcMethod(metaHolder.getAjcMethod(), o, metaHolder, args); } else { closureObj = method.invoke(o, args); // creates instance of an anonymous class } return createClosure(method.getName(), closureObj); } catch (InvocationTargetException e) { throw Throwables.propagate(e.getCause()); } catch (Exception e) { throw Throwables.propagate(e); } }
/** * Invokes the method. * * @return result of execution */ private Object execute(Object o, Method m, Object... args) throws CommandActionExecutionException { Object result = null; try { m.setAccessible(true); // suppress Java language access if (isCompileWeaving() && metaHolder.getAjcMethod() != null) { result = invokeAjcMethod(metaHolder.getAjcMethod(), o, metaHolder, args); } else { result = m.invoke(o, args); } } catch (IllegalAccessException e) { propagateCause(e); } catch (InvocationTargetException e) { propagateCause(e); } return result; }
@Around("cacheRemoveAnnotationPointcut()") public Object methodsAnnotatedWithCacheRemove(final ProceedingJoinPoint joinPoint) throws Throwable { Method method = getMethodFromTarget(joinPoint); Object obj = joinPoint.getTarget(); Object[] args = joinPoint.getArgs(); Validate.notNull(method, "failed to get method from joinPoint: %s", joinPoint); MetaHolder metaHolder = MetaHolder.builder() .args(args).method(method).obj(obj) .executionType(ExecutionType.SYNCHRONOUS) .ajcMethod(isCompileWeaving() ? getAjcMethodAroundAdvice(obj.getClass(), method) : null) .build(); CacheInvocationContext<CacheRemove> context = CacheInvocationContextFactory .createCacheRemoveInvocationContext(metaHolder); HystrixRequestCacheManager.getInstance().clearCache(context); return joinPoint.proceed(); }
if (isCompileWeaving()) { builder.ajcMethod(getAjcMethodAroundAdvice(obj.getClass(), batchCommandMethod.getName(), List.class));
@Override public MetaHolder create(Object proxy, Method method, Object obj, Object[] args, final ProceedingJoinPoint joinPoint) { HystrixCommand hystrixCommand = method.getAnnotation(HystrixCommand.class); ExecutionType executionType = ExecutionType.getExecutionType(method.getReturnType()); MetaHolder.Builder builder = metaHolderBuilder(proxy, method, obj, args, joinPoint); if (isCompileWeaving()) { builder.ajcMethod(getAjcMethodFromTarget(joinPoint)); } return builder.defaultCommandKey(method.getName()) .hystrixCommand(hystrixCommand) .observableExecutionMode(hystrixCommand.observableExecutionMode()) .executionType(executionType) .observable(ExecutionType.OBSERVABLE == executionType) .build(); } }