parent
e038631a6d
commit
c15d687bf0
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2016 the original author or authors.
|
||||
* Copyright 2002-2017 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.
|
||||
|
@ -22,6 +22,7 @@ import java.util.concurrent.Future;
|
|||
* Extend {@link Future} with the capability to accept completion callbacks.
|
||||
* If the future has completed when the callback is added, the callback is
|
||||
* triggered immediately.
|
||||
*
|
||||
* <p>Inspired by {@code com.google.common.util.concurrent.ListenableFuture}.
|
||||
*
|
||||
* @author Arjen Poutsma
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2014 the original author or authors.
|
||||
* Copyright 2002-2017 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.
|
||||
|
@ -50,12 +50,12 @@ import org.springframework.transaction.support.TransactionSynchronizationManager
|
|||
*
|
||||
* <p>Application code is required to retrieve the transactional JMS Session via
|
||||
* {@link ConnectionFactoryUtils#getTransactionalSession} instead of a standard
|
||||
* J2EE-style {@link ConnectionFactory#createConnection()} call with subsequent
|
||||
* Java EE-style {@link ConnectionFactory#createConnection()} call with subsequent
|
||||
* Session creation. Spring's {@link org.springframework.jms.core.JmsTemplate}
|
||||
* will autodetect a thread-bound Session and automatically participate in it.
|
||||
*
|
||||
* <p>Alternatively, you can allow application code to work with the standard
|
||||
* J2EE-style lookup pattern on a ConnectionFactory, for example for legacy code
|
||||
* Java EE-style lookup pattern on a ConnectionFactory, for example for legacy code
|
||||
* that is not aware of Spring at all. In that case, define a
|
||||
* {@link TransactionAwareConnectionFactoryProxy} for your target ConnectionFactory,
|
||||
* which will automatically participate in Spring-managed transactions.
|
||||
|
@ -226,8 +226,7 @@ public class JmsTransactionManager extends AbstractPlatformTransactionManager
|
|||
|
||||
@Override
|
||||
protected void doResume(Object transaction, Object suspendedResources) {
|
||||
JmsResourceHolder conHolder = (JmsResourceHolder) suspendedResources;
|
||||
TransactionSynchronizationManager.bindResource(getConnectionFactory(), conHolder);
|
||||
TransactionSynchronizationManager.bindResource(getConnectionFactory(), suspendedResources);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2014 the original author or authors.
|
||||
* Copyright 2002-2017 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.
|
||||
|
@ -144,7 +144,6 @@ public class OpenSessionInViewInterceptor implements AsyncWebRequestInterceptor
|
|||
(SessionHolder) TransactionSynchronizationManager.unbindResource(getSessionFactory());
|
||||
logger.debug("Closing Hibernate Session in OpenSessionInViewInterceptor");
|
||||
SessionFactoryUtils.closeSession(sessionHolder.getSession());
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2016 the original author or authors.
|
||||
* Copyright 2002-2017 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.
|
||||
|
@ -144,7 +144,6 @@ public class OpenSessionInViewInterceptor implements AsyncWebRequestInterceptor
|
|||
(SessionHolder) TransactionSynchronizationManager.unbindResource(getSessionFactory());
|
||||
logger.debug("Closing Hibernate Session in OpenSessionInViewInterceptor");
|
||||
SessionFactoryUtils.closeSession(sessionHolder.getSession());
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2016 the original author or authors.
|
||||
* Copyright 2002-2017 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.
|
||||
|
@ -118,9 +118,7 @@ public class ContentNegotiationManager implements ContentNegotiationStrategy, Me
|
|||
}
|
||||
|
||||
@Override
|
||||
public List<MediaType> resolveMediaTypes(NativeWebRequest request)
|
||||
throws HttpMediaTypeNotAcceptableException {
|
||||
|
||||
public List<MediaType> resolveMediaTypes(NativeWebRequest request) throws HttpMediaTypeNotAcceptableException {
|
||||
for (ContentNegotiationStrategy strategy : this.strategies) {
|
||||
List<MediaType> mediaTypes = strategy.resolveMediaTypes(request);
|
||||
if (mediaTypes.isEmpty() || mediaTypes.equals(MEDIA_TYPE_ALL)) {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2016 the original author or authors.
|
||||
* Copyright 2002-2017 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.
|
||||
|
@ -59,7 +59,7 @@ import org.springframework.web.util.WebUtils;
|
|||
*
|
||||
* <p>This base class provides an {@code @ExceptionHandler} method for handling
|
||||
* internal Spring MVC exceptions. This method returns a {@code ResponseEntity}
|
||||
* for writing to the response with a {@link HttpMessageConverter message converter}.
|
||||
* for writing to the response with a {@link HttpMessageConverter message converter},
|
||||
* in contrast to
|
||||
* {@link org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver
|
||||
* DefaultHandlerExceptionResolver} which returns a
|
||||
|
@ -479,10 +479,13 @@ public abstract class ResponseEntityExceptionHandler {
|
|||
HttpServletRequest request = servletRequest.getNativeRequest(HttpServletRequest.class);
|
||||
HttpServletResponse response = servletRequest.getNativeResponse(HttpServletResponse.class);
|
||||
if (response.isCommitted()) {
|
||||
logger.error("Async timeout for " + request.getMethod() + " [" + request.getRequestURI() + "]");
|
||||
if (logger.isErrorEnabled()) {
|
||||
logger.error("Async timeout for " + request.getMethod() + " [" + request.getRequestURI() + "]");
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
return handleExceptionInternal(ex, null, headers, status, webRequest);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2015 the original author or authors.
|
||||
* Copyright 2002-2017 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.
|
||||
|
@ -87,7 +87,7 @@ public class ComplexWebApplicationContext extends StaticWebApplicationContext {
|
|||
ThemeChangeInterceptor interceptor4 = new ThemeChangeInterceptor();
|
||||
interceptor4.setParamName("theme2");
|
||||
UserRoleAuthorizationInterceptor interceptor5 = new UserRoleAuthorizationInterceptor();
|
||||
interceptor5.setAuthorizedRoles(new String[] {"role1", "role2"});
|
||||
interceptor5.setAuthorizedRoles("role1", "role2");
|
||||
|
||||
List<Object> interceptors = new ArrayList<>();
|
||||
interceptors.add(interceptor5);
|
||||
|
@ -100,8 +100,7 @@ public class ComplexWebApplicationContext extends StaticWebApplicationContext {
|
|||
interceptors.add(new MyWebRequestInterceptor());
|
||||
|
||||
MutablePropertyValues pvs = new MutablePropertyValues();
|
||||
pvs.add(
|
||||
"mappings", "/view.do=viewHandler\n/locale.do=localeHandler\nloc.do=anotherLocaleHandler");
|
||||
pvs.add("mappings", "/view.do=viewHandler\n/locale.do=localeHandler\nloc.do=anotherLocaleHandler");
|
||||
pvs.add("interceptors", interceptors);
|
||||
registerSingleton("myUrlMapping1", SimpleUrlHandlerMapping.class, pvs);
|
||||
|
||||
|
@ -124,7 +123,7 @@ public class ComplexWebApplicationContext extends StaticWebApplicationContext {
|
|||
registerSingleton("noviewController", NoViewController.class);
|
||||
|
||||
pvs = new MutablePropertyValues();
|
||||
pvs.add("order", new Integer(0));
|
||||
pvs.add("order", 0);
|
||||
pvs.add("basename", "org.springframework.web.servlet.complexviews");
|
||||
registerSingleton("viewResolver", ResourceBundleViewResolver.class, pvs);
|
||||
|
||||
|
@ -150,8 +149,8 @@ public class ComplexWebApplicationContext extends StaticWebApplicationContext {
|
|||
pvs = new MutablePropertyValues();
|
||||
pvs.add("order", "1");
|
||||
pvs.add("exceptionMappings",
|
||||
"java.lang.IllegalAccessException=failed2\n" +
|
||||
"ServletRequestBindingException=failed3");
|
||||
"java.lang.IllegalAccessException=failed2\n" +
|
||||
"ServletRequestBindingException=failed3");
|
||||
pvs.add("defaultErrorView", "failed0");
|
||||
registerSingleton("exceptionResolver1", SimpleMappingExceptionResolver.class, pvs);
|
||||
|
||||
|
@ -237,11 +236,11 @@ public class ComplexWebApplicationContext extends StaticWebApplicationContext {
|
|||
}
|
||||
|
||||
|
||||
public static interface MyHandler {
|
||||
public interface MyHandler {
|
||||
|
||||
public void doSomething(HttpServletRequest request) throws ServletException, IllegalAccessException;
|
||||
void doSomething(HttpServletRequest request) throws ServletException, IllegalAccessException;
|
||||
|
||||
public long lastModified();
|
||||
long lastModified();
|
||||
}
|
||||
|
||||
|
||||
|
@ -259,7 +258,8 @@ public class ComplexWebApplicationContext extends StaticWebApplicationContext {
|
|||
|
||||
@Override
|
||||
public ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object delegate)
|
||||
throws ServletException, IllegalAccessException {
|
||||
throws ServletException, IllegalAccessException {
|
||||
|
||||
((MyHandler) delegate).doSomething(request);
|
||||
return null;
|
||||
}
|
||||
|
@ -295,7 +295,8 @@ public class ComplexWebApplicationContext extends StaticWebApplicationContext {
|
|||
|
||||
@Override
|
||||
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
|
||||
throws ServletException {
|
||||
throws ServletException {
|
||||
|
||||
if (request.getAttribute("test2") != null) {
|
||||
throw new ServletException("Wrong interceptor order");
|
||||
}
|
||||
|
@ -309,6 +310,7 @@ public class ComplexWebApplicationContext extends StaticWebApplicationContext {
|
|||
public void postHandle(
|
||||
HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)
|
||||
throws ServletException {
|
||||
|
||||
if (request.getAttribute("test2x") != null) {
|
||||
throw new ServletException("Wrong interceptor order");
|
||||
}
|
||||
|
@ -322,9 +324,13 @@ public class ComplexWebApplicationContext extends StaticWebApplicationContext {
|
|||
public void afterCompletion(
|
||||
HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
|
||||
throws ServletException {
|
||||
|
||||
if (request.getAttribute("test2y") != null) {
|
||||
throw new ServletException("Wrong interceptor order");
|
||||
}
|
||||
if (request.getAttribute("test1y") == null) {
|
||||
throw new ServletException("afterCompletion invoked twice");
|
||||
}
|
||||
request.removeAttribute("test1y");
|
||||
}
|
||||
}
|
||||
|
@ -334,7 +340,8 @@ public class ComplexWebApplicationContext extends StaticWebApplicationContext {
|
|||
|
||||
@Override
|
||||
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
|
||||
throws ServletException {
|
||||
throws ServletException {
|
||||
|
||||
if (request.getAttribute("test1x") == null) {
|
||||
throw new ServletException("Wrong interceptor order");
|
||||
}
|
||||
|
@ -351,6 +358,7 @@ public class ComplexWebApplicationContext extends StaticWebApplicationContext {
|
|||
public void postHandle(
|
||||
HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)
|
||||
throws ServletException {
|
||||
|
||||
if (request.getParameter("noView") != null) {
|
||||
modelAndView.clear();
|
||||
}
|
||||
|
@ -367,9 +375,13 @@ public class ComplexWebApplicationContext extends StaticWebApplicationContext {
|
|||
public void afterCompletion(
|
||||
HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
|
||||
throws Exception {
|
||||
|
||||
if (request.getAttribute("test1y") == null) {
|
||||
throw new ServletException("Wrong interceptor order");
|
||||
}
|
||||
if (request.getAttribute("test2y") == null) {
|
||||
throw new ServletException("afterCompletion invoked twice");
|
||||
}
|
||||
request.removeAttribute("test2y");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2014 the original author or authors.
|
||||
* Copyright 2002-2017 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.
|
||||
|
@ -60,6 +60,7 @@ public class ServletRequestMethodArgumentResolverTests {
|
|||
|
||||
private MockHttpServletRequest servletRequest;
|
||||
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
method = getClass().getMethod("supportedParams", ServletRequest.class, MultipartRequest.class,
|
||||
|
@ -70,6 +71,7 @@ public class ServletRequestMethodArgumentResolverTests {
|
|||
webRequest = new ServletWebRequest(servletRequest, new MockHttpServletResponse());
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void servletRequest() throws Exception {
|
||||
MethodParameter servletRequestParameter = new MethodParameter(method, 0);
|
||||
|
|
Loading…
Reference in New Issue