From 9e06d0efc2697c328f95d468631ec009443f8e43 Mon Sep 17 00:00:00 2001 From: aclement Date: Wed, 15 Feb 2006 11:10:46 +0000 Subject: test and fix for 120527 and test (commented out) for 127299 --- tests/bugs151/pr127299/ModelErrorConversion.aj | 51 ++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 tests/bugs151/pr127299/ModelErrorConversion.aj (limited to 'tests/bugs151/pr127299/ModelErrorConversion.aj') diff --git a/tests/bugs151/pr127299/ModelErrorConversion.aj b/tests/bugs151/pr127299/ModelErrorConversion.aj new file mode 100644 index 000000000..3366e15ca --- /dev/null +++ b/tests/bugs151/pr127299/ModelErrorConversion.aj @@ -0,0 +1,51 @@ +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) {} +} -- cgit v1.2.3