Browse Source

Merge remote-tracking branch 'origin/3.1.x' into 3.1.x

pull/669/head
Olga MaciaszekSharma 3 years ago
parent
commit
8b1c1dbf4c
  1. 10
      spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/support/PageJacksonModule.java
  2. 61
      spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/support/PageJacksonModuleTests.java

10
spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/support/PageJacksonModule.java

@ -22,6 +22,7 @@ import java.util.function.Function; @@ -22,6 +22,7 @@ import java.util.function.Function;
import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.core.Version;
import com.fasterxml.jackson.databind.Module;
@ -59,6 +60,7 @@ public class PageJacksonModule extends Module { @@ -59,6 +60,7 @@ public class PageJacksonModule extends Module {
}
@JsonDeserialize(as = SimplePageImpl.class)
@JsonIgnoreProperties(ignoreUnknown = true)
private interface PageMixIn {
}
@ -86,7 +88,7 @@ public class PageJacksonModule extends Module { @@ -86,7 +88,7 @@ public class PageJacksonModule extends Module {
}
}
@JsonIgnore
@JsonProperty
@Override
public int getTotalPages() {
return delegate.getTotalPages();
@ -110,7 +112,7 @@ public class PageJacksonModule extends Module { @@ -110,7 +112,7 @@ public class PageJacksonModule extends Module {
return delegate.getSize();
}
@JsonIgnore
@JsonProperty
@Override
public int getNumberOfElements() {
return delegate.getNumberOfElements();
@ -134,13 +136,13 @@ public class PageJacksonModule extends Module { @@ -134,13 +136,13 @@ public class PageJacksonModule extends Module {
return delegate.getSort();
}
@JsonIgnore
@JsonProperty
@Override
public boolean isFirst() {
return delegate.isFirst();
}
@JsonIgnore
@JsonProperty
@Override
public boolean isLast() {
return delegate.isLast();

61
spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/support/PageJacksonModuleTests.java

@ -82,10 +82,10 @@ public class PageJacksonModuleTests { @@ -82,10 +82,10 @@ public class PageJacksonModuleTests {
@Test
public void serializeAndDeserializeFilledMultiple() throws JsonProcessingException {
// Given
ArrayList<Object> strings0 = new ArrayList<>();
strings0.add("first element");
strings0.add("second element");
PageImpl<Object> objects = new PageImpl<>(strings0, PageRequest.of(6, 2), 100);
ArrayList<Object> pageElements = new ArrayList<>();
pageElements.add("first element");
pageElements.add("second element");
PageImpl<Object> objects = new PageImpl<>(pageElements, PageRequest.of(6, 2), 100);
assertThat(objects.getContent()).hasSize(2);
assertThat(objects.getPageable().getPageSize()).isEqualTo(2);
@ -102,4 +102,57 @@ public class PageJacksonModuleTests { @@ -102,4 +102,57 @@ public class PageJacksonModuleTests {
assertThat(result.getPageable().getPageNumber()).isEqualTo(6);
}
@Test
public void serializeAndDeserializeEmptyCascade() throws JsonProcessingException {
// Given
PageImpl<Object> objects = new PageImpl<>(new ArrayList<>());
String pageJson = objectMapper.writeValueAsString(objects);
// When
Page<?> result = objectMapper.readValue(pageJson, Page.class);
// Then
assertThat(result).isNotNull();
assertThat(result.getTotalElements()).isEqualTo(0);
assertThat(result.getContent()).hasSize(0);
String cascadedPageJson = objectMapper.writeValueAsString(result);
Page<?> cascadedResult = objectMapper.readValue(cascadedPageJson, Page.class);
assertThat(cascadedResult).isNotNull();
assertThat(cascadedResult.getTotalElements()).isEqualTo(0);
assertThat(cascadedResult.getContent()).hasSize(0);
}
@Test
public void serializeAndDeserializeFilledMultipleCascade() throws JsonProcessingException {
// Given
ArrayList<Object> pageElements = new ArrayList<>();
pageElements.add("first element in cascaded serialization");
pageElements.add("second element in cascaded serialization");
PageImpl<Object> objects = new PageImpl<>(pageElements, PageRequest.of(6, 2), 100);
assertThat(objects.getContent()).hasSize(2);
assertThat(objects.getPageable().getPageSize()).isEqualTo(2);
String pageJson = objectMapper.writeValueAsString(objects);
// When
Page<?> result = objectMapper.readValue(pageJson, Page.class);
// Then
assertThat(result).isNotNull();
assertThat(result.getTotalElements()).isEqualTo(100);
assertThat(result.getContent()).hasSize(2);
assertThat(result.getContent().get(0)).isEqualTo("first element in cascaded serialization");
assertThat(result.getContent().get(1)).isEqualTo("second element in cascaded serialization");
assertThat(result.getPageable().getPageSize()).isEqualTo(2);
assertThat(result.getPageable().getPageNumber()).isEqualTo(6);
String cascadedPageJson = objectMapper.writeValueAsString(result);
Page<?> cascadedResult = objectMapper.readValue(cascadedPageJson, Page.class);
// Then
assertThat(cascadedResult).isNotNull();
assertThat(cascadedResult.getTotalElements()).isEqualTo(100);
assertThat(cascadedResult.getContent()).hasSize(2);
assertThat(cascadedResult.getContent().get(0)).isEqualTo("first element in cascaded serialization");
assertThat(cascadedResult.getContent().get(1)).isEqualTo("second element in cascaded serialization");
assertThat(cascadedResult.getPageable().getPageSize()).isEqualTo(2);
assertThat(cascadedResult.getPageable().getPageNumber()).isEqualTo(6);
}
}

Loading…
Cancel
Save