This is an automated email from the ASF dual-hosted git repository. wujimin pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git
The following commit(s) were added to refs/heads/master by this push: new 58e61d8 [SCB-2162]upgrade spring framerok to 5.2.9.RELEASE and spring boot to 2.3.4.RELEASE 58e61d8 is described below commit 58e61d8fbcde839af8bffa312a538a8df551b0be Author: liubao <bi...@qq.com> AuthorDate: Tue Dec 15 18:53:08 2020 +0800 [SCB-2162]upgrade spring framerok to 5.2.9.RELEASE and spring boot to 2.3.4.RELEASE --- .../core/ConfigurationSpringInitializer.java | 14 +---- .../jaxrs/client/CodeFirstRestTemplateJaxrs.java | 2 +- .../jaxrs/client/MultiErrorCodeServiceClient.java | 5 +- demo/demo-jaxrs/pom.xml | 1 - .../IConfigurationEndpoint.java | 4 ++ .../demo/multiServiceCenterClient/ServerBTest.java | 9 +++ .../ConfigurationEndpoint.java | 25 ++++++++ .../{microservice.yaml => application.properties} | 11 +--- .../src/main/resources/microservice.yaml | 4 ++ dependencies/default/pom.xml | 27 +-------- .../config/LastPropertyPlaceholderConfigurer.java | 4 +- .../TestLastPropertyPlaceholderConfigurer.java | 4 +- integration-tests/it-consumer/pom.xml | 1 - integration-tests/pom.xml | 18 +----- .../generator-spring-data/pom.xml | 5 -- .../generator/springdata/SpringDataModule.java | 66 ++++++++++++++++++++-- .../springdata/TestPageResponseTypeProcessor.java | 25 +++++--- 17 files changed, 137 insertions(+), 88 deletions(-) diff --git a/core/src/main/java/org/apache/servicecomb/core/ConfigurationSpringInitializer.java b/core/src/main/java/org/apache/servicecomb/core/ConfigurationSpringInitializer.java index 9d11189..dfe9413 100644 --- a/core/src/main/java/org/apache/servicecomb/core/ConfigurationSpringInitializer.java +++ b/core/src/main/java/org/apache/servicecomb/core/ConfigurationSpringInitializer.java @@ -35,8 +35,8 @@ import org.apache.servicecomb.foundation.bootstrap.BootStrapService; import org.apache.servicecomb.foundation.common.utils.SPIServiceUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer; import org.springframework.context.EnvironmentAware; +import org.springframework.context.support.PropertySourcesPlaceholderConfigurer; import org.springframework.core.Ordered; import org.springframework.core.env.CompositePropertySource; import org.springframework.core.env.ConfigurableEnvironment; @@ -47,7 +47,6 @@ import org.springframework.core.env.PropertySource; import org.springframework.util.StringUtils; import com.netflix.config.ConfigurationManager; -import com.netflix.config.DynamicPropertyFactory; /** * Adapt spring PropertySource and Archaius Configuration @@ -64,7 +63,7 @@ import com.netflix.config.DynamicPropertyFactory; * related to precedence of a KEY-VAlUE. That is cse.test in dynamic config may not override servicecomb.test in yml. * Users need to use the same key as what is in config file to override. */ -public class ConfigurationSpringInitializer extends PropertyPlaceholderConfigurer implements EnvironmentAware { +public class ConfigurationSpringInitializer extends PropertySourcesPlaceholderConfigurer implements EnvironmentAware { private static final Logger LOGGER = LoggerFactory.getLogger(ConfigurationSpringInitializer.class); public static final String EXTRA_CONFIG_SOURCE_PREFIX = "extraConfig-"; @@ -185,15 +184,6 @@ public class ConfigurationSpringInitializer extends PropertyPlaceholderConfigure return properties; } - @Override - protected String resolvePlaceholder(String placeholder, Properties props) { - String propertyValue = super.resolvePlaceholder(placeholder, props); - if (propertyValue == null) { - return DynamicPropertyFactory.getInstance().getStringProperty(placeholder, null).get(); - } - return propertyValue; - } - /** * Try to get a name for identifying the environment. * @param environment the target that the name is generated for. diff --git a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/CodeFirstRestTemplateJaxrs.java b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/CodeFirstRestTemplateJaxrs.java index fc33127..b44dd45 100644 --- a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/CodeFirstRestTemplateJaxrs.java +++ b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/CodeFirstRestTemplateJaxrs.java @@ -118,6 +118,6 @@ public class CodeFirstRestTemplateJaxrs extends CodeFirstRestTemplate { } } TestMgr.check(404, exception.getRawStatusCode()); - TestMgr.check("404 Not Found", exception.getMessage()); + TestMgr.check("404 Not Found: [{\"message\":\"Not Found\"}]", exception.getMessage()); } } diff --git a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/MultiErrorCodeServiceClient.java b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/MultiErrorCodeServiceClient.java index 42031f5..0e588cc 100644 --- a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/MultiErrorCodeServiceClient.java +++ b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/MultiErrorCodeServiceClient.java @@ -103,7 +103,10 @@ public class MultiErrorCodeServiceClient implements CategorizedTestCase { .postForEntity(serverDirectURL + "/MultiErrorCodeService/errorCode", entity, MultiResponse200.class); } catch (HttpClientErrorException e) { TestMgr.check(e.getRawStatusCode(), 400); - TestMgr.check(e.getMessage(), "400 Bad Request"); + TestMgr.check(e.getMessage(), + "400 Bad Request: [{\"message\":\"Parameter is not valid for operation " + + "[jaxrs.MultiErrorCodeService.errorCode]. Parameter is [request]. " + + "Processor is [body].\"}]"); } entity = new HttpEntity<>(null, headers); diff --git a/demo/demo-jaxrs/pom.xml b/demo/demo-jaxrs/pom.xml index 26cdc51..47d9521 100644 --- a/demo/demo-jaxrs/pom.xml +++ b/demo/demo-jaxrs/pom.xml @@ -43,7 +43,6 @@ <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-commons</artifactId> - <version>2.1.9.RELEASE</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> diff --git a/demo/demo-multi-service-center/demo-multi-service-center-client/src/main/java/org/apache/servicecomb/demo/multiServiceCenterClient/IConfigurationEndpoint.java b/demo/demo-multi-service-center/demo-multi-service-center-client/src/main/java/org/apache/servicecomb/demo/multiServiceCenterClient/IConfigurationEndpoint.java index dc72a9f..b237db5 100644 --- a/demo/demo-multi-service-center/demo-multi-service-center-client/src/main/java/org/apache/servicecomb/demo/multiServiceCenterClient/IConfigurationEndpoint.java +++ b/demo/demo-multi-service-center/demo-multi-service-center-client/src/main/java/org/apache/servicecomb/demo/multiServiceCenterClient/IConfigurationEndpoint.java @@ -17,6 +17,10 @@ package org.apache.servicecomb.demo.multiServiceCenterClient; +import java.util.List; + public interface IConfigurationEndpoint { String getValue(String key, int type); + + List<String> getValueList(String key, int type); } diff --git a/demo/demo-multi-service-center/demo-multi-service-center-client/src/main/java/org/apache/servicecomb/demo/multiServiceCenterClient/ServerBTest.java b/demo/demo-multi-service-center/demo-multi-service-center-client/src/main/java/org/apache/servicecomb/demo/multiServiceCenterClient/ServerBTest.java index 42c3c62..cbb2b42 100644 --- a/demo/demo-multi-service-center/demo-multi-service-center-client/src/main/java/org/apache/servicecomb/demo/multiServiceCenterClient/ServerBTest.java +++ b/demo/demo-multi-service-center/demo-multi-service-center-client/src/main/java/org/apache/servicecomb/demo/multiServiceCenterClient/ServerBTest.java @@ -17,6 +17,8 @@ package org.apache.servicecomb.demo.multiServiceCenterClient; +import java.util.Arrays; + import org.apache.servicecomb.demo.CategorizedTestCase; import org.apache.servicecomb.demo.TestMgr; import org.apache.servicecomb.provider.pojo.RpcReference; @@ -49,6 +51,13 @@ public class ServerBTest implements CategorizedTestCase { TestMgr.check("key5-high", configurationEndpoint.getValue("demo.multi.service.center.serverB.key5", 1)); TestMgr.check("key5-high", configurationEndpoint.getValue("demo.multi.service.center.serverB.key5", 2)); TestMgr.check("key5-high", configurationEndpoint.getValue("demo.multi.service.center.serverB.key5", 3)); + TestMgr.check("key6", configurationEndpoint.getValue("demo.multi.service.center.serverB.key6", 1)); + TestMgr.check("key6", configurationEndpoint.getValue("demo.multi.service.center.serverB.key6", 2)); + TestMgr.check("key6", configurationEndpoint.getValue("demo.multi.service.center.serverB.key6", 3)); + TestMgr.check(Arrays.asList("key71", "key72"), + configurationEndpoint.getValueList("demo.multi.service.center.serverB.key7", 1)); + TestMgr.check(Arrays.asList("key71", "key72"), + configurationEndpoint.getValueList("demo.multi.service.center.serverB.key7", 2)); } @Override diff --git a/demo/demo-multi-service-center/demo-multi-service-center-serverB/src/main/java/org/apache/servicecomb/demo/multiServiceCenterServerB/ConfigurationEndpoint.java b/demo/demo-multi-service-center/demo-multi-service-center-serverB/src/main/java/org/apache/servicecomb/demo/multiServiceCenterServerB/ConfigurationEndpoint.java index 19be127..ec0b8f4 100644 --- a/demo/demo-multi-service-center/demo-multi-service-center-serverB/src/main/java/org/apache/servicecomb/demo/multiServiceCenterServerB/ConfigurationEndpoint.java +++ b/demo/demo-multi-service-center/demo-multi-service-center-serverB/src/main/java/org/apache/servicecomb/demo/multiServiceCenterServerB/ConfigurationEndpoint.java @@ -17,6 +17,8 @@ package org.apache.servicecomb.demo.multiServiceCenterServerB; +import java.util.List; + import javax.ws.rs.core.MediaType; import org.apache.servicecomb.provider.rest.common.RestSchema; @@ -55,6 +57,12 @@ public class ConfigurationEndpoint { @Value("${demo.multi.service.center.serverB.key5}") private String key5; + @Value("${demo.multi.service.center.serverB.key6}") + private String key6; + + @Value("${demo.multi.service.center.serverB.key7}") + private List<String> key7; + @GetMapping(path = "/config") public String getValue(@RequestParam(name = "key") String key, @RequestParam(name = "type") int type) { if (type == 1) { @@ -73,6 +81,23 @@ public class ConfigurationEndpoint { return key4; case "demo.multi.service.center.serverB.key5": return key5; + case "demo.multi.service.center.serverB.key6": + return key6; + default: + return null; + } + } + } + + @SuppressWarnings("unchecked") + @GetMapping(path = "/configList") + public List<String> getValueList(@RequestParam(name = "key") String key, @RequestParam(name = "type") int type) { + if (type == 1) { + return environment.getProperty(key, List.class); + } else { + switch (key) { + case "demo.multi.service.center.serverB.key7": + return key7; default: return null; } diff --git a/demo/demo-multi-service-center/demo-multi-service-center-serverB/src/main/resources/microservice.yaml b/demo/demo-multi-service-center/demo-multi-service-center-serverB/src/main/resources/application.properties similarity index 85% copy from demo/demo-multi-service-center/demo-multi-service-center-serverB/src/main/resources/microservice.yaml copy to demo/demo-multi-service-center/demo-multi-service-center-serverB/src/main/resources/application.properties index ff62f18..6072aab 100644 --- a/demo/demo-multi-service-center/demo-multi-service-center-serverB/src/main/resources/microservice.yaml +++ b/demo/demo-multi-service-center/demo-multi-service-center-serverB/src/main/resources/application.properties @@ -15,11 +15,6 @@ ## limitations under the License. ## --------------------------------------------------------------------------- -servicecomb-config-order: 1 - -demo.multi.service.center.serverB: - key1: key1-override - key2: key2-override - key5: key5 - actual: - key5: key5-high +demo.multi.service.center.serverB.actual.key6=key6 +demo.multi.service.center.serverB.actual.key7.1=key71 +demo.multi.service.center.serverB.actual.key7.2=key72 \ No newline at end of file diff --git a/demo/demo-multi-service-center/demo-multi-service-center-serverB/src/main/resources/microservice.yaml b/demo/demo-multi-service-center/demo-multi-service-center-serverB/src/main/resources/microservice.yaml index ff62f18..52cd6c8 100644 --- a/demo/demo-multi-service-center/demo-multi-service-center-serverB/src/main/resources/microservice.yaml +++ b/demo/demo-multi-service-center/demo-multi-service-center-serverB/src/main/resources/microservice.yaml @@ -23,3 +23,7 @@ demo.multi.service.center.serverB: key5: key5 actual: key5: key5-high + key6: ${demo.multi.service.center.serverB.actual.key6} + key7: + - ${demo.multi.service.center.serverB.actual.key7.1} + - ${demo.multi.service.center.serverB.actual.key7.2} \ No newline at end of file diff --git a/dependencies/default/pom.xml b/dependencies/default/pom.xml index 9f1117e..c2b3b19 100644 --- a/dependencies/default/pom.xml +++ b/dependencies/default/pom.xml @@ -46,8 +46,6 @@ <commons-logging.version>1.2</commons-logging.version> <cxf.version>3.3.1</cxf.version> <dyuproject-protostuff.version>1.0.7.fixed.3500</dyuproject-protostuff.version> - <embed.version>8.5.32</embed.version> - <embed-logging-juli.version>8.5.2</embed-logging-juli.version> <esotericsoftware.version>4.0.2</esotericsoftware.version> <findbugs-annotations.version>2.0.0</findbugs-annotations.version> <findbugs-jsr305.version>3.0.2</findbugs-jsr305.version> @@ -99,8 +97,8 @@ <slf4j.version>1.7.30</slf4j.version> <snakeyaml.version>1.27</snakeyaml.version> <spectator.version>0.83.0</spectator.version> - <spring.version>5.1.14.RELEASE</spring.version> - <spring-boot.version>2.1.6.RELEASE</spring-boot.version> + <spring.version>5.2.9.RELEASE</spring.version> + <spring-boot.version>2.3.4.RELEASE</spring-boot.version> <stax2-api.version>4.2</stax2-api.version> <swagger.version>1.5.24</swagger.version> <swagger2markup.version>1.3.3</swagger2markup.version> @@ -667,27 +665,6 @@ </dependency> <dependency> - <groupId>org.apache.tomcat.embed</groupId> - <artifactId>tomcat-embed-core</artifactId> - <version>${embed.version}</version> - </dependency> - <dependency> - <groupId>org.apache.tomcat.embed</groupId> - <artifactId>tomcat-embed-el</artifactId> - <version>${embed.version}</version> - </dependency> - <dependency> - <groupId>org.apache.tomcat.embed</groupId> - <artifactId>tomcat-embed-logging-juli</artifactId> - <version>${embed-logging-juli.version}</version> - </dependency> - <dependency> - <groupId>org.apache.tomcat.embed</groupId> - <artifactId>tomcat-embed-websocket</artifactId> - <version>${embed.version}</version> - </dependency> - - <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>${zookeeper.version}</version> diff --git a/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/LastPropertyPlaceholderConfigurer.java b/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/LastPropertyPlaceholderConfigurer.java index 374334e..769582f 100644 --- a/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/LastPropertyPlaceholderConfigurer.java +++ b/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/LastPropertyPlaceholderConfigurer.java @@ -20,7 +20,7 @@ package org.apache.servicecomb.config; import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanFactoryPostProcessor; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; -import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer; +import org.springframework.context.support.PropertySourcesPlaceholderConfigurer; import org.springframework.core.Ordered; import org.springframework.stereotype.Component; @@ -36,6 +36,6 @@ public class LastPropertyPlaceholderConfigurer implements BeanFactoryPostProcess @Override public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { - new PropertyPlaceholderConfigurer().postProcessBeanFactory(beanFactory); + new PropertySourcesPlaceholderConfigurer().postProcessBeanFactory(beanFactory); } } diff --git a/foundations/foundation-config/src/test/java/org/apache/servicecomb/config/TestLastPropertyPlaceholderConfigurer.java b/foundations/foundation-config/src/test/java/org/apache/servicecomb/config/TestLastPropertyPlaceholderConfigurer.java index d3d8491..223820c 100644 --- a/foundations/foundation-config/src/test/java/org/apache/servicecomb/config/TestLastPropertyPlaceholderConfigurer.java +++ b/foundations/foundation-config/src/test/java/org/apache/servicecomb/config/TestLastPropertyPlaceholderConfigurer.java @@ -22,15 +22,15 @@ import java.util.Properties; import org.junit.Assert; import org.junit.Test; -import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer; import org.springframework.context.EmbeddedValueResolverAware; import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.context.support.PropertySourcesPlaceholderConfigurer; import org.springframework.stereotype.Component; import org.springframework.util.StringValueResolver; public class TestLastPropertyPlaceholderConfigurer { @Component - static class Bean extends PropertyPlaceholderConfigurer implements EmbeddedValueResolverAware { + static class Bean extends PropertySourcesPlaceholderConfigurer implements EmbeddedValueResolverAware { StringValueResolver resolver; public Bean() { diff --git a/integration-tests/it-consumer/pom.xml b/integration-tests/it-consumer/pom.xml index 5b5cc6d..a128a7c 100644 --- a/integration-tests/it-consumer/pom.xml +++ b/integration-tests/it-consumer/pom.xml @@ -36,7 +36,6 @@ <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> - <scope>compile</scope> </dependency> <dependency> diff --git a/integration-tests/pom.xml b/integration-tests/pom.xml index 79de6fb..922a6cb 100644 --- a/integration-tests/pom.xml +++ b/integration-tests/pom.xml @@ -70,23 +70,7 @@ <version>${project.version}</version> <type>test-jar</type> </dependency> - <dependency> - <groupId>io.zipkin.zipkin2</groupId> - <artifactId>zipkin</artifactId> - <version>2.9.3</version> - </dependency> - <dependency> - <groupId>io.zipkin.zipkin2</groupId> - <artifactId>zipkin-junit</artifactId> - <version>2.9.3</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>com.squareup.okhttp3</groupId> - <artifactId>okhttp</artifactId> - <version>3.10.0</version> - <scope>test</scope> - </dependency> + </dependencies> </dependencyManagement> <dependencies> diff --git a/swagger/swagger-generator/generator-spring-data/pom.xml b/swagger/swagger-generator/generator-spring-data/pom.xml index c33169f..0b8e9d5 100644 --- a/swagger/swagger-generator/generator-spring-data/pom.xml +++ b/swagger/swagger-generator/generator-spring-data/pom.xml @@ -37,11 +37,6 @@ <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-commons</artifactId> - <!-- based on business project dependency --> - <optional>true</optional> - <scope>provided</scope> - <!-- This is provided scope, better not add to dependency management, so add version here --> - <version>2.1.9.RELEASE</version> </dependency> </dependencies> diff --git a/swagger/swagger-generator/generator-spring-data/src/main/java/org/apache/servicecomb/swagger/generator/springdata/SpringDataModule.java b/swagger/swagger-generator/generator-spring-data/src/main/java/org/apache/servicecomb/swagger/generator/springdata/SpringDataModule.java index e8e06e4..7a56e72 100644 --- a/swagger/swagger-generator/generator-spring-data/src/main/java/org/apache/servicecomb/swagger/generator/springdata/SpringDataModule.java +++ b/swagger/swagger-generator/generator-spring-data/src/main/java/org/apache/servicecomb/swagger/generator/springdata/SpringDataModule.java @@ -16,6 +16,8 @@ */ package org.apache.servicecomb.swagger.generator.springdata; +import java.util.ArrayList; +import java.util.Iterator; import java.util.List; import org.apache.servicecomb.foundation.common.utils.SPIOrder; @@ -24,12 +26,17 @@ import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; +import org.springframework.data.domain.Sort.Order; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.databind.JavaType; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.module.SimpleModule; +import com.fasterxml.jackson.databind.type.TypeFactory; +import com.fasterxml.jackson.databind.util.Converter; public class SpringDataModule extends SimpleModule implements SPIOrder { private static final long serialVersionUID = 1L; @@ -53,14 +60,63 @@ public class SpringDataModule extends SimpleModule implements SPIOrder { } } + public static class SortConverter implements Converter<SortMixin, Sort> { + @Override + public Sort convert(SortMixin value) { + return Sort.by(value.getProperties()); + } + + @Override + public JavaType getInputType(TypeFactory typeFactory) { + return typeFactory.constructType(SortMixin.class); + } + + @Override + public JavaType getOutputType(TypeFactory typeFactory) { + return typeFactory.constructType(Sort.class); + } + } + + public static class SortMixinConverter implements Converter<Sort, SortMixin> { + @Override + public SortMixin convert(Sort value) { + List<String> properties = new ArrayList<>(); + Iterator<Order> iterator = value.iterator(); + while (iterator.hasNext()) { + properties.add(iterator.next().getProperty()); + } + SortMixin result = new SortMixin(); + result.setProperties(properties.toArray(new String[0])); + return result; + } + + @Override + public JavaType getInputType(TypeFactory typeFactory) { + return typeFactory.constructType(Sort.class); + } + + @Override + public JavaType getOutputType(TypeFactory typeFactory) { + return typeFactory.constructType(SortMixin.class); + } + } + @JsonPropertyOrder(alphabetic = true) - @JsonDeserialize(as = Sort.class) + @JsonDeserialize(converter = SortConverter.class) + @JsonSerialize(converter = SortMixinConverter.class) public static class SortMixin { - // Notice: - // spring data model changed from version to version - // for the tested version, sort is not consistency in serialization and deserialization + private String[] properties; + @JsonCreator - public SortMixin(String... properties) { + public SortMixin() { + } + + public void setProperties(String[] properties) { + this.properties = properties; + } + + public String[] getProperties() { + return this.properties; } } diff --git a/swagger/swagger-generator/generator-spring-data/src/test/java/org/apache/servicecomb/swagger/generator/springdata/TestPageResponseTypeProcessor.java b/swagger/swagger-generator/generator-spring-data/src/test/java/org/apache/servicecomb/swagger/generator/springdata/TestPageResponseTypeProcessor.java index 5ae8c09..38ddaa2 100644 --- a/swagger/swagger-generator/generator-spring-data/src/test/java/org/apache/servicecomb/swagger/generator/springdata/TestPageResponseTypeProcessor.java +++ b/swagger/swagger-generator/generator-spring-data/src/test/java/org/apache/servicecomb/swagger/generator/springdata/TestPageResponseTypeProcessor.java @@ -17,11 +17,17 @@ package org.apache.servicecomb.swagger.generator.springdata; import java.io.IOException; +import java.util.Arrays; import org.apache.servicecomb.swagger.generator.core.unittest.UnitTestSwaggerUtils; import org.junit.Assert; import org.junit.Test; import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageImpl; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; +import org.springframework.data.domain.Sort.Direction; import io.swagger.util.Json; @@ -39,14 +45,17 @@ public class TestPageResponseTypeProcessor { public void deserialize() throws IOException { Json.mapper().registerModule(new SpringDataModule()); - String json = "{\"content\":[\"c1\",\"c2\"],\"pageable\":{\"pageNumber\":1,\"pageSize\":2}}"; - Page<?> page = Json.mapper().readValue(json, Page.class); - + Sort sort = Sort.by(Direction.ASC, "name"); + Pageable pageable = PageRequest.of(1, 10, sort); + Page<String> page = new PageImpl<>(Arrays.asList("c1", "c2"), pageable, 2); + String json = Json.mapper().writeValueAsString(page); Assert.assertEquals( - "{\"content\":[\"c1\",\"c2\"],\"pageable\":{\"pageNumber\":1,\"pageSize\":2," - + "\"offset\":2,\"paged\":true,\"unpaged\":false},\"empty\":false,\"first\":false," - + "\"last\":true,\"number\":1,\"numberOfElements\":2,\"size\":2," - + "\"totalElements\":4,\"totalPages\":2}", - Json.mapper().writeValueAsString(page)); + "{\"content\":[\"c1\",\"c2\"],\"pageable\":{\"pageNumber\":1,\"pageSize\":10,\"sort\":{\"properties\":[\"name\"]},\"offset\":10,\"paged\":true,\"unpaged\":false},\"empty\":false,\"first\":false,\"last\":true,\"number\":1,\"numberOfElements\":2,\"size\":10,\"sort\":{\"properties\":[\"name\"]},\"totalElements\":12,\"totalPages\":2}", + json); + + Page<?> page2 = Json.mapper().readValue(json, Page.class); + + Assert.assertEquals(json, + Json.mapper().writeValueAsString(page2)); } }