@ -1,5 +1,5 @@
@@ -1,5 +1,5 @@
/ *
* Copyright 2002 - 2010 the original author or authors .
* Copyright 2002 - 2011 the original author or authors .
*
* Licensed under the Apache License , Version 2 . 0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
@ -35,25 +35,28 @@ import org.springframework.util.Assert;
@@ -35,25 +35,28 @@ import org.springframework.util.Assert;
import org.springframework.util.ClassUtils ;
/ * *
* Bean post - processor that automatically applies persistence exception
* translation to any bean that carries the
* { @link org . springframework . stereotype . Repository } annotation ,
* adding a corresponding { @link PersistenceExceptionTranslationAdvisor }
* to the exposed proxy ( either an existing AOP proxy or a newly generated
* proxy that implements all of the target ' s interfaces ) .
* Bean post - processor that automatically applies persistence exception translation to any
* bean marked with Spring ' s @ { @link org . springframework . stereotype . Repository Repository }
* annotation , adding a corresponding { @link PersistenceExceptionTranslationAdvisor } to
* the exposed proxy ( either an existing AOP proxy or a newly generated proxy that
* implements all of the target ' s interfaces ) .
*
* < p > Translates native resource exceptions to Spring ' s
* { @link org . springframework . dao . DataAccessException } hierarchy .
* { @link org . springframework . dao . DataAccessException DataAccessException } hierarchy .
* Autodetects beans that implement the
* { @link org . springframework . dao . support . PersistenceExceptionTranslator }
* interface , which are subsequently asked to translate candidate exceptions .
* { @link org . springframework . dao . support . PersistenceExceptionTranslator
* PersistenceExceptionTranslator } interface , which are subsequently asked to translate
* candidate exceptions .
*
* < p > All of Spring ' s applicable resource factories implement the
* < code > PersistenceExceptionTranslator < / code > interface out of the box .
* As a consequence , all that is usually needed to enable automatic exception
* translation is marking all affected beans ( such as DAOs ) with the
* < code > Repository < / code > annotation , along with defining this post - processor
* as bean in the application context .
* < p > All of Spring ' s applicable resource factories ( e . g . { @link
* org . springframework . orm . hibernate3 . LocalSessionFactoryBean LocalSessionFactoryBean } ,
* { @link org . springframework . orm . jpa . LocalEntityManagerFactoryBean
* LocalEntityManagerFactoryBean } ) implement the { @code PersistenceExceptionTranslator }
* interface out of the box . As a consequence , all that is usually needed to enable
* automatic exception translation is marking all affected beans ( such as Repositories or
* DAOs ) with the { @code @Repository } annotation , along with defining this post - processor
* as a bean in the application context .
*
* @author Rod Johnson
* @author Juergen Hoeller
@ -82,7 +85,7 @@ public class PersistenceExceptionTranslationPostProcessor extends ProxyConfig
@@ -82,7 +85,7 @@ public class PersistenceExceptionTranslationPostProcessor extends ProxyConfig
* @param repositoryAnnotationType the desired annotation type
* /
public void setRepositoryAnnotationType ( Class < ? extends Annotation > repositoryAnnotationType ) {
Assert . notNull ( repositoryAnnotationType , "'required AnnotationType' must not be null" ) ;
Assert . notNull ( repositoryAnnotationType , "'repository AnnotationType' must not be null" ) ;
this . repositoryAnnotationType = repositoryAnnotationType ;
}
@ -115,7 +118,7 @@ public class PersistenceExceptionTranslationPostProcessor extends ProxyConfig
@@ -115,7 +118,7 @@ public class PersistenceExceptionTranslationPostProcessor extends ProxyConfig
// Ignore AOP infrastructure such as scoped proxies.
return bean ;
}
Class targetClass = AopUtils . getTargetClass ( bean ) ;
Class < ? > targetClass = AopUtils . getTargetClass ( bean ) ;
if ( AopUtils . canApply ( this . persistenceExceptionTranslationAdvisor , targetClass ) ) {
if ( bean instanceof Advised ) {
( ( Advised ) bean ) . addAdvisor ( this . persistenceExceptionTranslationAdvisor ) ;