From 92dd4eb3ef42fe3952ae87e67150554427e795b8 Mon Sep 17 00:00:00 2001 From: Rossen Stoyanchev Date: Wed, 16 Mar 2016 13:37:54 -0400 Subject: [PATCH] Fix NPE in ResponseBodyEmitterReturnValueHandler The possibility of NPE was introduced in the previous commit: https://github.com/spring-projects/spring-framework/commit/971ccab038ad8e549d515a80e2d64c5d4c80c86b Issue: SPR-14046 --- .../annotation/ResponseBodyEmitterReturnValueHandler.java | 8 +++++--- .../ResponseBodyEmitterReturnValueHandlerTests.java | 5 +++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/ResponseBodyEmitterReturnValueHandler.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/ResponseBodyEmitterReturnValueHandler.java index de081800bd..8d07222a17 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/ResponseBodyEmitterReturnValueHandler.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/ResponseBodyEmitterReturnValueHandler.java @@ -81,9 +81,11 @@ public class ResponseBodyEmitterReturnValueHandler implements AsyncHandlerMethod } private ResponseBodyEmitterAdapter getAdapterFor(Class type) { - for (Class adapteeType : getAdapterMap().keySet()) { - if (adapteeType.isAssignableFrom(type)) { - return getAdapterMap().get(adapteeType); + if (type != null) { + for (Class adapteeType : getAdapterMap().keySet()) { + if (adapteeType.isAssignableFrom(type)) { + return getAdapterMap().get(adapteeType); + } } } return null; diff --git a/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/annotation/ResponseBodyEmitterReturnValueHandlerTests.java b/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/annotation/ResponseBodyEmitterReturnValueHandlerTests.java index 1d287f05b4..0ac243a5a4 100644 --- a/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/annotation/ResponseBodyEmitterReturnValueHandlerTests.java +++ b/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/annotation/ResponseBodyEmitterReturnValueHandlerTests.java @@ -81,6 +81,7 @@ public class ResponseBodyEmitterReturnValueHandlerTests { assertTrue(this.handler.supportsReturnType(returnType("handleResponseEntity"))); assertFalse(this.handler.supportsReturnType(returnType("handleResponseEntityString"))); assertFalse(this.handler.supportsReturnType(returnType("handleResponseEntityParameterized"))); + assertFalse(this.handler.supportsReturnType(returnType("handleRawResponseEntity"))); } @Test @@ -229,6 +230,10 @@ public class ResponseBodyEmitterReturnValueHandlerTests { return null; } + private ResponseEntity handleRawResponseEntity() { + return null; + } + } private static class SimpleBean {