From cc1573cb39ce35ce09876b3ce8176eb193204e08 Mon Sep 17 00:00:00 2001 From: Jon Brisbin Date: Wed, 6 Mar 2013 16:05:22 -0600 Subject: [PATCH] Make the `EntityManagerFactory` handling in the `JpaHelper` a little more robust. --- .../webmvc/RepositoryRestHandlerMapping.java | 5 +++-- .../data/rest/webmvc/support/JpaHelper.java | 22 +++++++++---------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/RepositoryRestHandlerMapping.java b/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/RepositoryRestHandlerMapping.java index 6c6346259..8eef4ef53 100644 --- a/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/RepositoryRestHandlerMapping.java +++ b/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/RepositoryRestHandlerMapping.java @@ -111,8 +111,9 @@ public class RepositoryRestHandlerMapping extends RequestMappingHandlerMapping { @Override protected void extendInterceptors(List interceptors) { if(null != jpaHelper) { - Object jpaInterceptor = jpaHelper.getInterceptor(); - interceptors.add(jpaInterceptor); + for(Object o : jpaHelper.getInterceptors()) { + interceptors.add(o); + } } } diff --git a/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/support/JpaHelper.java b/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/support/JpaHelper.java index d6f656603..ed4bd40b9 100644 --- a/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/support/JpaHelper.java +++ b/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/support/JpaHelper.java @@ -1,8 +1,9 @@ package org.springframework.data.rest.webmvc.support; +import java.util.ArrayList; +import java.util.List; import javax.persistence.EntityManagerFactory; -import org.springframework.beans.BeanInstantiationException; import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.BeanFactoryAware; @@ -15,26 +16,23 @@ import org.springframework.orm.jpa.support.OpenEntityManagerInViewInterceptor; */ public class JpaHelper implements BeanFactoryAware { - private Object interceptor = null; + private List interceptor = new ArrayList(); + @SuppressWarnings({"unchecked"}) @Override public void setBeanFactory(BeanFactory beanFactory) throws BeansException { String[] beanNames = BeanFactoryUtils.beanNamesForTypeIncludingAncestors( (ListableBeanFactory)beanFactory, EntityManagerFactory.class ); - if(beanNames.length != 1) { - throw new BeanInstantiationException(JpaHelper.class, - String.format("Only one EntityManagerFactory expected but %s found", - beanNames.length)); + for(String s : beanNames) { + EntityManagerFactory emf = (EntityManagerFactory)beanFactory.getBean(s); + OpenEntityManagerInViewInterceptor omivi = new OpenEntityManagerInViewInterceptor(); + omivi.setEntityManagerFactory(emf); + interceptor.add(omivi); } - String unitName = beanNames[0]; - EntityManagerFactory emf = (EntityManagerFactory)beanFactory.getBean(unitName); - OpenEntityManagerInViewInterceptor omivi = new OpenEntityManagerInViewInterceptor(); - omivi.setEntityManagerFactory(emf); - this.interceptor = omivi; } - public Object getInterceptor() { + public List getInterceptors() { return interceptor; }