diff --git a/org.springframework.aspects/.classpath b/org.springframework.aspects/.classpath index 0157912a92e..795d5d73050 100644 --- a/org.springframework.aspects/.classpath +++ b/org.springframework.aspects/.classpath @@ -16,5 +16,6 @@ + diff --git a/org.springframework.aspects/ivy.xml b/org.springframework.aspects/ivy.xml index 4aee2c78f0c..ba6a46fcacf 100644 --- a/org.springframework.aspects/ivy.xml +++ b/org.springframework.aspects/ivy.xml @@ -13,6 +13,7 @@ + @@ -25,6 +26,7 @@ + diff --git a/org.springframework.aspects/src/main/java/org/springframework/orm/jpa/aspectj/JpaExceptionTranslatorAspect.aj b/org.springframework.aspects/src/main/java/org/springframework/orm/jpa/aspectj/JpaExceptionTranslatorAspect.aj new file mode 100644 index 00000000000..6ff44249d08 --- /dev/null +++ b/org.springframework.aspects/src/main/java/org/springframework/orm/jpa/aspectj/JpaExceptionTranslatorAspect.aj @@ -0,0 +1,22 @@ +package org.springframework.orm.jpa.aspectj; + +import javax.persistence.EntityManager; +import javax.persistence.EntityManagerFactory; +import javax.persistence.EntityTransaction; +import javax.persistence.Query; + +import org.springframework.dao.DataAccessException; +import org.springframework.orm.jpa.EntityManagerFactoryUtils; + +public aspect JpaExceptionTranslatorAspect { + pointcut entityManagerCall(): call(* EntityManager.*(..)) || call(* EntityManagerFactory.*(..)) || call(* EntityTransaction.*(..)) || call(* Query.*(..)); + + after() throwing(RuntimeException re): entityManagerCall() { + DataAccessException dex = EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(re); + if (dex != null) { + throw dex; + } else { + throw re; + } + } +} \ No newline at end of file diff --git a/org.springframework.aspects/template.mf b/org.springframework.aspects/template.mf index cb7efac05c2..f489268605c 100644 --- a/org.springframework.aspects/template.mf +++ b/org.springframework.aspects/template.mf @@ -6,7 +6,9 @@ Import-Template: org.apache.commons.logging.*;version="[1.1.1, 2.0.0)", org.aspectj.*;version="[1.5.4, 2.0.0)";resolution:=optional, org.springframework.beans.*;version="[3.0.0, 3.0.1)", - org.springframework.transaction.*;version="[3.0.0, 3.0.1)";resolution:=optional + org.springframework.transaction.*;version="[3.0.0, 3.0.1)";resolution:=optional, + org.springframework.orm.jpa.*;version="[3.0.0, 3.0.1)";resolution:=optional, + org.springframework.dao.*;version="[3.0.0, 3.0.1)";resolution:=optional Ignored-Existing-Headers: Bnd-LastModified, Import-Package,