Skip to content

Commit 6e4fcb6

Browse files
committed
Polishing
1 parent 392ad09 commit 6e4fcb6

File tree

14 files changed

+84
-93
lines changed

14 files changed

+84
-93
lines changed

spring-core/src/main/java/org/springframework/util/ObjectUtils.java

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2002-2019 the original author or authors.
2+
* Copyright 2002-2020 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -132,14 +132,13 @@ public static boolean isEmpty(@Nullable Object[] array) {
132132
* @see CollectionUtils#isEmpty(java.util.Collection)
133133
* @see CollectionUtils#isEmpty(java.util.Map)
134134
*/
135-
@SuppressWarnings("rawtypes")
136135
public static boolean isEmpty(@Nullable Object obj) {
137136
if (obj == null) {
138137
return true;
139138
}
140139

141140
if (obj instanceof Optional) {
142-
return !((Optional) obj).isPresent();
141+
return !((Optional<?>) obj).isPresent();
143142
}
144143
if (obj instanceof CharSequence) {
145144
return ((CharSequence) obj).length() == 0;
@@ -148,10 +147,10 @@ public static boolean isEmpty(@Nullable Object obj) {
148147
return Array.getLength(obj) == 0;
149148
}
150149
if (obj instanceof Collection) {
151-
return ((Collection) obj).isEmpty();
150+
return ((Collection<?>) obj).isEmpty();
152151
}
153152
if (obj instanceof Map) {
154-
return ((Map) obj).isEmpty();
153+
return ((Map<?, ?>) obj).isEmpty();
155154
}
156155

157156
// else
@@ -611,9 +610,7 @@ public static String identityToString(@Nullable Object obj) {
611610
if (obj == null) {
612611
return EMPTY_STRING;
613612
}
614-
String className = obj.getClass().getName();
615-
String identityHexString = getIdentityHexString(obj);
616-
return className + '@' + identityHexString;
613+
return obj.getClass().getName() + "@" + getIdentityHexString(obj);
617614
}
618615

619616
/**

spring-jms/src/main/java/org/springframework/jms/support/converter/MappingJackson2MessageConverter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -457,11 +457,11 @@ protected JavaType getJavaTypeForMessage(Message message) throws JMSException {
457457
}
458458
Class<?> mappedClass = this.idClassMappings.get(typeId);
459459
if (mappedClass != null) {
460-
return this.objectMapper.getTypeFactory().constructType(mappedClass);
460+
return this.objectMapper.constructType(mappedClass);
461461
}
462462
try {
463463
Class<?> typeClass = ClassUtils.forName(typeId, this.beanClassLoader);
464-
return this.objectMapper.getTypeFactory().constructType(typeClass);
464+
return this.objectMapper.constructType(typeClass);
465465
}
466466
catch (Throwable ex) {
467467
throw new MessageConversionException("Failed to resolve type id [" + typeId + "]", ex);

spring-messaging/src/main/java/org/springframework/messaging/converter/AbstractMessageConverter.java

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2002-2019 the original author or authors.
2+
* Copyright 2002-2020 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -92,7 +92,7 @@ public List<MimeType> getSupportedMimeTypes() {
9292
}
9393

9494
/**
95-
* Allows sub-classes to add more supported mime types.
95+
* Allows subclasses to add more supported mime types.
9696
* @since 5.2.2
9797
*/
9898
protected void addSupportedMimeTypes(MimeType... supportedMimeTypes) {
@@ -167,21 +167,6 @@ public Class<?> getSerializedPayloadClass() {
167167
}
168168

169169

170-
/**
171-
* Returns the default content type for the payload. Called when
172-
* {@link #toMessage(Object, MessageHeaders)} is invoked without message headers or
173-
* without a content type header.
174-
* <p>By default, this returns the first element of the {@link #getSupportedMimeTypes()
175-
* supportedMimeTypes}, if any. Can be overridden in sub-classes.
176-
* @param payload the payload being converted to message
177-
* @return the content type, or {@code null} if not known
178-
*/
179-
@Nullable
180-
protected MimeType getDefaultContentType(Object payload) {
181-
List<MimeType> mimeTypes = getSupportedMimeTypes();
182-
return (!mimeTypes.isEmpty() ? mimeTypes.get(0) : null);
183-
}
184-
185170
@Override
186171
@Nullable
187172
public final Object fromMessage(Message<?> message, Class<?> targetClass) {
@@ -197,10 +182,6 @@ public final Object fromMessage(Message<?> message, Class<?> targetClass, @Nulla
197182
return convertFromInternal(message, targetClass, conversionHint);
198183
}
199184

200-
protected boolean canConvertFrom(Message<?> message, Class<?> targetClass) {
201-
return (supports(targetClass) && supportsMimeType(message.getHeaders()));
202-
}
203-
204185
@Override
205186
@Nullable
206187
public final Message<?> toMessage(Object payload, @Nullable MessageHeaders headers) {
@@ -240,6 +221,11 @@ public final Message<?> toMessage(Object payload, @Nullable MessageHeaders heade
240221
return builder.build();
241222
}
242223

224+
225+
protected boolean canConvertFrom(Message<?> message, Class<?> targetClass) {
226+
return (supports(targetClass) && supportsMimeType(message.getHeaders()));
227+
}
228+
243229
protected boolean canConvertTo(Object payload, @Nullable MessageHeaders headers) {
244230
return (supports(payload.getClass()) && supportsMimeType(headers));
245231
}
@@ -265,6 +251,22 @@ protected MimeType getMimeType(@Nullable MessageHeaders headers) {
265251
return (headers != null && this.contentTypeResolver != null ? this.contentTypeResolver.resolve(headers) : null);
266252
}
267253

254+
/**
255+
* Return the default content type for the payload. Called when
256+
* {@link #toMessage(Object, MessageHeaders)} is invoked without
257+
* message headers or without a content type header.
258+
* <p>By default, this returns the first element of the
259+
* {@link #getSupportedMimeTypes() supportedMimeTypes}, if any.
260+
* Can be overridden in subclasses.
261+
* @param payload the payload being converted to a message
262+
* @return the content type, or {@code null} if not known
263+
*/
264+
@Nullable
265+
protected MimeType getDefaultContentType(Object payload) {
266+
List<MimeType> mimeTypes = getSupportedMimeTypes();
267+
return (!mimeTypes.isEmpty() ? mimeTypes.get(0) : null);
268+
}
269+
268270

269271
/**
270272
* Whether the given class is supported by this converter.

spring-messaging/src/main/java/org/springframework/messaging/converter/MappingJackson2MessageConverter.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import org.springframework.messaging.Message;
4242
import org.springframework.messaging.MessageHeaders;
4343
import org.springframework.util.Assert;
44+
import org.springframework.util.ClassUtils;
4445
import org.springframework.util.MimeType;
4546

4647
/**
@@ -139,6 +140,7 @@ private void configurePrettyPrint() {
139140
}
140141
}
141142

143+
142144
@Override
143145
protected boolean canConvertFrom(Message<?> message, @Nullable Class<?> targetClass) {
144146
if (targetClass == null || !supportsMimeType(message.getHeaders())) {
@@ -210,7 +212,7 @@ protected Object convertFromInternal(Message<?> message, Class<?> targetClass, @
210212
Object payload = message.getPayload();
211213
Class<?> view = getSerializationView(conversionHint);
212214
try {
213-
if (targetClass.isInstance(payload)) {
215+
if (ClassUtils.isAssignableValue(targetClass, payload)) {
214216
return payload;
215217
}
216218
else if (payload instanceof byte[]) {
@@ -246,7 +248,7 @@ private JavaType getJavaType(Class<?> targetClass, @Nullable Object conversionHi
246248
Type genericParameterType = param.getNestedGenericParameterType();
247249
Class<?> contextClass = param.getContainingClass();
248250
Type type = GenericTypeResolver.resolveType(genericParameterType, contextClass);
249-
return this.objectMapper.getTypeFactory().constructType(type);
251+
return this.objectMapper.constructType(type);
250252
}
251253
return this.objectMapper.constructType(targetClass);
252254
}
@@ -331,7 +333,7 @@ private Class<?> extractViewClass(JsonView annotation, Object conversionHint) {
331333
* @return the JSON encoding to use (never {@code null})
332334
*/
333335
protected JsonEncoding getJsonEncoding(@Nullable MimeType contentType) {
334-
if (contentType != null && (contentType.getCharset() != null)) {
336+
if (contentType != null && contentType.getCharset() != null) {
335337
Charset charset = contentType.getCharset();
336338
for (JsonEncoding encoding : JsonEncoding.values()) {
337339
if (charset.name().equals(encoding.getJavaName())) {

spring-messaging/src/main/java/org/springframework/messaging/converter/MarshallingMessageConverter.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@
4646
*
4747
* @author Arjen Poutsma
4848
* @since 4.2
49+
* @see Marshaller
50+
* @see Unmarshaller
4951
*/
5052
public class MarshallingMessageConverter extends AbstractMessageConverter {
5153

@@ -61,7 +63,8 @@ public class MarshallingMessageConverter extends AbstractMessageConverter {
6163
* {@link #setUnmarshaller(Unmarshaller)} to be invoked separately.
6264
*/
6365
public MarshallingMessageConverter() {
64-
this(new MimeType("application", "xml"), new MimeType("text", "xml"), new MimeType("application", "*+xml"));
66+
this(new MimeType("application", "xml"), new MimeType("text", "xml"),
67+
new MimeType("application", "*+xml"));
6568
}
6669

6770
/**
@@ -160,7 +163,7 @@ private Source getSource(Object payload) {
160163
return new StreamSource(new ByteArrayInputStream((byte[]) payload));
161164
}
162165
else {
163-
return new StreamSource(new StringReader((String) payload));
166+
return new StreamSource(new StringReader(payload.toString()));
164167
}
165168
}
166169

spring-messaging/src/main/java/org/springframework/messaging/converter/ProtobufMessageConverter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,9 +120,9 @@ protected boolean supports(Class<?> clazz) {
120120

121121
@Override
122122
protected boolean canConvertTo(Object payload, @Nullable MessageHeaders headers) {
123-
MimeType mimeType = getMimeType(headers);
123+
MimeType contentType = getMimeType(headers);
124124
return (super.canConvertTo(payload, headers) ||
125-
this.protobufFormatSupport != null && this.protobufFormatSupport.supportsWriteOnly(mimeType));
125+
this.protobufFormatSupport != null && this.protobufFormatSupport.supportsWriteOnly(contentType));
126126
}
127127

128128
@Override

spring-messaging/src/test/java/org/springframework/messaging/converter/MappingJackson2MessageConverterTests.java

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2002-2019 the original author or authors.
2+
* Copyright 2002-2020 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -48,10 +48,9 @@ public class MappingJackson2MessageConverterTests {
4848
@Test
4949
public void defaultConstructor() {
5050
MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();
51-
assertThat(converter.getSupportedMimeTypes())
52-
.contains(new MimeType("application", "json"));
51+
assertThat(converter.getSupportedMimeTypes()).contains(new MimeType("application", "json"));
5352
assertThat(converter.getObjectMapper().getDeserializationConfig()
54-
.isEnabled(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)).isFalse();
53+
.isEnabled(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)).isFalse();
5554
}
5655

5756
@Test // SPR-12724
@@ -60,7 +59,7 @@ public void mimetypeParametrizedConstructor() {
6059
MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter(mimetype);
6160
assertThat(converter.getSupportedMimeTypes()).contains(mimetype);
6261
assertThat(converter.getObjectMapper().getDeserializationConfig()
63-
.isEnabled(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)).isFalse();
62+
.isEnabled(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)).isFalse();
6463
}
6564

6665
@Test // SPR-12724
@@ -70,19 +69,14 @@ public void mimetypesParametrizedConstructor() {
7069
MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter(jsonMimetype, xmlMimetype);
7170
assertThat(converter.getSupportedMimeTypes()).contains(jsonMimetype, xmlMimetype);
7271
assertThat(converter.getObjectMapper().getDeserializationConfig()
73-
.isEnabled(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)).isFalse();
72+
.isEnabled(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)).isFalse();
7473
}
7574

7675
@Test
7776
public void fromMessage() {
7877
MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();
79-
String payload = "{" +
80-
"\"bytes\":\"AQI=\"," +
81-
"\"array\":[\"Foo\",\"Bar\"]," +
82-
"\"number\":42," +
83-
"\"string\":\"Foo\"," +
84-
"\"bool\":true," +
85-
"\"fraction\":42.0}";
78+
String payload = "{\"bytes\":\"AQI=\",\"array\":[\"Foo\",\"Bar\"]," +
79+
"\"number\":42,\"string\":\"Foo\",\"bool\":true,\"fraction\":42.0}";
8680
Message<?> message = MessageBuilder.withPayload(payload.getBytes(StandardCharsets.UTF_8)).build();
8781
MyBean actual = (MyBean) converter.fromMessage(message, MyBean.class);
8882

@@ -97,8 +91,8 @@ public void fromMessage() {
9791
@Test
9892
public void fromMessageUntyped() {
9993
MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();
100-
String payload = "{\"bytes\":\"AQI=\",\"array\":[\"Foo\",\"Bar\"],"
101-
+ "\"number\":42,\"string\":\"Foo\",\"bool\":true,\"fraction\":42.0}";
94+
String payload = "{\"bytes\":\"AQI=\",\"array\":[\"Foo\",\"Bar\"]," +
95+
"\"number\":42,\"string\":\"Foo\",\"bool\":true,\"fraction\":42.0}";
10296
Message<?> message = MessageBuilder.withPayload(payload.getBytes(StandardCharsets.UTF_8)).build();
10397
@SuppressWarnings("unchecked")
10498
HashMap<String, Object> actual = (HashMap<String, Object>) converter.fromMessage(message, HashMap.class);
@@ -111,7 +105,7 @@ public void fromMessageUntyped() {
111105
assertThat(actual.get("bytes")).isEqualTo("AQI=");
112106
}
113107

114-
@Test // gh-22386
108+
@Test // gh-22386
115109
public void fromMessageMatchingInstance() {
116110
MyBean myBean = new MyBean();
117111
MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();
@@ -137,7 +131,7 @@ public void fromMessageValidJsonWithUnknownProperty() {
137131
assertThat(myBean.getString()).isEqualTo("string");
138132
}
139133

140-
@Test // SPR-16252
134+
@Test // SPR-16252
141135
public void fromMessageToList() throws Exception {
142136
MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();
143137
String payload = "[1, 2, 3, 4, 5, 6, 7, 8, 9]";
@@ -151,7 +145,7 @@ public void fromMessageToList() throws Exception {
151145
assertThat(actual).isEqualTo(Arrays.asList(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L));
152146
}
153147

154-
@Test // SPR-16486
148+
@Test // SPR-16486
155149
public void fromMessageToMessageWithPojo() throws Exception {
156150
MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();
157151
String payload = "{\"string\":\"foo\"}";
@@ -198,7 +192,7 @@ public void toMessageUtf16() {
198192
String payload = "H\u00e9llo W\u00f6rld";
199193
Message<?> message = converter.toMessage(payload, headers);
200194

201-
assertThat(new String((byte[]) message.getPayload(), StandardCharsets.UTF_16BE)).isEqualTo(("\"" + payload + "\""));
195+
assertThat(new String((byte[]) message.getPayload(), StandardCharsets.UTF_16BE)).isEqualTo("\"" + payload + "\"");
202196
assertThat(message.getHeaders().get(MessageHeaders.CONTENT_TYPE)).isEqualTo(contentType);
203197
}
204198

@@ -214,7 +208,7 @@ public void toMessageUtf16String() {
214208
String payload = "H\u00e9llo W\u00f6rld";
215209
Message<?> message = converter.toMessage(payload, headers);
216210

217-
assertThat(message.getPayload()).isEqualTo(("\"" + payload + "\""));
211+
assertThat(message.getPayload()).isEqualTo("\"" + payload + "\"");
218212
assertThat(message.getHeaders().get(MessageHeaders.CONTENT_TYPE)).isEqualTo(contentType);
219213
}
220214

@@ -254,9 +248,12 @@ public JacksonViewBean jsonViewResponse() {
254248
public void jsonViewPayload(@JsonView(MyJacksonView2.class) JacksonViewBean payload) {
255249
}
256250

257-
void handleList(List<Long> payload) {}
251+
void handleList(List<Long> payload) {
252+
}
253+
254+
void handleMessage(Message<MyBean> message) {
255+
}
258256

259-
void handleMessage(Message<MyBean> message) {}
260257

261258
public static class MyBean {
262259

spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Decoder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ public int getMaxInMemorySize() {
9797

9898
@Override
9999
public boolean canDecode(ResolvableType elementType, @Nullable MimeType mimeType) {
100-
JavaType javaType = getObjectMapper().getTypeFactory().constructType(elementType.getType());
100+
JavaType javaType = getObjectMapper().constructType(elementType.getType());
101101
// Skip String: CharSequenceDecoder + "*/*" comes after
102102
return (!CharSequence.class.isAssignableFrom(elementType.toClass()) &&
103103
getObjectMapper().canDeserialize(javaType) && supportsMimeType(mimeType));

spring-web/src/main/java/org/springframework/http/codec/json/Jackson2CodecSupport.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
import com.fasterxml.jackson.annotation.JsonView;
2828
import com.fasterxml.jackson.databind.JavaType;
2929
import com.fasterxml.jackson.databind.ObjectMapper;
30-
import com.fasterxml.jackson.databind.type.TypeFactory;
3130
import org.apache.commons.logging.Log;
3231

3332
import org.springframework.core.GenericTypeResolver;
@@ -111,8 +110,7 @@ protected boolean supportsMimeType(@Nullable MimeType mimeType) {
111110
}
112111

113112
protected JavaType getJavaType(Type type, @Nullable Class<?> contextClass) {
114-
TypeFactory typeFactory = this.objectMapper.getTypeFactory();
115-
return typeFactory.constructType(GenericTypeResolver.resolveType(type, contextClass));
113+
return this.objectMapper.constructType(GenericTypeResolver.resolveType(type, contextClass));
116114
}
117115

118116
protected Map<String, Object> getHints(ResolvableType resolvableType) {

spring-web/src/main/java/org/springframework/http/converter/HttpMessageConverter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2002-2018 the original author or authors.
2+
* Copyright 2002-2020 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -25,7 +25,7 @@
2525
import org.springframework.lang.Nullable;
2626

2727
/**
28-
* Strategy interface that specifies a converter that can convert from and to HTTP requests and responses.
28+
* Strategy interface for converting from and to HTTP requests and responses.
2929
*
3030
* @author Arjen Poutsma
3131
* @author Juergen Hoeller

0 commit comments

Comments
 (0)