Polishing (collapsed if checks, consistent downcasts, refined javadoc)
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2017 the original author or authors.
|
||||
* Copyright 2002-2018 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.
|
||||
@@ -112,18 +112,15 @@ public class OpenSessionInViewInterceptor implements AsyncWebRequestInterceptor
|
||||
*/
|
||||
@Override
|
||||
public void preHandle(WebRequest request) throws DataAccessException {
|
||||
String participateAttributeName = getParticipateAttributeName();
|
||||
|
||||
String key = getParticipateAttributeName();
|
||||
WebAsyncManager asyncManager = WebAsyncUtils.getAsyncManager(request);
|
||||
if (asyncManager.hasConcurrentResult()) {
|
||||
if (applySessionBindingInterceptor(asyncManager, participateAttributeName)) {
|
||||
return;
|
||||
}
|
||||
if (asyncManager.hasConcurrentResult() && applySessionBindingInterceptor(asyncManager, key)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (TransactionSynchronizationManager.hasResource(obtainSessionFactory())) {
|
||||
// Do not modify the Session: just mark the request accordingly.
|
||||
Integer count = (Integer) request.getAttribute(participateAttributeName, WebRequest.SCOPE_REQUEST);
|
||||
Integer count = (Integer) request.getAttribute(key, WebRequest.SCOPE_REQUEST);
|
||||
int newCount = (count != null ? count + 1 : 1);
|
||||
request.setAttribute(getParticipateAttributeName(), newCount, WebRequest.SCOPE_REQUEST);
|
||||
}
|
||||
@@ -135,8 +132,8 @@ public class OpenSessionInViewInterceptor implements AsyncWebRequestInterceptor
|
||||
|
||||
AsyncRequestInterceptor asyncRequestInterceptor =
|
||||
new AsyncRequestInterceptor(obtainSessionFactory(), sessionHolder);
|
||||
asyncManager.registerCallableInterceptor(participateAttributeName, asyncRequestInterceptor);
|
||||
asyncManager.registerDeferredResultInterceptor(participateAttributeName, asyncRequestInterceptor);
|
||||
asyncManager.registerCallableInterceptor(key, asyncRequestInterceptor);
|
||||
asyncManager.registerDeferredResultInterceptor(key, asyncRequestInterceptor);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2017 the original author or authors.
|
||||
* Copyright 2002-2018 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.
|
||||
@@ -106,10 +106,9 @@ public abstract class EntityManagerFactoryUtils {
|
||||
BeanFactoryUtils.beanNamesForTypeIncludingAncestors(beanFactory, EntityManagerFactory.class);
|
||||
for (String candidateName : candidateNames) {
|
||||
EntityManagerFactory emf = (EntityManagerFactory) beanFactory.getBean(candidateName);
|
||||
if (emf instanceof EntityManagerFactoryInfo) {
|
||||
if (unitName.equals(((EntityManagerFactoryInfo) emf).getPersistenceUnitName())) {
|
||||
return emf;
|
||||
}
|
||||
if (emf instanceof EntityManagerFactoryInfo &&
|
||||
unitName.equals(((EntityManagerFactoryInfo) emf).getPersistenceUnitName())) {
|
||||
return emf;
|
||||
}
|
||||
}
|
||||
// No matching persistence unit found - simply take the EntityManagerFactory
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2017 the original author or authors.
|
||||
* Copyright 2002-2018 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.
|
||||
@@ -69,18 +69,16 @@ public class OpenEntityManagerInViewInterceptor extends EntityManagerFactoryAcce
|
||||
|
||||
@Override
|
||||
public void preHandle(WebRequest request) throws DataAccessException {
|
||||
String participateAttributeName = getParticipateAttributeName();
|
||||
String key = getParticipateAttributeName();
|
||||
WebAsyncManager asyncManager = WebAsyncUtils.getAsyncManager(request);
|
||||
if (asyncManager.hasConcurrentResult()) {
|
||||
if (applyEntityManagerBindingInterceptor(asyncManager, participateAttributeName)) {
|
||||
return;
|
||||
}
|
||||
if (asyncManager.hasConcurrentResult() && applyEntityManagerBindingInterceptor(asyncManager, key)) {
|
||||
return;
|
||||
}
|
||||
|
||||
EntityManagerFactory emf = obtainEntityManagerFactory();
|
||||
if (TransactionSynchronizationManager.hasResource(emf)) {
|
||||
// Do not modify the EntityManager: just mark the request accordingly.
|
||||
Integer count = (Integer) request.getAttribute(participateAttributeName, WebRequest.SCOPE_REQUEST);
|
||||
Integer count = (Integer) request.getAttribute(key, WebRequest.SCOPE_REQUEST);
|
||||
int newCount = (count != null ? count + 1 : 1);
|
||||
request.setAttribute(getParticipateAttributeName(), newCount, WebRequest.SCOPE_REQUEST);
|
||||
}
|
||||
@@ -92,8 +90,8 @@ public class OpenEntityManagerInViewInterceptor extends EntityManagerFactoryAcce
|
||||
TransactionSynchronizationManager.bindResource(emf, emHolder);
|
||||
|
||||
AsyncRequestInterceptor interceptor = new AsyncRequestInterceptor(emf, emHolder);
|
||||
asyncManager.registerCallableInterceptor(participateAttributeName, interceptor);
|
||||
asyncManager.registerDeferredResultInterceptor(participateAttributeName, interceptor);
|
||||
asyncManager.registerCallableInterceptor(key, interceptor);
|
||||
asyncManager.registerDeferredResultInterceptor(key, interceptor);
|
||||
}
|
||||
catch (PersistenceException ex) {
|
||||
throw new DataAccessResourceFailureException("Could not create JPA EntityManager", ex);
|
||||
|
||||
Reference in New Issue
Block a user