Skip to content

Commit bfeca4a

Browse files
committed
Polish contribution
See gh-30744
1 parent 4979d8f commit bfeca4a

File tree

3 files changed

+62
-47
lines changed

3 files changed

+62
-47
lines changed

spring-core/src/main/java/org/springframework/core/serializer/DefaultDeserializer.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,8 @@ public DefaultDeserializer(@Nullable ClassLoader classLoader) {
6767
@Override
6868
@SuppressWarnings("resource")
6969
public Object deserialize(InputStream inputStream) throws IOException {
70-
try (ConfigurableObjectInputStream objectInputStream = new ConfigurableObjectInputStream(inputStream, this.classLoader)){
70+
ObjectInputStream objectInputStream = new ConfigurableObjectInputStream(inputStream, this.classLoader);
71+
try {
7172
return objectInputStream.readObject();
7273
}
7374
catch (ClassNotFoundException ex) {

spring-core/src/test/java/org/springframework/core/serializer/SerializationConverterTests.java

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -31,27 +31,28 @@
3131

3232
import static org.assertj.core.api.Assertions.assertThat;
3333
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
34-
import static org.assertj.core.api.Assertions.assertThatThrownBy;
34+
import static org.assertj.core.api.Assertions.assertThatIOException;
3535
import static org.mockito.BDDMockito.given;
3636

37-
3837
/**
38+
* Unit tests for {@link SerializingConverter} and {@link DeserializingConverter}.
39+
*
3940
* @author Gary Russell
4041
* @author Mark Fisher
4142
* @since 3.0.5
4243
*/
4344
class SerializationConverterTests {
4445

4546
@Test
46-
void serializeAndDeserializeString() {
47+
void serializeAndDeserializeStringWithDefaultSerializer() {
4748
SerializingConverter toBytes = new SerializingConverter();
4849
byte[] bytes = toBytes.convert("Testing");
4950
DeserializingConverter fromBytes = new DeserializingConverter();
5051
assertThat(fromBytes.convert(bytes)).isEqualTo("Testing");
5152
}
5253

5354
@Test
54-
void serializeAndDeserializeStringWithCustomSerializer() {
55+
void serializeAndDeserializeStringWithExplicitSerializer() {
5556
SerializingConverter toBytes = new SerializingConverter(new DefaultSerializer());
5657
byte[] bytes = toBytes.convert("Testing");
5758
DeserializingConverter fromBytes = new DeserializingConverter();
@@ -63,7 +64,9 @@ void nonSerializableObject() {
6364
SerializingConverter toBytes = new SerializingConverter();
6465
assertThatExceptionOfType(SerializationFailedException.class)
6566
.isThrownBy(() -> toBytes.convert(new Object()))
66-
.withCauseInstanceOf(IllegalArgumentException.class);
67+
.havingCause()
68+
.isInstanceOf(IllegalArgumentException.class)
69+
.withMessageContaining("requires a Serializable payload");
6770
}
6871

6972
@Test
@@ -82,15 +85,15 @@ void deserializationFailure() {
8285
}
8386

8487
@Test
85-
void deserializationWithClassLoader() {
86-
DeserializingConverter fromBytes = new DeserializingConverter(this.getClass().getClassLoader());
88+
void deserializationWithExplicitClassLoader() {
89+
DeserializingConverter fromBytes = new DeserializingConverter(getClass().getClassLoader());
8790
SerializingConverter toBytes = new SerializingConverter();
8891
String expected = "SPRING FRAMEWORK";
8992
assertThat(fromBytes.convert(toBytes.convert(expected))).isEqualTo(expected);
9093
}
9194

9295
@Test
93-
void deserializationWithDeserializer() {
96+
void deserializationWithExplicitDeserializer() {
9497
DeserializingConverter fromBytes = new DeserializingConverter(new DefaultDeserializer());
9598
SerializingConverter toBytes = new SerializingConverter();
9699
String expected = "SPRING FRAMEWORK";
@@ -99,24 +102,26 @@ void deserializationWithDeserializer() {
99102

100103
@Test
101104
void deserializationIOException() {
102-
try (MockedConstruction<ConfigurableObjectInputStream> mocked = Mockito.mockConstruction(
103-
ConfigurableObjectInputStream.class, (mock, context) -> given(mock.readObject())
104-
.willThrow(new ClassNotFoundException()))) {
105-
DefaultDeserializer defaultSerializer = new DefaultDeserializer(this.getClass().getClassLoader());
105+
ClassNotFoundException classNotFoundException = new ClassNotFoundException();
106+
try (MockedConstruction<ConfigurableObjectInputStream> mocked =
107+
Mockito.mockConstruction(ConfigurableObjectInputStream.class,
108+
(mock, context) -> given(mock.readObject()).willThrow(classNotFoundException))) {
109+
DefaultDeserializer defaultSerializer = new DefaultDeserializer(getClass().getClassLoader());
106110
assertThat(mocked).isNotNull();
107-
assertThatThrownBy(() -> defaultSerializer.deserialize(
108-
new ByteArrayInputStream("test".getBytes())))
109-
.hasMessage("Failed to deserialize object type");
111+
assertThatIOException()
112+
.isThrownBy(() -> defaultSerializer.deserialize(new ByteArrayInputStream("test".getBytes())))
113+
.withMessage("Failed to deserialize object type")
114+
.havingCause().isSameAs(classNotFoundException);
110115
}
111116
}
112117

113118

114-
class UnSerializable implements Serializable {
119+
static class UnSerializable implements Serializable {
115120

116121
private static final long serialVersionUID = 1L;
117122

118123
@SuppressWarnings({"unused", "serial"})
119-
private Object object;
124+
private Object object = new Object();
120125
}
121126

122127
}

spring-core/src/test/java/org/springframework/core/serializer/SerializerTests.java

Lines changed: 38 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -27,62 +27,71 @@
2727

2828
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
2929

30-
30+
/**
31+
* Unit tests for {@link Serializer}, {@link Deserializer}, and {@link SerializationDelegate}.
32+
*
33+
* @since 6.1
34+
*/
3135
class SerializerTests {
3236

3337
private static final String SPRING_FRAMEWORK = "Spring Framework";
3438

3539

3640
@Test
3741
void serializeToByteArray() throws IOException {
38-
SpyStringSerializer serializer = new SpyStringSerializer<String>();
42+
43+
class SpyStringSerializer implements Serializer<String> {
44+
45+
String expectedObject;
46+
OutputStream expectedOutputStream;
47+
48+
@Override
49+
public void serialize(String object, OutputStream outputStream) {
50+
this.expectedObject = object;
51+
this.expectedOutputStream = outputStream;
52+
}
53+
}
54+
55+
SpyStringSerializer serializer = new SpyStringSerializer();
3956
serializer.serializeToByteArray(SPRING_FRAMEWORK);
4057
assertThat(serializer.expectedObject).isEqualTo(SPRING_FRAMEWORK);
41-
assertThat(serializer.expectedOs).isNotNull();
58+
assertThat(serializer.expectedOutputStream).isNotNull();
4259
}
4360

4461
@Test
4562
void deserializeToByteArray() throws IOException {
63+
64+
class SpyStringDeserializer implements Deserializer<String> {
65+
66+
InputStream expectedInputStream;
67+
68+
@Override
69+
public String deserialize(InputStream inputStream) {
70+
this.expectedInputStream = inputStream;
71+
return SPRING_FRAMEWORK;
72+
}
73+
}
74+
4675
SpyStringDeserializer deserializer = new SpyStringDeserializer();
47-
deserializer.deserializeFromByteArray(SPRING_FRAMEWORK.getBytes());
48-
assertThat(deserializer.expectedObject).isEqualTo(SPRING_FRAMEWORK);
76+
Object deserializedObj = deserializer.deserializeFromByteArray(SPRING_FRAMEWORK.getBytes());
77+
assertThat(deserializedObj).isEqualTo(SPRING_FRAMEWORK);
78+
assertThat(deserializer.expectedInputStream).isNotNull();
4979
}
5080

5181
@Test
52-
void serializationDelegate() throws IOException {
82+
void serializationDelegateWithExplicitSerializerAndDeserializer() throws IOException {
5383
SerializationDelegate delegate = new SerializationDelegate(new DefaultSerializer(), new DefaultDeserializer());
5484
byte[] serializedObj = delegate.serializeToByteArray(SPRING_FRAMEWORK);
5585
Object deserializedObj = delegate.deserialize(new ByteArrayInputStream(serializedObj));
5686
assertThat(deserializedObj).isEqualTo(SPRING_FRAMEWORK);
5787
}
5888

5989
@Test
60-
void serializationDelegateWithClassLoader() throws IOException {
61-
SerializationDelegate delegate = new SerializationDelegate(this.getClass().getClassLoader());
90+
void serializationDelegateWithExplicitClassLoader() throws IOException {
91+
SerializationDelegate delegate = new SerializationDelegate(getClass().getClassLoader());
6292
byte[] serializedObj = delegate.serializeToByteArray(SPRING_FRAMEWORK);
6393
Object deserializedObj = delegate.deserialize(new ByteArrayInputStream(serializedObj));
6494
assertThat(deserializedObj).isEqualTo(SPRING_FRAMEWORK);
6595
}
6696

67-
static class SpyStringSerializer<T> implements Serializer<T> {
68-
T expectedObject;
69-
OutputStream expectedOs;
70-
71-
@Override
72-
public void serialize(T object, OutputStream outputStream) {
73-
expectedObject = object;
74-
expectedOs = outputStream;
75-
}
76-
}
77-
78-
static class SpyStringDeserializer implements Deserializer<Object> {
79-
Object expectedObject;
80-
81-
82-
@Override
83-
public String deserialize(InputStream inputStream) {
84-
expectedObject = SPRING_FRAMEWORK;
85-
return SPRING_FRAMEWORK;
86-
}
87-
}
8897
}

0 commit comments

Comments
 (0)