This is an automated email from the ASF dual-hosted git repository. liubao pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-java-chassis.git
commit 44cd5bc7a9e6d48dcd3df0244008a815fa545270 Author: liubao <[email protected]> AuthorDate: Thu Aug 16 19:50:42 2018 +0800 [SCB-847]support client not write null value and server write null value. --- .../common/rest/codec/RestObjectMapperFactory.java | 23 +++++++ .../rest/codec/param/BodyProcessorCreator.java | 7 +- .../rest/codec/param/CookieProcessorCreator.java | 3 +- .../rest/codec/param/HeaderProcessorCreator.java | 3 +- .../rest/codec/param/ParamValueProcessor.java | 3 +- .../rest/codec/produce/ProduceJsonProcessor.java | 5 +- .../servicecomb/demo/jaxrs/client/JaxrsClient.java | 9 ++- .../jaxrs/client/pojoDefault/DefaultModel.java | 17 ++--- .../pojoDefault/DefaultModelServiceClient.java | 46 +++++++++++++ .../server/pojoDefault/DefaultResponseModel.java | 76 ++++++++++++++++++++++ .../servicecomb/demo/jaxrs/server/JaxrsServer.java | 7 +- .../server/pojoDefault/DefaultModelService.java | 27 ++++---- .../server/pojoDefault/DefaultRequestModel.java | 76 ++++++++++++++++++++++ .../server/pojoDefault/DefaultResponseModel.java | 76 ++++++++++++++++++++++ .../demo/RestObjectMapperWithStringMapper.java | 2 + 15 files changed, 349 insertions(+), 31 deletions(-) diff --git a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/RestObjectMapperFactory.java b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/RestObjectMapperFactory.java index 188d9de..65b107e 100644 --- a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/RestObjectMapperFactory.java +++ b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/RestObjectMapperFactory.java @@ -17,12 +17,31 @@ package org.apache.servicecomb.common.rest.codec; +import java.util.HashMap; +import java.util.Map; + /** * Manage RestObjectMapper instances. Give users an option to specify custom mappers. */ public class RestObjectMapperFactory { + public static final String KEY_PROVIDER_READ_OR_CONSUMER_READ = "provider.consumer.read"; + + public static final String KEY_PROVIDER_WRITE = "provider.write"; + + public static final String KEY_CONSUMER_WRITE = "consumer.write"; + private static AbstractRestObjectMapper defaultMapper = new RestObjectMapper(); + private static Map<String, AbstractRestObjectMapper> allMappers = new HashMap<>(); + + public static AbstractRestObjectMapper getRestObjectMapper(String key) { + AbstractRestObjectMapper mapper = allMappers.get(key); + if (mapper != null) { + return mapper; + } + return defaultMapper; + } + public static AbstractRestObjectMapper getRestObjectMapper() { return defaultMapper; } @@ -30,4 +49,8 @@ public class RestObjectMapperFactory { public static void setDefaultRestObjectMapper(AbstractRestObjectMapper customMapper) { defaultMapper = customMapper; } + + public static void setCustomMapper(String key, AbstractRestObjectMapper mapper) { + allMappers.put(key, mapper); + } } diff --git a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/param/BodyProcessorCreator.java b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/param/BodyProcessorCreator.java index 61f0ea9..fc40579 100644 --- a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/param/BodyProcessorCreator.java +++ b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/param/BodyProcessorCreator.java @@ -68,7 +68,7 @@ public class BodyProcessorCreator implements ParamValueProcessorCreator { contentType = contentType == null ? "" : contentType.toLowerCase(Locale.US); if (contentType.startsWith(MediaType.MULTIPART_FORM_DATA) || contentType.startsWith(MediaType.APPLICATION_FORM_URLENCODED)) { - return RestObjectMapperFactory.getRestObjectMapper().convertValue(request.getParameterMap(), targetType); + return convertValue(request.getParameterMap(), targetType); } // for standard HttpServletRequest, getInputStream will never return null @@ -85,7 +85,8 @@ public class BodyProcessorCreator implements ParamValueProcessorCreator { } try { - return RestObjectMapperFactory.getRestObjectMapper().readValue(inputStream, targetType); + return RestObjectMapperFactory.getRestObjectMapper(RestObjectMapperFactory.KEY_PROVIDER_READ_OR_CONSUMER_READ) + .readValue(inputStream, targetType); } catch (MismatchedInputException e) { // there is no way to detect InputStream is empty, so have to catch the exception if (!isRequired) { @@ -100,7 +101,7 @@ public class BodyProcessorCreator implements ParamValueProcessorCreator { public void setValue(RestClientRequest clientRequest, Object arg) throws Exception { try (BufferOutputStream output = new BufferOutputStream()) { clientRequest.putHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON); - RestObjectMapperFactory.getRestObjectMapper().writeValue(output, arg); + RestObjectMapperFactory.getRestObjectMapper(RestObjectMapperFactory.KEY_CONSUMER_WRITE).writeValue(output, arg); if (arg != null) { clientRequest.write(output.getBuffer()); } diff --git a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/param/CookieProcessorCreator.java b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/param/CookieProcessorCreator.java index 7f8a776..1688349 100644 --- a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/param/CookieProcessorCreator.java +++ b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/param/CookieProcessorCreator.java @@ -64,7 +64,8 @@ public class CookieProcessorCreator implements ParamValueProcessorCreator { @Override public void setValue(RestClientRequest clientRequest, Object arg) throws Exception { - clientRequest.addCookie(paramPath, RestObjectMapperFactory.getRestObjectMapper().convertToString(arg)); + clientRequest.addCookie(paramPath, + RestObjectMapperFactory.getRestObjectMapper(RestObjectMapperFactory.KEY_CONSUMER_WRITE).convertToString(arg)); } @Override diff --git a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/param/HeaderProcessorCreator.java b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/param/HeaderProcessorCreator.java index 43b4582..44fa146 100644 --- a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/param/HeaderProcessorCreator.java +++ b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/param/HeaderProcessorCreator.java @@ -74,7 +74,8 @@ public class HeaderProcessorCreator implements ParamValueProcessorCreator { LOGGER.debug("Header arg is null, will not be set into clientRequest. paramPath = [{}]", paramPath); return; } - clientRequest.putHeader(paramPath, RestObjectMapperFactory.getRestObjectMapper().convertToString(arg)); + clientRequest.putHeader(paramPath, + RestObjectMapperFactory.getRestObjectMapper(RestObjectMapperFactory.KEY_CONSUMER_WRITE).convertToString(arg)); } @Override diff --git a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/param/ParamValueProcessor.java b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/param/ParamValueProcessor.java index e38f7dc..8753b40 100644 --- a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/param/ParamValueProcessor.java +++ b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/param/ParamValueProcessor.java @@ -30,7 +30,8 @@ public interface ParamValueProcessor { void setValue(RestClientRequest clientRequest, Object arg) throws Exception; default Object convertValue(Object value, JavaType targetType) { - return RestObjectMapperFactory.getRestObjectMapper().convertValue(value, targetType); + return RestObjectMapperFactory.getRestObjectMapper(RestObjectMapperFactory.KEY_PROVIDER_READ_OR_CONSUMER_READ) + .convertValue(value, targetType); } String getParameterPath(); diff --git a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/produce/ProduceJsonProcessor.java b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/produce/ProduceJsonProcessor.java index 817aef0..4f57553 100644 --- a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/produce/ProduceJsonProcessor.java +++ b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/produce/ProduceJsonProcessor.java @@ -35,12 +35,13 @@ public class ProduceJsonProcessor implements ProduceProcessor { @Override public void doEncodeResponse(OutputStream output, Object result) throws Exception { - RestObjectMapperFactory.getRestObjectMapper().writeValue(output, result); + RestObjectMapperFactory.getRestObjectMapper(RestObjectMapperFactory.KEY_PROVIDER_WRITE).writeValue(output, result); } @Override public Object doDecodeResponse(InputStream input, JavaType type) throws Exception { - return RestObjectMapperFactory.getRestObjectMapper().readValue(input, type); + return RestObjectMapperFactory.getRestObjectMapper(RestObjectMapperFactory.KEY_PROVIDER_READ_OR_CONSUMER_READ) + .readValue(input, type); } @Override diff --git a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/JaxrsClient.java b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/JaxrsClient.java index 71407ef..2bd2a74 100644 --- a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/JaxrsClient.java +++ b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/JaxrsClient.java @@ -24,6 +24,7 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response.Status; import org.apache.http.HttpStatus; +import org.apache.servicecomb.common.rest.codec.RestObjectMapper; import org.apache.servicecomb.common.rest.codec.RestObjectMapperFactory; import org.apache.servicecomb.core.Const; import org.apache.servicecomb.core.CseContext; @@ -34,6 +35,7 @@ import org.apache.servicecomb.demo.TestMgr; import org.apache.servicecomb.demo.compute.Person; import org.apache.servicecomb.demo.jaxrs.client.beanParam.BeanParamPojoClient; import org.apache.servicecomb.demo.jaxrs.client.beanParam.BeanParamRestTemplateClient; +import org.apache.servicecomb.demo.jaxrs.client.pojoDefault.DefaultModelServiceClient; import org.apache.servicecomb.demo.validator.Student; import org.apache.servicecomb.foundation.common.utils.BeanUtils; import org.apache.servicecomb.foundation.common.utils.Log4jUtils; @@ -61,7 +63,11 @@ public class JaxrsClient { public static void init() throws Exception { Log4jUtils.init(); BeanUtils.init(); - RestObjectMapperFactory.setDefaultRestObjectMapper(new RestObjectMapperWithStringMapper()); + RestObjectMapperFactory + .setCustomMapper(RestObjectMapperFactory.KEY_CONSUMER_WRITE, new RestObjectMapperWithStringMapper()); + RestObjectMapperFactory.setCustomMapper(RestObjectMapperFactory.KEY_PROVIDER_WRITE, new RestObjectMapper()); + RestObjectMapperFactory.setCustomMapper(RestObjectMapperFactory.KEY_PROVIDER_READ_OR_CONSUMER_READ, + new RestObjectMapperWithStringMapper()); } public static void run() throws Exception { @@ -78,6 +84,7 @@ public class JaxrsClient { beanParamPojoClient.testAll(); BeanParamRestTemplateClient beanParamRestTemplateClient = new BeanParamRestTemplateClient(); beanParamRestTemplateClient.testAll(); + DefaultModelServiceClient.run(); } private static void testCompute(RestTemplate template) throws Exception { diff --git a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/RestObjectMapperFactory.java b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/pojoDefault/DefaultModel.java similarity index 63% copy from common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/RestObjectMapperFactory.java copy to demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/pojoDefault/DefaultModel.java index 188d9de..1c5d64e 100644 --- a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/RestObjectMapperFactory.java +++ b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/pojoDefault/DefaultModel.java @@ -15,19 +15,16 @@ * limitations under the License. */ -package org.apache.servicecomb.common.rest.codec; +package org.apache.servicecomb.demo.jaxrs.client.pojoDefault; -/** - * Manage RestObjectMapper instances. Give users an option to specify custom mappers. - */ -public class RestObjectMapperFactory { - private static AbstractRestObjectMapper defaultMapper = new RestObjectMapper(); +public class DefaultModel { + private int index; - public static AbstractRestObjectMapper getRestObjectMapper() { - return defaultMapper; + public int getIndex() { + return index; } - public static void setDefaultRestObjectMapper(AbstractRestObjectMapper customMapper) { - defaultMapper = customMapper; + public void setIndex(int index) { + this.index = index; } } diff --git a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/pojoDefault/DefaultModelServiceClient.java b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/pojoDefault/DefaultModelServiceClient.java new file mode 100644 index 0000000..f6dedf1 --- /dev/null +++ b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/pojoDefault/DefaultModelServiceClient.java @@ -0,0 +1,46 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.servicecomb.demo.jaxrs.client.pojoDefault; + +import org.apache.servicecomb.core.CseContext; +import org.apache.servicecomb.demo.TestMgr; +import org.apache.servicecomb.demo.jaxrs.server.pojoDefault.DefaultResponseModel; +import org.apache.servicecomb.provider.springmvc.reference.RestTemplateBuilder; +import org.springframework.web.client.RestTemplate; + +public class DefaultModelServiceClient { + private static RestTemplate template = RestTemplateBuilder.create(); + + private static String urlPrefix = "cse://jaxrs/DefaultModelService"; + + public static void run() { + // highway do not support this feature + CseContext.getInstance().getConsumerProviderManager().setTransport("jaxrs", "rest"); + testDefaultModelService(); + } + + private static void testDefaultModelService() { + DefaultModel model = new DefaultModel(); + model.setIndex(400); + DefaultResponseModel result = template.postForObject(urlPrefix + "/model", model, DefaultResponseModel.class); + TestMgr.check(result.getAge(), 200); + TestMgr.check(result.getIndex(), 400); + TestMgr.check(result.getName(), "World"); + TestMgr.check(result.getDesc(), null); + } +} diff --git a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/server/pojoDefault/DefaultResponseModel.java b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/server/pojoDefault/DefaultResponseModel.java new file mode 100644 index 0000000..6c4350a --- /dev/null +++ b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/server/pojoDefault/DefaultResponseModel.java @@ -0,0 +1,76 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.servicecomb.demo.jaxrs.server.pojoDefault; + +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; +import javax.validation.constraints.Null; + +public class DefaultResponseModel { + @Min(20) + @Max(2000) + @Null + private Integer age = 200; + + @Min(2) + @Max(30) + @Null + private String name = "World"; + + private int index; + + private String desc = "Hello"; + + public Integer getAge() { + return age; + } + + public void setAge(Integer age) { + this.age = age; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + + public int getIndex() { + return index; + } + + public void setIndex(int index) { + this.index = index; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + @Override + public String toString() { + return "index=" + index + ";name=" + name + ";age=" + age; + } +} diff --git a/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/JaxrsServer.java b/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/JaxrsServer.java index bf5eba5..f661720 100644 --- a/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/JaxrsServer.java +++ b/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/JaxrsServer.java @@ -17,6 +17,7 @@ package org.apache.servicecomb.demo.jaxrs.server; +import org.apache.servicecomb.common.rest.codec.RestObjectMapper; import org.apache.servicecomb.common.rest.codec.RestObjectMapperFactory; import org.apache.servicecomb.demo.RestObjectMapperWithStringMapper; import org.apache.servicecomb.foundation.common.utils.BeanUtils; @@ -26,6 +27,10 @@ public class JaxrsServer { public static void main(String[] args) throws Exception { Log4jUtils.init(); BeanUtils.init(); - RestObjectMapperFactory.setDefaultRestObjectMapper(new RestObjectMapperWithStringMapper()); + RestObjectMapperFactory + .setCustomMapper(RestObjectMapperFactory.KEY_CONSUMER_WRITE, new RestObjectMapperWithStringMapper()); + RestObjectMapperFactory.setCustomMapper(RestObjectMapperFactory.KEY_PROVIDER_WRITE, new RestObjectMapper()); + RestObjectMapperFactory.setCustomMapper(RestObjectMapperFactory.KEY_PROVIDER_READ_OR_CONSUMER_READ, + new RestObjectMapperWithStringMapper()); } } diff --git a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/RestObjectMapperFactory.java b/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/pojoDefault/DefaultModelService.java similarity index 57% copy from common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/RestObjectMapperFactory.java copy to demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/pojoDefault/DefaultModelService.java index 188d9de..7296a09 100644 --- a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/RestObjectMapperFactory.java +++ b/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/pojoDefault/DefaultModelService.java @@ -15,19 +15,24 @@ * limitations under the License. */ -package org.apache.servicecomb.common.rest.codec; +package org.apache.servicecomb.demo.jaxrs.server.pojoDefault; -/** - * Manage RestObjectMapper instances. Give users an option to specify custom mappers. - */ -public class RestObjectMapperFactory { - private static AbstractRestObjectMapper defaultMapper = new RestObjectMapper(); +import javax.ws.rs.POST; +import javax.ws.rs.Path; - public static AbstractRestObjectMapper getRestObjectMapper() { - return defaultMapper; - } +import org.apache.servicecomb.provider.rest.common.RestSchema; - public static void setDefaultRestObjectMapper(AbstractRestObjectMapper customMapper) { - defaultMapper = customMapper; +@RestSchema(schemaId = "DefaultModelService") +@Path("DefaultModelService") +public class DefaultModelService { + @Path("/model") + @POST + public DefaultResponseModel errorCode(DefaultRequestModel request) { + DefaultResponseModel model = new DefaultResponseModel(); + model.setIndex(request.getIndex()); + model.setAge(request.getAge()); + model.setName(request.getName()); + model.setDesc(null); + return model; } } diff --git a/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/pojoDefault/DefaultRequestModel.java b/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/pojoDefault/DefaultRequestModel.java new file mode 100644 index 0000000..0cc5357 --- /dev/null +++ b/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/pojoDefault/DefaultRequestModel.java @@ -0,0 +1,76 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.servicecomb.demo.jaxrs.server.pojoDefault; + +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; +import javax.validation.constraints.Null; + +public class DefaultRequestModel { + @Min(20) + @Max(2000) + @Null + private Integer age = 200; + + @Min(2) + @Max(30) + @Null + private String name = "World"; + + private int index; + + private String desc; + + public Integer getAge() { + return age; + } + + public void setAge(Integer age) { + this.age = age; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + + public int getIndex() { + return index; + } + + public void setIndex(int index) { + this.index = index; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + @Override + public String toString() { + return "index=" + index + ";name=" + name + ";age=" + age; + } +} diff --git a/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/pojoDefault/DefaultResponseModel.java b/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/pojoDefault/DefaultResponseModel.java new file mode 100644 index 0000000..bf4288a --- /dev/null +++ b/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/pojoDefault/DefaultResponseModel.java @@ -0,0 +1,76 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.servicecomb.demo.jaxrs.server.pojoDefault; + +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; +import javax.validation.constraints.Null; + +public class DefaultResponseModel { + @Min(20) + @Max(2000) + @Null + private Integer age = 200; + + @Min(2) + @Max(30) + @Null + private String name = "World"; + + private int index; + + private String desc; + + public Integer getAge() { + return age; + } + + public void setAge(Integer age) { + this.age = age; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + + public int getIndex() { + return index; + } + + public void setIndex(int index) { + this.index = index; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + @Override + public String toString() { + return "index=" + index + ";name=" + name + ";age=" + age; + } +} diff --git a/demo/demo-schema/src/main/java/org/apache/servicecomb/demo/RestObjectMapperWithStringMapper.java b/demo/demo-schema/src/main/java/org/apache/servicecomb/demo/RestObjectMapperWithStringMapper.java index d90160c..6438069 100644 --- a/demo/demo-schema/src/main/java/org/apache/servicecomb/demo/RestObjectMapperWithStringMapper.java +++ b/demo/demo-schema/src/main/java/org/apache/servicecomb/demo/RestObjectMapperWithStringMapper.java @@ -24,6 +24,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; +import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.databind.JavaType; /** @@ -50,6 +51,7 @@ public class RestObjectMapperWithStringMapper extends RestObjectMapper { public RestObjectMapperWithStringMapper() { super(); + setSerializationInclusion(Include.NON_NULL); } @Override
