Skip to content

Commit cfa124f

Browse files
committed
Revert "AbstractJackson2HttpMessageConverter"
This reverts commit 407842e.
1 parent 407842e commit cfa124f

File tree

3 files changed

+49
-14
lines changed

3 files changed

+49
-14
lines changed

spring-graphql/src/main/java/org/springframework/graphql/server/webmvc/GraphQlHttpHandler.java

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,10 @@
2929
import javax.servlet.http.HttpServletRequest;
3030
import javax.servlet.http.Part;
3131

32+
import com.fasterxml.jackson.databind.ObjectMapper;
3233
import org.apache.commons.logging.Log;
3334
import org.apache.commons.logging.LogFactory;
3435
import org.springframework.graphql.server.support.MultipartVariableMapper;
35-
import org.springframework.http.HttpHeaders;
36-
import org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter;
37-
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
38-
import org.springframework.http.converter.json.MappingJacksonInputMessage;
3936
import org.springframework.web.multipart.MultipartFile;
4037
import org.springframework.web.multipart.MultipartHttpServletRequest;
4138
import reactor.core.publisher.Mono;
@@ -79,7 +76,7 @@ public class GraphQlHttpHandler {
7976

8077
private final WebGraphQlHandler graphQlHandler;
8178

82-
private final AbstractJackson2HttpMessageConverter messageConverter;
79+
private final PartReader partReader;
8380

8481
/**
8582
* Create a new instance.
@@ -88,14 +85,14 @@ public class GraphQlHttpHandler {
8885
public GraphQlHttpHandler(WebGraphQlHandler graphQlHandler) {
8986
Assert.notNull(graphQlHandler, "WebGraphQlHandler is required");
9087
this.graphQlHandler = graphQlHandler;
91-
this.messageConverter = new MappingJackson2HttpMessageConverter();
88+
this.partReader = new JacksonPartReader(new ObjectMapper());
9289
}
9390

94-
public GraphQlHttpHandler(WebGraphQlHandler graphQlHandler, AbstractJackson2HttpMessageConverter messageConverter) {
91+
public GraphQlHttpHandler(WebGraphQlHandler graphQlHandler, PartReader partReader) {
9592
Assert.notNull(graphQlHandler, "WebGraphQlHandler is required");
96-
Assert.notNull(messageConverter, "PartConverter is required");
93+
Assert.notNull(partReader, "PartConverter is required");
9794
this.graphQlHandler = graphQlHandler;
98-
this.messageConverter = messageConverter;
95+
this.partReader = partReader;
9996
}
10097

10198
/**
@@ -141,7 +138,7 @@ public ServerResponse handleMultipartRequest(ServerRequest serverRequest) throws
141138
final Map<String, Object> queryVariables = getFromMapOrEmpty(inputQuery, "variables");
142139
final Map<String, Object> extensions = getFromMapOrEmpty(inputQuery, "extensions");
143140

144-
Map<String, MultipartFile> fileParams = getMultipartFiles(httpServletRequest);
141+
Map<String, MultipartFile> fileParams = readMultipartFiles(httpServletRequest);
145142

146143
Map<String, List<String>> fileMappings = Optional.ofNullable(this.<Map<String, List<String>>>deserializePart(
147144
httpServletRequest,
@@ -198,9 +195,7 @@ private <T> T deserializePart(HttpServletRequest httpServletRequest, String name
198195
return null;
199196
}
200197
try(InputStream inputStream = part.getInputStream()) {
201-
return (T) messageConverter.read(
202-
type, null, new MappingJacksonInputMessage(inputStream, new HttpHeaders())
203-
);
198+
return partReader.readPart(inputStream, type);
204199
} catch (IOException e) {
205200
throw new RuntimeException(e);
206201
}
@@ -217,7 +212,7 @@ private Map<String, Object> getFromMapOrEmpty(Map<String, Object> input, String
217212
}
218213
}
219214

220-
private Map<String, MultipartFile> getMultipartFiles(HttpServletRequest httpServletRequest) {
215+
private static Map<String, MultipartFile> readMultipartFiles(HttpServletRequest httpServletRequest) {
221216
Assert.isInstanceOf(MultipartHttpServletRequest.class, httpServletRequest,
222217
"Request should be of type MultipartHttpServletRequest");
223218
MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) httpServletRequest;
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package org.springframework.graphql.server.webmvc;
2+
3+
import com.fasterxml.jackson.databind.JavaType;
4+
import com.fasterxml.jackson.databind.ObjectMapper;
5+
import org.springframework.core.GenericTypeResolver;
6+
7+
import java.io.IOException;
8+
import java.io.InputStream;
9+
import java.lang.reflect.Type;
10+
11+
public class JacksonPartReader implements PartReader {
12+
13+
private final ObjectMapper objectMapper;
14+
15+
public JacksonPartReader(ObjectMapper objectMapper) {
16+
this.objectMapper = objectMapper;
17+
}
18+
19+
@Override
20+
public <T> T readPart(InputStream inputStream, Type targetType) {
21+
try {
22+
JavaType javaType = getJavaType(targetType);
23+
return objectMapper.readValue(inputStream, javaType);
24+
} catch (IOException e) {
25+
throw new RuntimeException(e);
26+
}
27+
}
28+
29+
private JavaType getJavaType(Type type) {
30+
return this.objectMapper.constructType(GenericTypeResolver.resolveType(type, (Class<?>)null));
31+
}
32+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package org.springframework.graphql.server.webmvc;
2+
3+
import java.io.InputStream;
4+
import java.lang.reflect.Type;
5+
6+
public interface PartReader {
7+
<T> T readPart(InputStream inputStream, Type targetType);
8+
}

0 commit comments

Comments
 (0)