mirror of
https://github.com/eclipse-aspectj/aspectj.git
synced 2024-08-19 02:10:14 +02:00
52 lines
1.6 KiB
Plaintext
52 lines
1.6 KiB
Plaintext
aspect ModelErrorConversion {
|
|
|
|
|
|
// convert exception types
|
|
after(Entity entity) throwing (HibernateException e): modelExec(entity) {
|
|
convertException(e, entity, thisJoinPoint);
|
|
}
|
|
after(Entity entity) throwing (ServiceException e): modelExec(entity) {
|
|
convertException(e, entity, thisJoinPoint);
|
|
}
|
|
after(Entity entity) throwing (SOAPException e): modelExec(entity) {
|
|
convertException(e, entity, thisJoinPoint);
|
|
}
|
|
after(Entity entity) throwing (SOAPFaultException e): modelExec(entity) {
|
|
convertException(e, entity, thisJoinPoint);
|
|
}
|
|
|
|
/** execution of any method in the model */
|
|
pointcut modelExecStatic() :
|
|
execution(* model..*(..));
|
|
|
|
pointcut modelExec(Entity entity) :
|
|
modelExecStatic() && this(entity);
|
|
// soften the checked exceptions
|
|
declare soft: ServiceException: modelExecStatic();
|
|
declare soft: SOAPException: modelExecStatic();
|
|
|
|
|
|
/** Converts exceptions to model exceptions, storing context */
|
|
private void convertException(Exception e, Entity entity,
|
|
JoinPoint jp) {
|
|
ModelException me = new ModelException(e);
|
|
me.setEntity(entity);
|
|
me.setArgs(jp.getArgs());
|
|
// ModelException extends RuntimeException, so this is unchecked
|
|
throw me;
|
|
}
|
|
}
|
|
|
|
class HibernateException extends RuntimeException {}
|
|
class ServiceException extends Exception {}
|
|
class SOAPException extends Exception {}
|
|
class SOAPFaultException extends RuntimeException {}
|
|
|
|
class Entity {}
|
|
|
|
class ModelException extends RuntimeException {
|
|
public ModelException(Throwable t) { super(t); }
|
|
public void setEntity(Entity entity) {}
|
|
public void setArgs(Object[] argz) {}
|
|
}
|