Example usage for org.aspectj.lang ProceedingJoinPoint proceed

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

Introduction

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

Prototype

public Object proceed(Object[] args) throws Throwable;

Source Link

Document

Proceed with the next advice or target method invocation.

Usage

From source file:com.invariantproperties.project.student.webservice.server.rest.CheckPostValues.java

License:Apache License

/**
 * Check post values on delete method. This is actually a no-op but it
 * allows us to log method entry./* ww w  .  j a  v a 2s.  c o  m*/
 * 
 * @param pjp
 * @return
 * @throws Throwable
 */
@Around("target(com.invariantproperties.project.student.webservice.server.rest.AbstractResource) && args(uuid,version) && execution(* *.delete*(..))")
public Object checkParametersDelete(ProceedingJoinPoint pjp, String uuid, Integer version) throws Throwable {
    final Logger log = Logger.getLogger(pjp.getSignature().getDeclaringType());
    final String name = pjp.getSignature().getName();
    Object results = null;

    if (!StudentUtil.isPossibleUuid(uuid)) {
        // this is a possible attack.
        if (log.isInfoEnabled()) {
            log.info(String.format("%s(): uuid", name));
        }
        results = Response.status(Status.BAD_REQUEST).build();
    } else {
        // this should be safe since parameters have been validated.
        if (log.isDebugEnabled()) {
            log.debug(String.format("%s(%s): entry", name, Arrays.toString(pjp.getArgs())));
        }
        results = pjp.proceed(pjp.getArgs());
    }

    return results;
}

From source file:com.invariantproperties.project.student.webservice.server.rest.CheckPostValues.java

License:Apache License

/**
 * Check post values on find methods. This is actually a no-op but it allows
 * us to log method entry./*from  w  w w . j  a  v  a 2s  . c o  m*/
 * 
 * @param pjp
 * @return
 * @throws Throwable
 */
@Around("target(com.invariantproperties.project.student.webservice.server.rest.AbstractResource) && execution(* *.find*(..))")
public Object checkParametersFind(ProceedingJoinPoint pjp) throws Throwable {
    final Logger log = Logger.getLogger(pjp.getSignature().getDeclaringType());

    if (log.isDebugEnabled()) {
        log.debug(String.format("%s(%s): entry", pjp.getSignature().getName(), Arrays.toString(pjp.getArgs())));
    }
    final Object results = pjp.proceed(pjp.getArgs());

    return results;
}

From source file:com.invariantproperties.project.student.webservice.server.rest.UnexpectedResourceExceptionHandler.java

License:Apache License

/**
 * Check for an unhandled exception from a REST resource. If we catch one
 * AND the method returns a Response we can return a Server Internal Error
 * (500) error code instead of blowing up. We need to check though since
 * some methods don't return a Response.
 * /*from  w  ww .j ava 2s  .c o  m*/
 * @param pjp
 * @return
 * @throws Throwable
 */
@Around("target(com.invariantproperties.project.student.webservice.server.rest.AbstractResource)")
public Object checkForUnhandledException(ProceedingJoinPoint pjp) throws Throwable {
    Object results = null;
    Logger log = Logger.getLogger(pjp.getSignature().getClass());

    try {
        results = pjp.proceed(pjp.getArgs());
    } catch (ObjectNotFoundException e) {
        // this is safe to log since we know that we've passed filtering.
        String args = Arrays.toString(pjp.getArgs());
        results = Response.status(Status.NOT_FOUND).entity("object not found: " + args).build();
        if (log.isDebugEnabled()) {
            log.debug("object not found: " + args);
        }
    } catch (Exception e) {
        // find the method we called. We can't cache this since the method
        // may be overloaded
        Method method = findMethod(pjp);
        if ((method != null) && Response.class.isAssignableFrom(method.getReturnType())) {
            // if the method returns a response we can return a 500 message.
            if (!(e instanceof UnitTestException)) {
                if (log.isInfoEnabled()) {
                    log.info(String.format("%s(): unhandled exception: %s", pjp.getSignature().getName(),
                            e.getMessage()), e);
                }
            } else if (log.isTraceEnabled()) {
                log.info("unit test exception: " + e.getMessage());
            }
            results = Response.status(Status.INTERNAL_SERVER_ERROR).build();
        } else {
            // DO NOT LOG THE EXCEPTION. That just clutters the log - let
            // the final handler log it.
            throw e;
        }
    }

    return results;
}

From source file:com.invariantproperties.sandbox.student.webservice.security.RestParameterChecker.java

License:Apache License

/**
 * Check that the UUID is well-formed in CRUD REST service calls.
 * /*from   w w  w. j ava2  s .  c om*/
 * @param pjp
 * @param uuid
 * @return
 * @throws Throwable
 */
@Around("target(com.invariantproperties.sandbox.student.webservice.server.rest.AbstractResource) && args(uuid,..) && (execution(* *.create*(..)) || execution(* *.delete*(..)) || execution(* *.update*(..)) || execution(* *.get*(..)))")
public Object checkUuid(ProceedingJoinPoint pjp, String uuid) throws Throwable {
    final Object[] args = pjp.getArgs();
    Object results = null;

    if (LOG.isDebugEnabled()) {
        LOG.debug(String.format("checking for bad UUID: %s(%s)...", pjp.getSignature().getName(), uuid));
    }

    if (!StudentUtil.isPossibleUuid(uuid)) {
        results = Response.status(Status.BAD_REQUEST).build();
        LOG.info(pjp.getSignature().getName() + ": attempt to use malformed UUID");
    } else {
        results = pjp.proceed(args);
    }

    return results;
}

From source file:com.invariantproperties.sandbox.student.webservice.server.rest.CheckPostValues.java

License:Apache License

/**
 * Check post values on create method.// w  w  w .j  av  a2 s  .  c  o m
 * 
 * @param pjp
 * @return
 * @throws Throwable
 */
@Around("target(com.invariantproperties.sandbox.student.webservice.server.rest.AbstractResource) && args(rto,..)")
public Object checkParametersCreate(ProceedingJoinPoint pjp, Validatable rto) throws Throwable {
    final Logger log = Logger.getLogger(pjp.getSignature().getDeclaringType());
    final String name = pjp.getSignature().getName();
    Object results = null;

    if (rto.validate()) {
        // this should be safe since parameters have been validated.
        if (log.isDebugEnabled()) {
            log.debug(String.format("%s(%s): entry", name, Arrays.toString(pjp.getArgs())));
        }
        results = pjp.proceed(pjp.getArgs());
    } else {
        // FIXME: this is unsafe
        if (log.isInfoEnabled()) {
            log.info(String.format("%s(%s): bad arguments", name, Arrays.toString(pjp.getArgs())));
        }
        // TODO: tell caller what the problems were
        results = Response.status(Status.BAD_REQUEST).build();
    }

    return results;
}

From source file:com.invariantproperties.sandbox.student.webservice.server.rest.CheckPostValues.java

License:Apache License

/**
 * Check post values on update method./*from  ww w . j a  va 2 s . c  o m*/
 * 
 * @param pjp
 * @return
 * @throws Throwable
 */
@Around("target(com.invariantproperties.sandbox.student.webservice.server.rest.AbstractResource) && args(uuid,rto,..)")
public Object checkParametersUpdate(ProceedingJoinPoint pjp, String uuid, Validatable rto) throws Throwable {
    final Logger log = Logger.getLogger(pjp.getSignature().getDeclaringType());
    final String name = pjp.getSignature().getName();
    Object results = null;

    if (!StudentUtil.isPossibleUuid(uuid)) {
        // this is a possible attack.
        if (log.isInfoEnabled()) {
            log.info(String.format("%s(): uuid", name));
        }
        results = Response.status(Status.BAD_REQUEST).build();
    } else if (rto.validate()) {
        // this should be safe since parameters have been validated.
        if (log.isDebugEnabled()) {
            log.debug(String.format("%s(%s): entry", name, Arrays.toString(pjp.getArgs())));
        }
        results = pjp.proceed(pjp.getArgs());
    } else {
        // FIXME: this is unsafe
        if (log.isInfoEnabled()) {
            log.info(String.format("%s(%s): bad arguments", name, Arrays.toString(pjp.getArgs())));
        }
        // TODO: tell caller what the problems were
        results = Response.status(Status.BAD_REQUEST).build();
    }

    return results;
}

From source file:com.invariantproperties.sandbox.student.webservice.server.rest.CheckPostValues.java

License:Apache License

/**
 * Check post values on delete method. This is actually a no-op but it
 * allows us to log method entry.//from w ww. ja  v  a2  s  .  co m
 * 
 * @param pjp
 * @return
 * @throws Throwable
 */
@Around("target(com.invariantproperties.sandbox.student.webservice.server.rest.AbstractResource) && args(uuid,version) && execution(* *.delete*(..))")
public Object checkParametersDelete(ProceedingJoinPoint pjp, String uuid, Integer version) throws Throwable {
    final Logger log = Logger.getLogger(pjp.getSignature().getDeclaringType());
    final String name = pjp.getSignature().getName();
    Object results = null;

    if (!StudentUtil.isPossibleUuid(uuid)) {
        // this is a possible attack.
        if (log.isInfoEnabled()) {
            log.info(String.format("%s(): uuid", name));
        }
        results = Response.status(Status.BAD_REQUEST).build();
    } else {
        // this should be safe since parameters have been validated.
        if (log.isDebugEnabled()) {
            log.debug(String.format("%s(%s): entry", name, Arrays.toString(pjp.getArgs())));
        }
        results = pjp.proceed(pjp.getArgs());
    }

    return results;
}

From source file:com.invariantproperties.sandbox.student.webservice.server.rest.CheckPostValues.java

License:Apache License

/**
 * Check post values on find methods. This is actually a no-op but it allows
 * us to log method entry./*ww  w . j  av a2 s .co  m*/
 * 
 * @param pjp
 * @return
 * @throws Throwable
 */
@Around("target(com.invariantproperties.sandbox.student.webservice.server.rest.AbstractResource) && execution(* *.find*(..))")
public Object checkParametersFind(ProceedingJoinPoint pjp) throws Throwable {
    final Logger log = Logger.getLogger(pjp.getSignature().getDeclaringType());

    if (log.isDebugEnabled()) {
        log.debug(String.format("%s(%s): entry", pjp.getSignature().getName(), Arrays.toString(pjp.getArgs())));
    }
    final Object results = pjp.proceed(pjp.getArgs());

    return results;
}

From source file:com.invariantproperties.sandbox.student.webservice.server.rest.UnexpectedResourceExceptionHandler.java

License:Apache License

/**
 * Check for an unhandled exception from a REST resource. If we catch one
 * AND the method returns a Response we can return a Server Internal Error
 * (500) error code instead of blowing up. We need to check though since
 * some methods don't return a Response.
 * //from  ww  w .jav a  2s  . c  o  m
 * @param pjp
 * @return
 * @throws Throwable
 */
@Around("target(com.invariantproperties.sandbox.student.webservice.server.rest.AbstractResource)")
public Object checkForUnhandledException(ProceedingJoinPoint pjp) throws Throwable {
    Object results = null;
    Logger log = Logger.getLogger(pjp.getSignature().getClass());

    try {
        results = pjp.proceed(pjp.getArgs());
    } catch (ObjectNotFoundException e) {
        // this is safe to log since we know that we've passed filtering.
        String args = Arrays.toString(pjp.getArgs());
        results = Response.status(Status.NOT_FOUND).entity("object not found: " + args).build();
        if (log.isDebugEnabled()) {
            log.debug("object not found: " + args);
        }
    } catch (Exception e) {
        // find the method we called. We can't cache this since the method
        // may be overloaded
        Method method = findMethod(pjp);
        if ((method != null) && Response.class.isAssignableFrom(method.getReturnType())) {
            // if the method returns a response we can return a 500 message.
            if (!(e instanceof UnitTestException)) {
                if (log.isInfoEnabled()) {
                    log.info(String.format("%s(): unhandled exception: %s", pjp.getSignature().getName(),
                            e.getMessage()), e);
                }
            } else if (log.isTraceEnabled()) {
                log.info("unit test exception: " + e.getMessage());
            }
            results = Response.status(Status.INTERNAL_SERVER_ERROR).build();
        } else {
            // DO NOT LOG THE EXCEPTION. That just clutters the log - let
            // the final handler log it.
            throw e;
        }
    }

    return results;
}

From source file:com.linksinnovation.springaop.aspect.LogAspect.java

@Around("simpleService()")
public Object aroundSet(ProceedingJoinPoint pjp) throws Throwable {
    System.out.println("before");

    String x[] = new String[] { "xxxx" };

    Object proceed = pjp.proceed(x);
    System.out.println("after");
    return proceed;
}