Example usage for org.aspectj.lang ProceedingJoinPoint getArgs

List of usage examples for org.aspectj.lang ProceedingJoinPoint getArgs

Introduction

In this page you can find the example usage for org.aspectj.lang ProceedingJoinPoint getArgs.

Prototype

Object[] getArgs();

Source Link

Usage

From source file:com.vmware.bdd.aop.lock.ClusterEntityExclusiveWriteLockAdvice.java

License:Open Source License

public Object lock(ProceedingJoinPoint pjp) throws Throwable {
    Object[] objs = pjp.getArgs();
    String clusterName = (String) objs[0];
    logger.info("Lock exclusive write for cluster " + clusterName);
    boolean locked = false;
    try {/*w  w  w  . ja  va 2s .  c o m*/
        lockExclusiveWrite((String) clusterName);
        locked = true;
        return pjp.proceed();
    } finally {
        if (locked) {
            unlockExclusiveWrite(clusterName);
            logger.info("Unlock exclusive write for cluster " + clusterName);
        }
    }
}

From source file:com.vmware.bdd.aop.software.DefaultPreStartServicesAdvice.java

License:Open Source License

@Around("@annotation(com.vmware.bdd.software.mgmt.plugin.aop.PreConfiguration)")
public Object preClusterConfiguration(ProceedingJoinPoint pjp) throws Throwable {
    MethodSignature signature = (MethodSignature) pjp.getSignature();
    Method method = signature.getMethod();
    PreConfiguration beforeConfig = AnnotationUtils.findAnnotation(method, PreConfiguration.class);
    String nameParam = beforeConfig.clusterNameParam();

    String[] paramNames = signature.getParameterNames();
    Object[] args = pjp.getArgs();
    String clusterName = null;/*from   w  w  w .j  a v a2  s  .  c om*/
    for (int i = 0; i < paramNames.length; i++) {
        if (paramNames[i].equals(nameParam)) {
            clusterName = (String) args[i];
        }
    }
    if (clusterName == null) {
        logger.error("Cluster name is not specified in method");
        throw BddException.INTERNAL(null, "Wrong annotation usage. Cluster name must be specified in method.");
    }
    ClusterEntity cluster = clusterEntityMgr.findByName(clusterName);
    if (cluster == null) {
        throw BddException.NOT_FOUND("Cluster", clusterName);
    }
    preStartServices(clusterName);
    return pjp.proceed();
}

From source file:com.vsct.supervision.notification.log.LoggingAspect.java

License:Open Source License

@Around(value = "@within(com.vsct.supervision.notification.log.Loggable) || @annotation(com.vsct.supervision.notification.log.Loggable)")
public Object around(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {

    final MethodSignature signature = (MethodSignature) proceedingJoinPoint.getSignature();
    final Method method = signature.getMethod();
    final Class clazz = signature.getClass();
    final Loggable loggableMethod = method.getAnnotation(Loggable.class);

    final Loggable loggableClass = proceedingJoinPoint.getTarget().getClass().getAnnotation(Loggable.class);

    //get current log level
    final LogLevel logLevel = loggableMethod != null ? loggableMethod.value() : loggableClass.value();

    final String service = StringUtils.isNotBlank(loggableClass.service()) ? loggableClass.service()
            : clazz.getName();//from w  ww .  j  av a  2 s .  c o  m
    final String methodName = StringUtils.isNotBlank(loggableClass.method()) ? loggableClass.method()
            : method.getName();

    final String star = "**********";
    //before
    LogWriter.write(proceedingJoinPoint.getTarget().getClass(), logLevel,
            star + service + "." + methodName + "() start execution" + star);

    //show traceParams
    final boolean showParams = loggableMethod != null ? loggableMethod.traceParams()
            : loggableClass.traceParams();
    if (showParams) {

        if (proceedingJoinPoint.getArgs() != null && proceedingJoinPoint.getArgs().length > 0) {
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < proceedingJoinPoint.getArgs().length; i++) {
                sb.append(method.getParameterTypes()[i].getName() + ":" + proceedingJoinPoint.getArgs()[i]);
                if (i < proceedingJoinPoint.getArgs().length - 1)
                    sb.append(", ");
            }

            LogWriter.write(proceedingJoinPoint.getTarget().getClass(), logLevel,
                    service + "." + methodName + "() args " + sb);
        }

    }

    final long startTime = System.currentTimeMillis();
    //start method execution
    final Object result = proceedingJoinPoint.proceed();

    final long endTime = System.currentTimeMillis();

    //show results
    if (result != null) {
        boolean showResults = loggableMethod != null ? loggableMethod.traceResult()
                : loggableClass.traceResult();
        if (showResults) {
            LogWriter.write(proceedingJoinPoint.getTarget().getClass(), logLevel,
                    service + "." + methodName + "() Result : " + result);
        }
    }

    //show after
    LogWriter.write(proceedingJoinPoint.getTarget().getClass(), logLevel, star + service + "." + methodName
            + "() finished execution and takes " + (endTime - startTime) + " millis time to execute " + star);

    return result;
}

From source file:com.willowtreeapps.respeeker.ResPeeker.java

License:Apache License

@Around("setContentView()")
public Object aroundSetContentView(ProceedingJoinPoint joinPoint) throws Throwable {
    Object result = joinPoint.proceed();

    Activity context = (Activity) joinPoint.getThis();
    int layoutRes = (Integer) joinPoint.getArgs()[0];
    View view = context.findViewById(android.R.id.content);

    attachTouchListener(view);/*from  ww w  . j  a  va 2  s .c  o m*/

    ViewPeeker.put(view, layoutRes);

    Configurator configurator = new Configurator(context);
    Properties properties = configurator.getProperties();
    Log.v("__ResPeeker__", "config <<" + propertiesToString(properties) + ">>");

    return result;
}

From source file:com.willowtreeapps.respeeker.ResPeeker.java

License:Apache License

@Around("inflate()")
public Object aroundInflate(ProceedingJoinPoint joinPoint) throws Throwable {
    Object result = joinPoint.proceed();

    int layoutRes = (Integer) joinPoint.getArgs()[0];
    View layoutView = (View) joinPoint.getArgs()[1];
    View view = (View) result;

    attachTouchListener(view);/*w  w  w  .j a v  a 2s. c om*/

    ViewPeeker.put(layoutView, layoutRes);

    return result;
}

From source file:com.willowtreeapps.respeeker.ResPeeker.java

License:Apache License

@Around("setOnTouchListener()")
public Object aroundSetOnTouchListener(ProceedingJoinPoint joinPoint) throws Throwable {
    final View.OnTouchListener originalTouchListener = (View.OnTouchListener) joinPoint.getArgs()[0];
    final View.OnTouchListener interceptTouchListener = getTouchListener();

    View.OnTouchListener delegateTouchListener = new View.OnTouchListener() {
        @Override/*from  www .  j ava 2  s.  c o m*/
        public boolean onTouch(View v, MotionEvent event) {
            interceptTouchListener.onTouch(v, event);
            return originalTouchListener != null && originalTouchListener.onTouch(v, event);
        }
    };

    return joinPoint.proceed(new Object[] { delegateTouchListener });
}

From source file:com.wms.studio.service.handler.GenericAopHandler.java

License:Apache License

/**
 * TODO ??/*w w w  .  j av  a2 s  . c  o m*/
 * 
 * @param point
 * @return
 * @throws Throwable
 */
@Around(value = TAG)
public Object process(ProceedingJoinPoint point) throws Throwable {

    String handlerName = getHandlerName(point);
    boolean isNeedHandler = StringUtils.isNotBlank(handlerName);
    HandlerData data = null;
    Object result = null;
    boolean handlerResult = false;

    if (isNeedHandler) {
        data = new HandlerData();
        data.setArgs(point.getArgs());
        handlerResult = beforeProcess(data, handlerName);
    }

    if (handlerResult) {
        return null;
    }

    try {
        result = point.proceed();
    } catch (Exception e) {
        if (isNeedHandler) {
            data.setException(e);
            handlerResult = exceptionProcess(data, handlerName);
        } else {
            throw e;
        }
    }

    if (isNeedHandler) {
        data.setResult(result);
        handlerResult = afterProcess(data, handlerName);
    }

    return result;
}

From source file:com.zhaimi.message.aop.AbstractSendMessageAdvice.java

License:Apache License

/**
 * SendMsg /*from w w  w. j a v  a2s .  com*/
 * @param pjp
 * @return
 * @throws Throwable
 */
public Object around(ProceedingJoinPoint pjp) throws Throwable {
    Object result = null;

    Method method = getMethod(pjp);
    String beforeTopic = getBeforeSendMsgTopicOnMethod(method);
    Object[] args = pjp.getArgs();

    if (beforeTopic != null) {
        //         if(log.isDebugEnabled()) 
        //            log.debug("BeforeTopic='{}',Method={} "  ,beforeTopic, method);
        sendMessageBefore(method, beforeTopic, args);
    }

    String afterTopic = getAfterSendMsgTopicOnMethod(method);
    try {
        //?
        result = pjp.proceed(args);

        if (afterTopic != null) {
            //            if(log.isDebugEnabled()) 
            //               log.debug("AfterTopic='{}', Method {}"  ,afterTopic, method);
            sendMessageAfter(method, afterTopic, args, result);
        }

    } catch (Throwable e) {

        //         if(log.isDebugEnabled()) 
        //            log.debug("sendMessageAfterException exception " + e);

        try {
            sendMessageAfterException(method, afterTopic, args, e);
        } catch (Throwable t) {
            /* do nothing */ }

        throw e;
    }
    if (log.isDebugEnabled())
        log.debug("SendMsgBeforeInvokeAdvice result " + result);
    return result;
}

From source file:com.zhaimi.message.aop.AbstractSendMessageAdvice.java

License:Apache License

/**
 * Get method of joinpoint/*w ww  .jav  a  2 s . c o m*/
 * @param pjp
 * @return
 */
protected Method getMethod(ProceedingJoinPoint pjp) {

    Class<?> clazz = pjp.getTarget().getClass();
    String methodName = pjp.getSignature().getName();
    Method method = null;

    int argCount = pjp.getArgs().length;
    //      Object[] args = pjp.getArgs();
    //      Class<?>[] argClasses = new Class[args.length];
    //      for (int i = 0; i < args.length; i++) {
    //         Class<?> argClass = args[i].getClass();
    //         
    //         argClass = convertActualClass( argClass );
    //         argClasses[i] = args[i]!=null ? args[i].getClass() : null;
    //      }
    try {
        String key = clazz.getName() + "." + methodName + "#" + argCount;
        if ((method = methodCache.get(key)) == null) {
            method = getMethodFromClass(clazz, methodName, argCount);

            if (method != null) {
                methodCache.put(key, method);
            } else {
                log.error("AOP pointcut method not found! methodName={},argCount={}", methodName, argCount);
            }
        }

    } catch (Exception e) {
        throw new RuntimeException("Method not found!" + clazz.getName() + "." + methodName, e);
    }
    return method;
}

From source file:com.zoltran.perf.aspect.PerformanceMonitorAspect.java

License:Open Source License

@Around(value = "execution(@com.zoltran.perf.aspect.PerformanceMonitor * *(..)) && @annotation(annot)", argNames = "pjp,annot")
public Object performanceMonitoredMethod(ProceedingJoinPoint pjp, PerformanceMonitor annot) throws Throwable {
    final long start = System.currentTimeMillis();
    Object result = pjp.proceed();
    final long elapsed = System.currentTimeMillis() - start;
    MeasurementRecorderSource mrs = mrecSources.getUnchecked(annot.recorderSource());
    mrs.getRecorder(pjp.toLongString()).record(elapsed);
    if (elapsed > annot.warnThresholdMillis()) {
        if (elapsed > annot.errorThresholdMillis()) {
            LOG.error("Execution time  {} ms for {} exceeds error threshold of {} ms, arguments {}",
                    new Object[] { elapsed, pjp.toShortString(), annot.errorThresholdMillis(), pjp.getArgs() });
        } else {/*w ww  .  j av  a  2s. c  o m*/
            LOG.warn("Execution time  {} ms for {} exceeds warning threshold of {} ms, arguments {}",
                    new Object[] { elapsed, pjp.toShortString(), annot.warnThresholdMillis(), pjp.getArgs() });
        }
    } else {
        LOG.debug("Execution time {} ms for {}, arguments {}",
                new Object[] { elapsed, pjp.toShortString(), pjp.getArgs() });
    }
    return result;
}