You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2020/02/27 10:10:39 UTC
[servicecomb-java-chassis] branch master updated: [SCB-1737]
support ISO 8601 data and time (part2: HIGHWAY)
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/servicecomb-java-chassis.git
The following commit(s) were added to refs/heads/master by this push:
new 908e20f [SCB-1737] support ISO 8601 data and time (part2: HIGHWAY)
908e20f is described below
commit 908e20fdd30694d481b372fa178d3db7e39454bf
Author: liubao <bi...@qq.com>
AuthorDate: Tue Feb 25 11:17:19 2020 +0800
[SCB-1737] support ISO 8601 data and time (part2: HIGHWAY)
---
common/common-rest/pom.xml | 4 ----
.../common/rest/codec/RestObjectMapperFactory.java | 2 ++
.../common/rest/codec/TestRestObjectMapper.java | 1 +
.../servicecomb/common/rest/codec/fix/TestDoSFix.java | 2 +-
.../demo/RestObjectMapperWithStringMapper.java | 2 +-
.../demo/springmvc/client/TestDateTimeSchema.java | 4 ++--
foundations/foundation-common/pom.xml | 9 ++++++++-
.../common/utils}/AbstractRestObjectMapper.java | 2 +-
.../servicecomb/foundation/common/utils/JsonUtils.java | 13 +------------
.../foundation/common/utils}/RestObjectMapper.java | 2 +-
.../schema/deserializer/scalar/Int64ReadSchemas.java | 15 ++++++---------
.../schema/serializer/scalar/Int64WriteSchemas.java | 12 ++++++++----
12 files changed, 32 insertions(+), 36 deletions(-)
diff --git a/common/common-rest/pom.xml b/common/common-rest/pom.xml
index 9b79b8f..73dc341 100644
--- a/common/common-rest/pom.xml
+++ b/common/common-rest/pom.xml
@@ -60,9 +60,5 @@
<artifactId>swagger-generator-jaxrs</artifactId>
<scope>test</scope>
</dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.datatype</groupId>
- <artifactId>jackson-datatype-jsr310</artifactId>
- </dependency>
</dependencies>
</project>
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 4394217..683aa31 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
@@ -19,6 +19,8 @@ package org.apache.servicecomb.common.rest.codec;
import java.util.List;
+import org.apache.servicecomb.foundation.common.utils.AbstractRestObjectMapper;
+import org.apache.servicecomb.foundation.common.utils.RestObjectMapper;
import org.apache.servicecomb.foundation.common.utils.SPIServiceUtils;
import com.fasterxml.jackson.databind.Module;
diff --git a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/codec/TestRestObjectMapper.java b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/codec/TestRestObjectMapper.java
index af840e1..f73e0a7 100644
--- a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/codec/TestRestObjectMapper.java
+++ b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/codec/TestRestObjectMapper.java
@@ -20,6 +20,7 @@ package org.apache.servicecomb.common.rest.codec;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
+import org.apache.servicecomb.foundation.common.utils.RestObjectMapper;
import org.junit.Assert;
import org.junit.Test;
diff --git a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/codec/fix/TestDoSFix.java b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/codec/fix/TestDoSFix.java
index a8b175a..6ce310d 100644
--- a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/codec/fix/TestDoSFix.java
+++ b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/codec/fix/TestDoSFix.java
@@ -21,7 +21,7 @@ import java.io.InputStream;
import java.lang.reflect.Field;
import java.util.concurrent.Callable;
-import org.apache.servicecomb.common.rest.codec.RestObjectMapper;
+import org.apache.servicecomb.foundation.common.utils.RestObjectMapper;
import org.apache.servicecomb.foundation.test.scaffolding.model.Color;
import org.junit.Assert;
import org.junit.Test;
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..a15d4cb 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
@@ -19,7 +19,7 @@ package org.apache.servicecomb.demo;
import java.io.IOException;
-import org.apache.servicecomb.common.rest.codec.RestObjectMapper;
+import org.apache.servicecomb.foundation.common.utils.RestObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
diff --git a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestDateTimeSchema.java b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestDateTimeSchema.java
index a55edf4..b22f8c7 100644
--- a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestDateTimeSchema.java
+++ b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestDateTimeSchema.java
@@ -54,7 +54,7 @@ public class TestDateTimeSchema implements CategorizedTestCase {
@Override
public void testRestTransport() throws Exception {
- testDateTimeSchema();
+
}
@Override
@@ -64,7 +64,7 @@ public class TestDateTimeSchema implements CategorizedTestCase {
@Override
public void testAllTransport() throws Exception {
-
+ testDateTimeSchema();
}
private void testDateTimeSchema() {
diff --git a/foundations/foundation-common/pom.xml b/foundations/foundation-common/pom.xml
index 16f1792..f411ce9 100644
--- a/foundations/foundation-common/pom.xml
+++ b/foundations/foundation-common/pom.xml
@@ -91,7 +91,14 @@
<groupId>org.apache.servicecomb</groupId>
<artifactId>foundation-test-scaffolding</artifactId>
</dependency>
-
+ <dependency>
+ <groupId>com.fasterxml.jackson.datatype</groupId>
+ <artifactId>jackson-datatype-jsr310</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>io.vertx</groupId>
+ <artifactId>vertx-core</artifactId>
+ </dependency>
<!-- some unit test case depend on log4j1, so set this dependency after test scope area -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
diff --git a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/AbstractRestObjectMapper.java b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/AbstractRestObjectMapper.java
similarity index 95%
rename from common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/AbstractRestObjectMapper.java
rename to foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/AbstractRestObjectMapper.java
index 0ca5fa6..0a24696 100644
--- a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/AbstractRestObjectMapper.java
+++ b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/AbstractRestObjectMapper.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.servicecomb.common.rest.codec;
+package org.apache.servicecomb.foundation.common.utils;
import com.fasterxml.jackson.databind.ObjectMapper;
diff --git a/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/JsonUtils.java b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/JsonUtils.java
index fb81239..ed1d1ad 100644
--- a/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/JsonUtils.java
+++ b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/JsonUtils.java
@@ -22,25 +22,14 @@ import java.io.InputStream;
import java.io.OutputStream;
import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.SerializationFeature;
public final class JsonUtils {
public static final ObjectMapper OBJ_MAPPER;
static {
- OBJ_MAPPER = new ObjectMapper();
- OBJ_MAPPER.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
- OBJ_MAPPER.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
-
-// SimpleModule partDeserializeModule = new SimpleModule("partDeserializeModule",
-// new Version(0, 0, 1, null, "javax.servlet", "javax.servlet-api")
-// );
-// partDeserializeModule.addSerializer(Part.class, new JavaxServletPartSerializer());
-// partDeserializeModule.addDeserializer(Part.class, new JavaxServletPartDeserializer());
-// OBJ_MAPPER.registerModule(partDeserializeModule);
+ OBJ_MAPPER = new RestObjectMapper();
}
private JsonUtils() {
diff --git a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/RestObjectMapper.java b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/RestObjectMapper.java
similarity index 98%
rename from common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/RestObjectMapper.java
rename to foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/RestObjectMapper.java
index 924871e..cd2ceb2 100644
--- a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/RestObjectMapper.java
+++ b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/RestObjectMapper.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.servicecomb.common.rest.codec;
+package org.apache.servicecomb.foundation.common.utils;
import java.io.IOException;
import java.text.FieldPosition;
diff --git a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/Int64ReadSchemas.java b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/Int64ReadSchemas.java
index 3a73f22..0befd0a 100644
--- a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/Int64ReadSchemas.java
+++ b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/Int64ReadSchemas.java
@@ -17,11 +17,13 @@
package org.apache.servicecomb.foundation.protobuf.internal.schema.deserializer.scalar;
import java.io.IOException;
+import java.time.Instant;
import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.ZoneOffset;
import java.util.Date;
import org.apache.servicecomb.foundation.common.utils.bean.LongSetter;
-import org.apache.servicecomb.foundation.protobuf.internal.ProtoUtils;
import org.apache.servicecomb.foundation.protobuf.internal.bean.PropertyDescriptor;
import org.apache.servicecomb.foundation.protobuf.internal.schema.deserializer.scalar.AbstractScalarReadSchemas.AbstractLongSchema;
@@ -38,14 +40,7 @@ public class Int64ReadSchemas {
return new LongFiledLongPrimitiveSchema<>(protoField, propertyDescriptor);
}
- if (Long.class.equals(javaType.getRawClass()) || javaType.isJavaLangObject()
- || Date.class.equals(javaType.getRawClass())
- || LocalDate.class.equals(javaType.getRawClass())) {
- return new Int64Schema<>(protoField, propertyDescriptor);
- }
-
- ProtoUtils.throwNotSupportMerge(protoField, propertyDescriptor.getJavaType());
- return null;
+ return new Int64Schema<>(protoField, propertyDescriptor);
}
private static class Int64Schema<T> extends AbstractLongSchema<T> {
@@ -60,6 +55,8 @@ public class Int64ReadSchemas {
setter.set(message, new Date(value));
} else if (LocalDate.class.equals(javaType.getRawClass())) {
setter.set(message, LocalDate.ofEpochDay(value));
+ } else if (LocalDateTime.class.equals(javaType.getRawClass())) {
+ setter.set(message, LocalDateTime.ofInstant(Instant.ofEpochMilli(value), ZoneOffset.UTC));
} else {
setter.set(message, value);
}
diff --git a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/Int64WriteSchemas.java b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/Int64WriteSchemas.java
index ed72737..1d0cf4d 100644
--- a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/Int64WriteSchemas.java
+++ b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/Int64WriteSchemas.java
@@ -18,6 +18,8 @@ package org.apache.servicecomb.foundation.protobuf.internal.schema.serializer.sc
import java.io.IOException;
import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.ZoneOffset;
import java.time.temporal.ChronoField;
import java.util.Date;
@@ -36,10 +38,6 @@ public class Int64WriteSchemas {
return new Int64PrimitiveSchema<>(protoField, propertyDescriptor);
}
- if (Long.class.equals(propertyDescriptor.getJavaType().getRawClass())) {
- return new Int64Schema<>(protoField, propertyDescriptor);
- }
-
return new Int64Schema<>(protoField, propertyDescriptor);
}
@@ -82,6 +80,12 @@ public class Int64WriteSchemas {
return;
}
+ if (value instanceof LocalDateTime) {
+ long parsedValue = ((LocalDateTime) value).toInstant(ZoneOffset.UTC).toEpochMilli();
+ output.writeScalarInt64(tag, tagSize, parsedValue);
+ return;
+ }
+
ProtoUtils.throwNotSupportWrite(protoField, value);
}
}