aboutsummaryrefslogtreecommitdiffstats
path: root/tests/bugs151/pr127299/ModelErrorConversion.aj
diff options
context:
space:
mode:
authoraclement <aclement>2006-02-15 11:10:46 +0000
committeraclement <aclement>2006-02-15 11:10:46 +0000
commit9e06d0efc2697c328f95d468631ec009443f8e43 (patch)
tree9ec21fe30b6d3b7cf207e6128ed39217a8231741 /tests/bugs151/pr127299/ModelErrorConversion.aj
parent81228854e0cd74f3a771aafbffb06b264fdac59f (diff)
downloadaspectj-9e06d0efc2697c328f95d468631ec009443f8e43.tar.gz
aspectj-9e06d0efc2697c328f95d468631ec009443f8e43.zip
test and fix for 120527 and test (commented out) for 127299
Diffstat (limited to 'tests/bugs151/pr127299/ModelErrorConversion.aj')
-rw-r--r--tests/bugs151/pr127299/ModelErrorConversion.aj51
1 files changed, 51 insertions, 0 deletions
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) {}
+}