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/06 08:35:21 UTC
[servicecomb-java-chassis] branch master updated:
[SCB-1744]separate primitive descriptorParamType from non primitive
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 fcf298c [SCB-1744]separate primitive descriptorParamType from non primitive
fcf298c is described below
commit fcf298c6573a85085270653b8f9a6cbab1793600
Author: liubao <bi...@qq.com>
AuthorDate: Wed Feb 5 22:03:14 2020 +0800
[SCB-1744]separate primitive descriptorParamType from non primitive
---
.../converter/TestSchemaMetaCodecRestTemplate.java | 1 -
.../common/utils/LambdaMetafactoryUtils.java | 51 ++++++++++++++++--
.../foundation/common/utils/bean/BoolGetter.java | 21 ++++++++
.../foundation/common/utils/bean/BoolSetter.java | 21 ++++++++
.../foundation/common/utils/bean/ByteGetter.java | 21 ++++++++
.../foundation/common/utils/bean/ByteSetter.java | 21 ++++++++
.../foundation/common/utils/bean/CharGetter.java | 21 ++++++++
.../foundation/common/utils/bean/CharSetter.java | 21 ++++++++
.../foundation/common/utils/bean/DoubleGetter.java | 21 ++++++++
.../foundation/common/utils/bean/DoubleSetter.java | 21 ++++++++
.../foundation/common/utils/bean/FloatGetter.java | 21 ++++++++
.../foundation/common/utils/bean/FloatSetter.java | 21 ++++++++
.../foundation/common/utils/bean/IntGetter.java | 21 ++++++++
.../foundation/common/utils/bean/IntSetter.java | 21 ++++++++
.../foundation/common/utils/bean/LongGetter.java | 21 ++++++++
.../foundation/common/utils/bean/LongSetter.java | 21 ++++++++
.../foundation/common/utils/bean/ShortGetter.java | 21 ++++++++
.../foundation/common/utils/bean/ShortSetter.java | 21 ++++++++
.../common/utils/TestLambdaMetafactoryUtils.java | 6 ++-
.../common/utils/TestLambdaPerformance.java | 3 +-
.../scalar/AbstractScalarReadSchemas.java | 18 -------
.../deserializer/scalar/BoolReadSchemas.java | 3 +-
.../deserializer/scalar/DoubleReadSchemas.java | 3 +-
.../deserializer/scalar/EnumsReadSchemas.java | 3 +-
.../deserializer/scalar/Fixed32ReadSchemas.java | 9 ++--
.../deserializer/scalar/Fixed64ReadSchemas.java | 9 ++--
.../deserializer/scalar/FloatReadSchemas.java | 3 +-
.../deserializer/scalar/Int32ReadSchemas.java | 62 ++++++++++++++++++----
.../deserializer/scalar/Int64ReadSchemas.java | 13 +++--
.../deserializer/scalar/SFixed32ReadSchemas.java | 9 ++--
.../deserializer/scalar/SFixed64ReadSchemas.java | 9 ++--
.../deserializer/scalar/SInt32ReadSchemas.java | 9 ++--
.../deserializer/scalar/SInt64ReadSchemas.java | 9 ++--
.../deserializer/scalar/StringReadSchemas.java | 26 ++++++++-
.../deserializer/scalar/UInt32ReadSchemas.java | 9 ++--
.../deserializer/scalar/UInt64ReadSchemas.java | 9 ++--
.../schema/serializer/scalar/BoolWriteSchemas.java | 3 +-
.../serializer/scalar/DoubleWriteSchemas.java | 3 +-
.../serializer/scalar/Fixed32WriteSchemas.java | 3 +-
.../serializer/scalar/Fixed64WriteSchemas.java | 3 +-
.../serializer/scalar/FloatWriteSchemas.java | 3 +-
.../serializer/scalar/Int32WriteSchemas.java | 51 +++++++++++++++---
.../serializer/scalar/Int64WriteSchemas.java | 3 +-
.../serializer/scalar/SFixed32WriteSchemas.java | 3 +-
.../serializer/scalar/SFixed64WriteSchemas.java | 3 +-
.../serializer/scalar/SInt32WriteSchemas.java | 3 +-
.../serializer/scalar/SInt64WriteSchemas.java | 3 +-
.../serializer/scalar/StringWriteSchemas.java | 23 +++++++-
.../serializer/scalar/UInt32WriteSchemas.java | 3 +-
.../serializer/scalar/UInt64WriteSchemas.java | 3 +-
.../internal/bean/TestBeanDescriptorManager.java | 10 ++--
.../schema/objectparams/FlattenObjectRequest.java | 23 ++++++++
.../objectparams/TestSpringMVCObjectParamType.java | 37 +++----------
53 files changed, 658 insertions(+), 122 deletions(-)
diff --git a/common/common-protobuf/src/test/java/org/apache/servicecomb/codec/protobuf/internal/converter/TestSchemaMetaCodecRestTemplate.java b/common/common-protobuf/src/test/java/org/apache/servicecomb/codec/protobuf/internal/converter/TestSchemaMetaCodecRestTemplate.java
index 0472b37..191a419 100644
--- a/common/common-protobuf/src/test/java/org/apache/servicecomb/codec/protobuf/internal/converter/TestSchemaMetaCodecRestTemplate.java
+++ b/common/common-protobuf/src/test/java/org/apache/servicecomb/codec/protobuf/internal/converter/TestSchemaMetaCodecRestTemplate.java
@@ -18,7 +18,6 @@
package org.apache.servicecomb.codec.protobuf.internal.converter;
import java.time.LocalDate;
-import java.time.temporal.ChronoField;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
diff --git a/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/LambdaMetafactoryUtils.java b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/LambdaMetafactoryUtils.java
index 6152f4c..da690b5 100644
--- a/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/LambdaMetafactoryUtils.java
+++ b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/LambdaMetafactoryUtils.java
@@ -25,9 +25,27 @@ import java.lang.invoke.MethodType;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
-
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.servicecomb.foundation.common.utils.bean.BoolGetter;
+import org.apache.servicecomb.foundation.common.utils.bean.BoolSetter;
+import org.apache.servicecomb.foundation.common.utils.bean.ByteGetter;
+import org.apache.servicecomb.foundation.common.utils.bean.ByteSetter;
+import org.apache.servicecomb.foundation.common.utils.bean.CharGetter;
+import org.apache.servicecomb.foundation.common.utils.bean.CharSetter;
+import org.apache.servicecomb.foundation.common.utils.bean.DoubleGetter;
+import org.apache.servicecomb.foundation.common.utils.bean.DoubleSetter;
+import org.apache.servicecomb.foundation.common.utils.bean.FloatGetter;
+import org.apache.servicecomb.foundation.common.utils.bean.FloatSetter;
import org.apache.servicecomb.foundation.common.utils.bean.Getter;
+import org.apache.servicecomb.foundation.common.utils.bean.IntGetter;
+import org.apache.servicecomb.foundation.common.utils.bean.IntSetter;
+import org.apache.servicecomb.foundation.common.utils.bean.LongGetter;
+import org.apache.servicecomb.foundation.common.utils.bean.LongSetter;
import org.apache.servicecomb.foundation.common.utils.bean.Setter;
+import org.apache.servicecomb.foundation.common.utils.bean.ShortGetter;
+import org.apache.servicecomb.foundation.common.utils.bean.ShortSetter;
public final class LambdaMetafactoryUtils {
private static Field allowedModesField;
@@ -37,8 +55,33 @@ public final class LambdaMetafactoryUtils {
private static final Lookup LOOKUP = MethodHandles.lookup();
+ private static final Map<Class<?>, Class<?>> GETTER_MAP = new HashMap<>();
+
+ private static final Map<Class<?>, Class<?>> SETTER_MAP = new HashMap<>();
+
static {
enhanceLambda();
+ initGetterSetterMap();
+ }
+
+ private static void initGetterSetterMap() {
+ GETTER_MAP.put(boolean.class, BoolGetter.class);
+ GETTER_MAP.put(byte.class, ByteGetter.class);
+ GETTER_MAP.put(char.class, CharGetter.class);
+ GETTER_MAP.put(short.class, ShortGetter.class);
+ GETTER_MAP.put(int.class, IntGetter.class);
+ GETTER_MAP.put(long.class, LongGetter.class);
+ GETTER_MAP.put(float.class, FloatGetter.class);
+ GETTER_MAP.put(double.class, DoubleGetter.class);
+
+ SETTER_MAP.put(boolean.class, BoolSetter.class);
+ SETTER_MAP.put(byte.class, ByteSetter.class);
+ SETTER_MAP.put(char.class, CharSetter.class);
+ SETTER_MAP.put(short.class, ShortSetter.class);
+ SETTER_MAP.put(int.class, IntSetter.class);
+ SETTER_MAP.put(long.class, LongSetter.class);
+ SETTER_MAP.put(float.class, FloatSetter.class);
+ SETTER_MAP.put(double.class, DoubleSetter.class);
}
private static void enhanceLambda() {
@@ -124,7 +167,8 @@ public final class LambdaMetafactoryUtils {
}
public static <T> T createGetter(Method getMethod) {
- return createLambda(getMethod, Getter.class);
+ Class<?> getterCls = GETTER_MAP.getOrDefault(getMethod.getReturnType(), Getter.class);
+ return createLambda(getMethod, getterCls);
}
// slower than reflect directly
@@ -141,7 +185,8 @@ public final class LambdaMetafactoryUtils {
}
public static <T> T createSetter(Method setMethod) throws Throwable {
- return createLambda(setMethod, Setter.class);
+ Class<?> setterCls = SETTER_MAP.getOrDefault(setMethod.getParameterTypes()[0], Setter.class);
+ return createLambda(setMethod, setterCls);
}
// slower than reflect directly
diff --git a/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/BoolGetter.java b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/BoolGetter.java
new file mode 100644
index 0000000..11e0a3c
--- /dev/null
+++ b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/BoolGetter.java
@@ -0,0 +1,21 @@
+/*
+ * 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.foundation.common.utils.bean;
+
+public interface BoolGetter<T> {
+ boolean get(T instance);
+}
diff --git a/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/BoolSetter.java b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/BoolSetter.java
new file mode 100644
index 0000000..8cbacb5
--- /dev/null
+++ b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/BoolSetter.java
@@ -0,0 +1,21 @@
+/*
+ * 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.foundation.common.utils.bean;
+
+public interface BoolSetter<T> {
+ void set(T instance, boolean value);
+}
diff --git a/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/ByteGetter.java b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/ByteGetter.java
new file mode 100644
index 0000000..c4bab67
--- /dev/null
+++ b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/ByteGetter.java
@@ -0,0 +1,21 @@
+/*
+ * 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.foundation.common.utils.bean;
+
+public interface ByteGetter<T> {
+ byte get(T instance);
+}
diff --git a/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/ByteSetter.java b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/ByteSetter.java
new file mode 100644
index 0000000..952d06b
--- /dev/null
+++ b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/ByteSetter.java
@@ -0,0 +1,21 @@
+/*
+ * 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.foundation.common.utils.bean;
+
+public interface ByteSetter<T> {
+ void set(T instance, byte value);
+}
diff --git a/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/CharGetter.java b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/CharGetter.java
new file mode 100644
index 0000000..2e09c98
--- /dev/null
+++ b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/CharGetter.java
@@ -0,0 +1,21 @@
+/*
+ * 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.foundation.common.utils.bean;
+
+public interface CharGetter<T> {
+ char get(T instance);
+}
diff --git a/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/CharSetter.java b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/CharSetter.java
new file mode 100644
index 0000000..e022fa3
--- /dev/null
+++ b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/CharSetter.java
@@ -0,0 +1,21 @@
+/*
+ * 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.foundation.common.utils.bean;
+
+public interface CharSetter<T> {
+ void set(T instance, char value);
+}
diff --git a/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/DoubleGetter.java b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/DoubleGetter.java
new file mode 100644
index 0000000..5349c4c
--- /dev/null
+++ b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/DoubleGetter.java
@@ -0,0 +1,21 @@
+/*
+ * 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.foundation.common.utils.bean;
+
+public interface DoubleGetter<T> {
+ double get(T instance);
+}
diff --git a/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/DoubleSetter.java b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/DoubleSetter.java
new file mode 100644
index 0000000..c39a802
--- /dev/null
+++ b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/DoubleSetter.java
@@ -0,0 +1,21 @@
+/*
+ * 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.foundation.common.utils.bean;
+
+public interface DoubleSetter<T> {
+ void set(T instance, double value);
+}
diff --git a/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/FloatGetter.java b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/FloatGetter.java
new file mode 100644
index 0000000..405d233
--- /dev/null
+++ b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/FloatGetter.java
@@ -0,0 +1,21 @@
+/*
+ * 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.foundation.common.utils.bean;
+
+public interface FloatGetter<T> {
+ float get(T instance);
+}
diff --git a/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/FloatSetter.java b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/FloatSetter.java
new file mode 100644
index 0000000..7d4b75a
--- /dev/null
+++ b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/FloatSetter.java
@@ -0,0 +1,21 @@
+/*
+ * 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.foundation.common.utils.bean;
+
+public interface FloatSetter<T> {
+ void set(T instance, float value);
+}
diff --git a/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/IntGetter.java b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/IntGetter.java
new file mode 100644
index 0000000..b7aaf29
--- /dev/null
+++ b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/IntGetter.java
@@ -0,0 +1,21 @@
+/*
+ * 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.foundation.common.utils.bean;
+
+public interface IntGetter<T> {
+ int get(T instance);
+}
diff --git a/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/IntSetter.java b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/IntSetter.java
new file mode 100644
index 0000000..0a0425e
--- /dev/null
+++ b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/IntSetter.java
@@ -0,0 +1,21 @@
+/*
+ * 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.foundation.common.utils.bean;
+
+public interface IntSetter<T> {
+ void set(T instance, int value);
+}
diff --git a/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/LongGetter.java b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/LongGetter.java
new file mode 100644
index 0000000..8f4d68d
--- /dev/null
+++ b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/LongGetter.java
@@ -0,0 +1,21 @@
+/*
+ * 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.foundation.common.utils.bean;
+
+public interface LongGetter<T> {
+ long get(T instance);
+}
diff --git a/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/LongSetter.java b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/LongSetter.java
new file mode 100644
index 0000000..a0ba4f9
--- /dev/null
+++ b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/LongSetter.java
@@ -0,0 +1,21 @@
+/*
+ * 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.foundation.common.utils.bean;
+
+public interface LongSetter<T> {
+ void set(T instance, long value);
+}
diff --git a/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/ShortGetter.java b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/ShortGetter.java
new file mode 100644
index 0000000..bea64f4
--- /dev/null
+++ b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/ShortGetter.java
@@ -0,0 +1,21 @@
+/*
+ * 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.foundation.common.utils.bean;
+
+public interface ShortGetter<T> {
+ short get(T instance);
+}
diff --git a/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/ShortSetter.java b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/ShortSetter.java
new file mode 100644
index 0000000..db741cb
--- /dev/null
+++ b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/bean/ShortSetter.java
@@ -0,0 +1,21 @@
+/*
+ * 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.foundation.common.utils.bean;
+
+public interface ShortSetter<T> {
+ void set(T instance, short value);
+}
diff --git a/foundations/foundation-common/src/test/java/org/apache/servicecomb/foundation/common/utils/TestLambdaMetafactoryUtils.java b/foundations/foundation-common/src/test/java/org/apache/servicecomb/foundation/common/utils/TestLambdaMetafactoryUtils.java
index fc4f39b..40672cb 100644
--- a/foundations/foundation-common/src/test/java/org/apache/servicecomb/foundation/common/utils/TestLambdaMetafactoryUtils.java
+++ b/foundations/foundation-common/src/test/java/org/apache/servicecomb/foundation/common/utils/TestLambdaMetafactoryUtils.java
@@ -25,6 +25,8 @@ import java.util.function.Function;
import java.util.function.Supplier;
import org.apache.servicecomb.foundation.common.utils.bean.Getter;
+import org.apache.servicecomb.foundation.common.utils.bean.IntGetter;
+import org.apache.servicecomb.foundation.common.utils.bean.IntSetter;
import org.apache.servicecomb.foundation.common.utils.bean.Setter;
import org.hamcrest.Matchers;
import org.junit.Assert;
@@ -68,8 +70,8 @@ public class TestLambdaMetafactoryUtils {
@SuppressWarnings("unchecked")
@Test
public void createGetterSetterByMethod() throws Throwable {
- Getter<Model, Integer> getter = LambdaMetafactoryUtils.createGetter(Model.class.getMethod("getF1"));
- Setter<Model, Integer> setter = LambdaMetafactoryUtils.createSetter(Model.class.getMethod("setF1", int.class));
+ IntGetter<Model> getter = LambdaMetafactoryUtils.createGetter(Model.class.getMethod("getF1"));
+ IntSetter<Model> setter = LambdaMetafactoryUtils.createSetter(Model.class.getMethod("setF1", int.class));
BiFunction<Object, Object, Object> echo = LambdaMetafactoryUtils
.createLambda(Model.class.getMethod("echo", List.class), BiFunction.class);
diff --git a/foundations/foundation-common/src/test/java/org/apache/servicecomb/foundation/common/utils/TestLambdaPerformance.java b/foundations/foundation-common/src/test/java/org/apache/servicecomb/foundation/common/utils/TestLambdaPerformance.java
index d60c068..ab92c86 100644
--- a/foundations/foundation-common/src/test/java/org/apache/servicecomb/foundation/common/utils/TestLambdaPerformance.java
+++ b/foundations/foundation-common/src/test/java/org/apache/servicecomb/foundation/common/utils/TestLambdaPerformance.java
@@ -24,6 +24,7 @@ import java.lang.reflect.Method;
import org.apache.servicecomb.foundation.common.utils.TestLambdaMetafactoryUtils.Model;
import org.apache.servicecomb.foundation.common.utils.bean.Getter;
+import org.apache.servicecomb.foundation.common.utils.bean.IntGetter;
public class TestLambdaPerformance {
static Model model = new Model();
@@ -37,7 +38,7 @@ public class TestLambdaPerformance {
static MethodHandle mh_f1_getter;
- static Getter<Model, Integer> lambda_f1_method_getter;
+ static IntGetter<Model> lambda_f1_method_getter;
static Field f1_field;
diff --git a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/AbstractScalarReadSchemas.java b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/AbstractScalarReadSchemas.java
index 89bfb0d..a1f8e06 100644
--- a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/AbstractScalarReadSchemas.java
+++ b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/AbstractScalarReadSchemas.java
@@ -32,15 +32,6 @@ public class AbstractScalarReadSchemas {
}
}
- static abstract class AbstractIntPrimitiveSchema<T> extends FieldSchema<T> {
- protected final Setter<T, Integer> setter;
-
- public AbstractIntPrimitiveSchema(Field protoField, PropertyDescriptor propertyDescriptor) {
- super(protoField, propertyDescriptor.getJavaType());
- this.setter = propertyDescriptor.getSetter();
- }
- }
-
static abstract class AbstractLongSchema<T> extends FieldSchema<T> {
protected final Setter<T, Object> setter;
@@ -49,13 +40,4 @@ public class AbstractScalarReadSchemas {
this.setter = propertyDescriptor.getSetter();
}
}
-
- static abstract class AbstractLongPrimitiveSchema<T> extends FieldSchema<T> {
- protected final Setter<T, Long> setter;
-
- public AbstractLongPrimitiveSchema(Field protoField, PropertyDescriptor propertyDescriptor) {
- super(protoField, propertyDescriptor.getJavaType());
- this.setter = propertyDescriptor.getSetter();
- }
- }
}
diff --git a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/BoolReadSchemas.java b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/BoolReadSchemas.java
index d543a7b..a6b1e75 100644
--- a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/BoolReadSchemas.java
+++ b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/BoolReadSchemas.java
@@ -18,6 +18,7 @@ package org.apache.servicecomb.foundation.protobuf.internal.schema.deserializer.
import java.io.IOException;
+import org.apache.servicecomb.foundation.common.utils.bean.BoolSetter;
import org.apache.servicecomb.foundation.common.utils.bean.Setter;
import org.apache.servicecomb.foundation.protobuf.internal.ProtoUtils;
import org.apache.servicecomb.foundation.protobuf.internal.bean.PropertyDescriptor;
@@ -60,7 +61,7 @@ public class BoolReadSchemas {
}
private static class BooleanPrimitiveSchema<T> extends FieldSchema<T> {
- private final Setter<T, Boolean> setter;
+ private final BoolSetter<T> setter;
public BooleanPrimitiveSchema(Field protoField, PropertyDescriptor propertyDescriptor) {
super(protoField, propertyDescriptor.getJavaType());
diff --git a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/DoubleReadSchemas.java b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/DoubleReadSchemas.java
index 2eb5fa1..dbac060 100644
--- a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/DoubleReadSchemas.java
+++ b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/DoubleReadSchemas.java
@@ -18,6 +18,7 @@ package org.apache.servicecomb.foundation.protobuf.internal.schema.deserializer.
import java.io.IOException;
+import org.apache.servicecomb.foundation.common.utils.bean.DoubleSetter;
import org.apache.servicecomb.foundation.common.utils.bean.Setter;
import org.apache.servicecomb.foundation.protobuf.internal.ProtoUtils;
import org.apache.servicecomb.foundation.protobuf.internal.bean.PropertyDescriptor;
@@ -60,7 +61,7 @@ public class DoubleReadSchemas {
}
private static class DoublePrimitiveSchema<T> extends FieldSchema<T> {
- private final Setter<T, Double> setter;
+ private final DoubleSetter<T> setter;
public DoublePrimitiveSchema(Field protoField, PropertyDescriptor propertyDescriptor) {
super(protoField, propertyDescriptor.getJavaType());
diff --git a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/EnumsReadSchemas.java b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/EnumsReadSchemas.java
index 2299b05..1ca9fed 100644
--- a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/EnumsReadSchemas.java
+++ b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/EnumsReadSchemas.java
@@ -18,6 +18,7 @@ package org.apache.servicecomb.foundation.protobuf.internal.schema.deserializer.
import java.io.IOException;
+import org.apache.servicecomb.foundation.common.utils.bean.IntSetter;
import org.apache.servicecomb.foundation.common.utils.bean.Setter;
import org.apache.servicecomb.foundation.protobuf.internal.ProtoUtils;
import org.apache.servicecomb.foundation.protobuf.internal.bean.PropertyDescriptor;
@@ -95,7 +96,7 @@ public class EnumsReadSchemas {
}
private static class IntPrimitiveEnumSchema<T> extends FieldSchema<T> {
- private final Setter<T, Integer> setter;
+ private final IntSetter<T> setter;
public IntPrimitiveEnumSchema(Field protoField, PropertyDescriptor propertyDescriptor) {
super(protoField, propertyDescriptor.getJavaType());
diff --git a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/Fixed32ReadSchemas.java b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/Fixed32ReadSchemas.java
index dc88866..37a9a4b 100644
--- a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/Fixed32ReadSchemas.java
+++ b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/Fixed32ReadSchemas.java
@@ -18,9 +18,9 @@ package org.apache.servicecomb.foundation.protobuf.internal.schema.deserializer.
import java.io.IOException;
+import org.apache.servicecomb.foundation.common.utils.bean.IntSetter;
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.AbstractIntPrimitiveSchema;
import org.apache.servicecomb.foundation.protobuf.internal.schema.deserializer.scalar.AbstractScalarReadSchemas.AbstractIntSchema;
import com.fasterxml.jackson.databind.JavaType;
@@ -57,9 +57,12 @@ public class Fixed32ReadSchemas {
}
}
- private static class Fixed32PrimitiveSchema<T> extends AbstractIntPrimitiveSchema<T> {
+ private static class Fixed32PrimitiveSchema<T> extends FieldSchema<T> {
+ protected final IntSetter<T> setter;
+
public Fixed32PrimitiveSchema(Field protoField, PropertyDescriptor propertyDescriptor) {
- super(protoField, propertyDescriptor);
+ super(protoField, propertyDescriptor.getJavaType());
+ this.setter = propertyDescriptor.getSetter();
}
@Override
diff --git a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/Fixed64ReadSchemas.java b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/Fixed64ReadSchemas.java
index bb52915..ddd1cbf 100644
--- a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/Fixed64ReadSchemas.java
+++ b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/Fixed64ReadSchemas.java
@@ -18,9 +18,9 @@ package org.apache.servicecomb.foundation.protobuf.internal.schema.deserializer.
import java.io.IOException;
+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.AbstractLongPrimitiveSchema;
import org.apache.servicecomb.foundation.protobuf.internal.schema.deserializer.scalar.AbstractScalarReadSchemas.AbstractLongSchema;
import com.fasterxml.jackson.databind.JavaType;
@@ -57,9 +57,12 @@ public class Fixed64ReadSchemas {
}
}
- private static class Fixed64PrimitiveSchema<T> extends AbstractLongPrimitiveSchema<T> {
+ private static class Fixed64PrimitiveSchema<T> extends FieldSchema<T> {
+ protected final LongSetter<T> setter;
+
public Fixed64PrimitiveSchema(Field protoField, PropertyDescriptor propertyDescriptor) {
- super(protoField, propertyDescriptor);
+ super(protoField, propertyDescriptor.getJavaType());
+ this.setter = propertyDescriptor.getSetter();
}
@Override
diff --git a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/FloatReadSchemas.java b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/FloatReadSchemas.java
index 971329d..46879c1 100644
--- a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/FloatReadSchemas.java
+++ b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/FloatReadSchemas.java
@@ -18,6 +18,7 @@ package org.apache.servicecomb.foundation.protobuf.internal.schema.deserializer.
import java.io.IOException;
+import org.apache.servicecomb.foundation.common.utils.bean.FloatSetter;
import org.apache.servicecomb.foundation.common.utils.bean.Setter;
import org.apache.servicecomb.foundation.protobuf.internal.ProtoUtils;
import org.apache.servicecomb.foundation.protobuf.internal.bean.PropertyDescriptor;
@@ -60,7 +61,7 @@ public class FloatReadSchemas {
}
private static class FloatPrimitiveSchema<T> extends FieldSchema<T> {
- private final Setter<T, Float> setter;
+ private final FloatSetter<T> setter;
public FloatPrimitiveSchema(Field protoField, PropertyDescriptor propertyDescriptor) {
super(protoField, propertyDescriptor.getJavaType());
diff --git a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/Int32ReadSchemas.java b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/Int32ReadSchemas.java
index 2ad7f90..644102f 100644
--- a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/Int32ReadSchemas.java
+++ b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/Int32ReadSchemas.java
@@ -18,9 +18,11 @@ package org.apache.servicecomb.foundation.protobuf.internal.schema.deserializer.
import java.io.IOException;
+import org.apache.servicecomb.foundation.common.utils.bean.ByteSetter;
+import org.apache.servicecomb.foundation.common.utils.bean.IntSetter;
+import org.apache.servicecomb.foundation.common.utils.bean.ShortSetter;
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.AbstractIntPrimitiveSchema;
import org.apache.servicecomb.foundation.protobuf.internal.schema.deserializer.scalar.AbstractScalarReadSchemas.AbstractIntSchema;
import com.fasterxml.jackson.databind.JavaType;
@@ -32,9 +34,16 @@ import io.protostuff.runtime.FieldSchema;
public class Int32ReadSchemas {
public static <T> FieldSchema<T> create(Field protoField, PropertyDescriptor propertyDescriptor) {
JavaType javaType = propertyDescriptor.getJavaType();
- if (int.class.equals(javaType.getRawClass()) || byte.class.equals(javaType.getRawClass()) || short.class
- .equals(javaType.getRawClass())) {
- return new Int32PrimitiveSchema<>(protoField, propertyDescriptor);
+ if (int.class.equals(javaType.getRawClass())) {
+ return new IntFieldIntPrimitiveSchema<>(protoField, propertyDescriptor);
+ }
+
+ if (short.class.equals(javaType.getRawClass())) {
+ return new ShortFieldIntPrimitiveSchema<>(protoField, propertyDescriptor);
+ }
+
+ if (byte.class.equals(javaType.getRawClass())) {
+ return new ByteFieldIntPrimitiveSchema<>(protoField, propertyDescriptor);
}
if (Integer.class.equals(javaType.getRawClass()) || Byte.class.equals(javaType.getRawClass()) || Short.class
@@ -55,9 +64,9 @@ public class Int32ReadSchemas {
@Override
public int mergeFrom(InputEx input, T message) throws IOException {
int value = input.readInt32();
- if (Byte.class.equals(javaType.getRawClass()) || byte.class.equals(javaType.getRawClass())) {
+ if (Byte.class.equals(javaType.getRawClass())) {
setter.set(message, (byte) value);
- } else if (Short.class.equals(javaType.getRawClass()) || short.class.equals(javaType.getRawClass())) {
+ } else if (Short.class.equals(javaType.getRawClass())) {
setter.set(message, (short) value);
} else {
setter.set(message, value);
@@ -66,9 +75,12 @@ public class Int32ReadSchemas {
}
}
- private static class Int32PrimitiveSchema<T> extends AbstractIntPrimitiveSchema<T> {
- public Int32PrimitiveSchema(Field protoField, PropertyDescriptor propertyDescriptor) {
- super(protoField, propertyDescriptor);
+ private static class IntFieldIntPrimitiveSchema<T> extends FieldSchema<T> {
+ protected final IntSetter<T> setter;
+
+ public IntFieldIntPrimitiveSchema(Field protoField, PropertyDescriptor propertyDescriptor) {
+ super(protoField, propertyDescriptor.getJavaType());
+ this.setter = propertyDescriptor.getSetter();
}
@Override
@@ -78,4 +90,36 @@ public class Int32ReadSchemas {
return input.readFieldNumber();
}
}
+
+ private static class ShortFieldIntPrimitiveSchema<T> extends FieldSchema<T> {
+ protected final ShortSetter<T> setter;
+
+ public ShortFieldIntPrimitiveSchema(Field protoField, PropertyDescriptor propertyDescriptor) {
+ super(protoField, propertyDescriptor.getJavaType());
+ this.setter = propertyDescriptor.getSetter();
+ }
+
+ @Override
+ public int mergeFrom(InputEx input, T message) throws IOException {
+ int value = input.readInt32();
+ setter.set(message, (short) value);
+ return input.readFieldNumber();
+ }
+ }
+
+ private static class ByteFieldIntPrimitiveSchema<T> extends FieldSchema<T> {
+ protected final ByteSetter<T> setter;
+
+ public ByteFieldIntPrimitiveSchema(Field protoField, PropertyDescriptor propertyDescriptor) {
+ super(protoField, propertyDescriptor.getJavaType());
+ this.setter = propertyDescriptor.getSetter();
+ }
+
+ @Override
+ public int mergeFrom(InputEx input, T message) throws IOException {
+ int value = input.readInt32();
+ setter.set(message, (byte) value);
+ return input.readFieldNumber();
+ }
+ }
}
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 143da29..3a73f22 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
@@ -20,9 +20,9 @@ import java.io.IOException;
import java.time.LocalDate;
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.AbstractLongPrimitiveSchema;
import org.apache.servicecomb.foundation.protobuf.internal.schema.deserializer.scalar.AbstractScalarReadSchemas.AbstractLongSchema;
import com.fasterxml.jackson.databind.JavaType;
@@ -35,7 +35,7 @@ public class Int64ReadSchemas {
public static <T> FieldSchema<T> create(Field protoField, PropertyDescriptor propertyDescriptor) {
JavaType javaType = propertyDescriptor.getJavaType();
if (long.class.equals(javaType.getRawClass())) {
- return new Int64PrimitiveSchema<>(protoField, propertyDescriptor);
+ return new LongFiledLongPrimitiveSchema<>(protoField, propertyDescriptor);
}
if (Long.class.equals(javaType.getRawClass()) || javaType.isJavaLangObject()
@@ -67,9 +67,12 @@ public class Int64ReadSchemas {
}
}
- private static class Int64PrimitiveSchema<T> extends AbstractLongPrimitiveSchema<T> {
- public Int64PrimitiveSchema(Field protoField, PropertyDescriptor propertyDescriptor) {
- super(protoField, propertyDescriptor);
+ private static class LongFiledLongPrimitiveSchema<T> extends FieldSchema<T> {
+ protected final LongSetter<T> setter;
+
+ public LongFiledLongPrimitiveSchema(Field protoField, PropertyDescriptor propertyDescriptor) {
+ super(protoField, propertyDescriptor.getJavaType());
+ this.setter = propertyDescriptor.getSetter();
}
@Override
diff --git a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/SFixed32ReadSchemas.java b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/SFixed32ReadSchemas.java
index 9831032..dcd6530 100644
--- a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/SFixed32ReadSchemas.java
+++ b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/SFixed32ReadSchemas.java
@@ -18,9 +18,9 @@ package org.apache.servicecomb.foundation.protobuf.internal.schema.deserializer.
import java.io.IOException;
+import org.apache.servicecomb.foundation.common.utils.bean.IntSetter;
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.AbstractIntPrimitiveSchema;
import org.apache.servicecomb.foundation.protobuf.internal.schema.deserializer.scalar.AbstractScalarReadSchemas.AbstractIntSchema;
import com.fasterxml.jackson.databind.JavaType;
@@ -57,9 +57,12 @@ public class SFixed32ReadSchemas {
}
}
- private static class SFixed32PrimitiveSchema<T> extends AbstractIntPrimitiveSchema<T> {
+ private static class SFixed32PrimitiveSchema<T> extends FieldSchema<T> {
+ protected final IntSetter<T> setter;
+
public SFixed32PrimitiveSchema(Field protoField, PropertyDescriptor propertyDescriptor) {
- super(protoField, propertyDescriptor);
+ super(protoField, propertyDescriptor.getJavaType());
+ this.setter = propertyDescriptor.getSetter();
}
@Override
diff --git a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/SFixed64ReadSchemas.java b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/SFixed64ReadSchemas.java
index e83a84f..f1d4f8f 100644
--- a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/SFixed64ReadSchemas.java
+++ b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/SFixed64ReadSchemas.java
@@ -18,9 +18,9 @@ package org.apache.servicecomb.foundation.protobuf.internal.schema.deserializer.
import java.io.IOException;
+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.AbstractLongPrimitiveSchema;
import org.apache.servicecomb.foundation.protobuf.internal.schema.deserializer.scalar.AbstractScalarReadSchemas.AbstractLongSchema;
import com.fasterxml.jackson.databind.JavaType;
@@ -57,9 +57,12 @@ public class SFixed64ReadSchemas {
}
}
- private static class SFixed64PrimitiveSchema<T> extends AbstractLongPrimitiveSchema<T> {
+ private static class SFixed64PrimitiveSchema<T> extends FieldSchema<T> {
+ protected final LongSetter<T> setter;
+
public SFixed64PrimitiveSchema(Field protoField, PropertyDescriptor propertyDescriptor) {
- super(protoField, propertyDescriptor);
+ super(protoField, propertyDescriptor.getJavaType());
+ this.setter = propertyDescriptor.getSetter();
}
@Override
diff --git a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/SInt32ReadSchemas.java b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/SInt32ReadSchemas.java
index ae33b4f..3662102 100644
--- a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/SInt32ReadSchemas.java
+++ b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/SInt32ReadSchemas.java
@@ -18,9 +18,9 @@ package org.apache.servicecomb.foundation.protobuf.internal.schema.deserializer.
import java.io.IOException;
+import org.apache.servicecomb.foundation.common.utils.bean.IntSetter;
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.AbstractIntPrimitiveSchema;
import org.apache.servicecomb.foundation.protobuf.internal.schema.deserializer.scalar.AbstractScalarReadSchemas.AbstractIntSchema;
import com.fasterxml.jackson.databind.JavaType;
@@ -57,9 +57,12 @@ public class SInt32ReadSchemas {
}
}
- private static class SInt32PrimitiveSchema<T> extends AbstractIntPrimitiveSchema<T> {
+ private static class SInt32PrimitiveSchema<T> extends FieldSchema<T> {
+ protected final IntSetter<T> setter;
+
public SInt32PrimitiveSchema(Field protoField, PropertyDescriptor propertyDescriptor) {
- super(protoField, propertyDescriptor);
+ super(protoField, propertyDescriptor.getJavaType());
+ this.setter = propertyDescriptor.getSetter();
}
@Override
diff --git a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/SInt64ReadSchemas.java b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/SInt64ReadSchemas.java
index 850d7fe..ff3c80c 100644
--- a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/SInt64ReadSchemas.java
+++ b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/SInt64ReadSchemas.java
@@ -18,9 +18,9 @@ package org.apache.servicecomb.foundation.protobuf.internal.schema.deserializer.
import java.io.IOException;
+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.AbstractLongPrimitiveSchema;
import org.apache.servicecomb.foundation.protobuf.internal.schema.deserializer.scalar.AbstractScalarReadSchemas.AbstractLongSchema;
import com.fasterxml.jackson.databind.JavaType;
@@ -57,9 +57,12 @@ public class SInt64ReadSchemas {
}
}
- private static class SInt64PrimitiveSchema<T> extends AbstractLongPrimitiveSchema<T> {
+ private static class SInt64PrimitiveSchema<T> extends FieldSchema<T> {
+ protected final LongSetter<T> setter;
+
public SInt64PrimitiveSchema(Field protoField, PropertyDescriptor propertyDescriptor) {
- super(protoField, propertyDescriptor);
+ super(protoField, propertyDescriptor.getJavaType());
+ this.setter = propertyDescriptor.getSetter();
}
@Override
diff --git a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/StringReadSchemas.java b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/StringReadSchemas.java
index e2db31f..0edaa82 100644
--- a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/StringReadSchemas.java
+++ b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/StringReadSchemas.java
@@ -18,6 +18,7 @@ package org.apache.servicecomb.foundation.protobuf.internal.schema.deserializer.
import java.io.IOException;
+import org.apache.servicecomb.foundation.common.utils.bean.CharSetter;
import org.apache.servicecomb.foundation.common.utils.bean.Setter;
import org.apache.servicecomb.foundation.protobuf.internal.ProtoUtils;
import org.apache.servicecomb.foundation.protobuf.internal.bean.PropertyDescriptor;
@@ -31,8 +32,13 @@ import io.protostuff.runtime.FieldSchema;
public class StringReadSchemas {
public static <T> FieldSchema<T> create(Field protoField, PropertyDescriptor propertyDescriptor) {
JavaType javaType = propertyDescriptor.getJavaType();
- if (String.class.equals(javaType.getRawClass()) || javaType.isJavaLangObject() || char.class
- .equals(javaType.getRawClass()) || Character.class.equals(javaType.getRawClass())) {
+
+ if (char.class.equals(javaType.getRawClass())) {
+ return new CharFieldStringSchema<>(protoField, propertyDescriptor);
+ }
+
+ if (String.class.equals(javaType.getRawClass()) || javaType.isJavaLangObject() || Character.class
+ .equals(javaType.getRawClass())) {
return new StringSchema<>(protoField, propertyDescriptor);
}
@@ -60,4 +66,20 @@ public class StringReadSchemas {
return input.readFieldNumber();
}
}
+
+ private static class CharFieldStringSchema<T> extends FieldSchema<T> {
+ private final CharSetter<T> setter;
+
+ public CharFieldStringSchema(Field protoField, PropertyDescriptor propertyDescriptor) {
+ super(protoField, propertyDescriptor.getJavaType());
+ this.setter = propertyDescriptor.getSetter();
+ }
+
+ @Override
+ public int mergeFrom(InputEx input, T message) throws IOException {
+ String value = input.readString();
+ setter.set(message, value.toCharArray()[0]);
+ return input.readFieldNumber();
+ }
+ }
}
diff --git a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/UInt32ReadSchemas.java b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/UInt32ReadSchemas.java
index 978986b..61ef71b 100644
--- a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/UInt32ReadSchemas.java
+++ b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/UInt32ReadSchemas.java
@@ -18,9 +18,9 @@ package org.apache.servicecomb.foundation.protobuf.internal.schema.deserializer.
import java.io.IOException;
+import org.apache.servicecomb.foundation.common.utils.bean.IntSetter;
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.AbstractIntPrimitiveSchema;
import org.apache.servicecomb.foundation.protobuf.internal.schema.deserializer.scalar.AbstractScalarReadSchemas.AbstractIntSchema;
import com.fasterxml.jackson.databind.JavaType;
@@ -57,9 +57,12 @@ public class UInt32ReadSchemas {
}
}
- private static class UInt32PrimitiveSchema<T> extends AbstractIntPrimitiveSchema<T> {
+ private static class UInt32PrimitiveSchema<T> extends FieldSchema<T> {
+ protected final IntSetter<T> setter;
+
public UInt32PrimitiveSchema(Field protoField, PropertyDescriptor propertyDescriptor) {
- super(protoField, propertyDescriptor);
+ super(protoField, propertyDescriptor.getJavaType());
+ this.setter = propertyDescriptor.getSetter();
}
@Override
diff --git a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/UInt64ReadSchemas.java b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/UInt64ReadSchemas.java
index 0e11f81..0a098a7 100644
--- a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/UInt64ReadSchemas.java
+++ b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/scalar/UInt64ReadSchemas.java
@@ -18,9 +18,9 @@ package org.apache.servicecomb.foundation.protobuf.internal.schema.deserializer.
import java.io.IOException;
+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.AbstractLongPrimitiveSchema;
import org.apache.servicecomb.foundation.protobuf.internal.schema.deserializer.scalar.AbstractScalarReadSchemas.AbstractLongSchema;
import com.fasterxml.jackson.databind.JavaType;
@@ -57,9 +57,12 @@ public class UInt64ReadSchemas {
}
}
- private static class UInt64PrimitiveSchema<T> extends AbstractLongPrimitiveSchema<T> {
+ private static class UInt64PrimitiveSchema<T> extends FieldSchema<T> {
+ protected final LongSetter<T> setter;
+
public UInt64PrimitiveSchema(Field protoField, PropertyDescriptor propertyDescriptor) {
- super(protoField, propertyDescriptor);
+ super(protoField, propertyDescriptor.getJavaType());
+ this.setter = propertyDescriptor.getSetter();
}
@Override
diff --git a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/BoolWriteSchemas.java b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/BoolWriteSchemas.java
index 9b5711e..6c57b6f 100644
--- a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/BoolWriteSchemas.java
+++ b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/BoolWriteSchemas.java
@@ -18,6 +18,7 @@ package org.apache.servicecomb.foundation.protobuf.internal.schema.serializer.sc
import java.io.IOException;
+import org.apache.servicecomb.foundation.common.utils.bean.BoolGetter;
import org.apache.servicecomb.foundation.common.utils.bean.Getter;
import org.apache.servicecomb.foundation.protobuf.internal.ProtoUtils;
import org.apache.servicecomb.foundation.protobuf.internal.bean.PropertyDescriptor;
@@ -94,7 +95,7 @@ public class BoolWriteSchemas {
}
private static class BooleanPrimitiveSchema<T> extends BooleanDynamicSchema<T> {
- private final Getter<T, Boolean> primitiveGetter;
+ private final BoolGetter<T> primitiveGetter;
public BooleanPrimitiveSchema(Field protoField, PropertyDescriptor propertyDescriptor) {
super(protoField, propertyDescriptor);
diff --git a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/DoubleWriteSchemas.java b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/DoubleWriteSchemas.java
index 174ed3c..8e1c5ba 100644
--- a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/DoubleWriteSchemas.java
+++ b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/DoubleWriteSchemas.java
@@ -18,6 +18,7 @@ package org.apache.servicecomb.foundation.protobuf.internal.schema.serializer.sc
import java.io.IOException;
+import org.apache.servicecomb.foundation.common.utils.bean.DoubleGetter;
import org.apache.servicecomb.foundation.common.utils.bean.Getter;
import org.apache.servicecomb.foundation.protobuf.internal.ProtoUtils;
import org.apache.servicecomb.foundation.protobuf.internal.bean.PropertyDescriptor;
@@ -89,7 +90,7 @@ public class DoubleWriteSchemas {
}
private static class DoublePrimitiveSchema<T> extends DoubleDynamicSchema<T> {
- private final Getter<T, Double> primitiveGetter;
+ private final DoubleGetter<T> primitiveGetter;
public DoublePrimitiveSchema(Field protoField, PropertyDescriptor propertyDescriptor) {
super(protoField, propertyDescriptor);
diff --git a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/Fixed32WriteSchemas.java b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/Fixed32WriteSchemas.java
index 546accf..cee4c90 100644
--- a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/Fixed32WriteSchemas.java
+++ b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/Fixed32WriteSchemas.java
@@ -19,6 +19,7 @@ package org.apache.servicecomb.foundation.protobuf.internal.schema.serializer.sc
import java.io.IOException;
import org.apache.servicecomb.foundation.common.utils.bean.Getter;
+import org.apache.servicecomb.foundation.common.utils.bean.IntGetter;
import org.apache.servicecomb.foundation.protobuf.internal.ProtoUtils;
import org.apache.servicecomb.foundation.protobuf.internal.bean.PropertyDescriptor;
@@ -89,7 +90,7 @@ public class Fixed32WriteSchemas {
}
private static class Fixed32PrimitiveSchema<T> extends Fixed32DynamicSchema<T> {
- private final Getter<T, Integer> primitiveGetter;
+ private final IntGetter<T> primitiveGetter;
public Fixed32PrimitiveSchema(Field protoField, PropertyDescriptor propertyDescriptor) {
super(protoField, propertyDescriptor);
diff --git a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/Fixed64WriteSchemas.java b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/Fixed64WriteSchemas.java
index f4fad8b..22d982b 100644
--- a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/Fixed64WriteSchemas.java
+++ b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/Fixed64WriteSchemas.java
@@ -19,6 +19,7 @@ package org.apache.servicecomb.foundation.protobuf.internal.schema.serializer.sc
import java.io.IOException;
import org.apache.servicecomb.foundation.common.utils.bean.Getter;
+import org.apache.servicecomb.foundation.common.utils.bean.LongGetter;
import org.apache.servicecomb.foundation.protobuf.internal.ProtoUtils;
import org.apache.servicecomb.foundation.protobuf.internal.bean.PropertyDescriptor;
@@ -89,7 +90,7 @@ public class Fixed64WriteSchemas {
}
private static class Fixed64PrimitiveSchema<T> extends Fixed64DynamicSchema<T> {
- private final Getter<T, Long> primitiveGetter;
+ private final LongGetter<T> primitiveGetter;
public Fixed64PrimitiveSchema(Field protoField, PropertyDescriptor propertyDescriptor) {
super(protoField, propertyDescriptor);
diff --git a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/FloatWriteSchemas.java b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/FloatWriteSchemas.java
index c721b9b..b9e4105 100644
--- a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/FloatWriteSchemas.java
+++ b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/FloatWriteSchemas.java
@@ -18,6 +18,7 @@ package org.apache.servicecomb.foundation.protobuf.internal.schema.serializer.sc
import java.io.IOException;
+import org.apache.servicecomb.foundation.common.utils.bean.FloatGetter;
import org.apache.servicecomb.foundation.common.utils.bean.Getter;
import org.apache.servicecomb.foundation.protobuf.internal.ProtoUtils;
import org.apache.servicecomb.foundation.protobuf.internal.bean.PropertyDescriptor;
@@ -89,7 +90,7 @@ public class FloatWriteSchemas {
}
private static class FloatPrimitiveSchema<T> extends FloatDynamicSchema<T> {
- private final Getter<T, Float> primitiveGetter;
+ private final FloatGetter<T> primitiveGetter;
public FloatPrimitiveSchema(Field protoField, PropertyDescriptor propertyDescriptor) {
super(protoField, propertyDescriptor);
diff --git a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/Int32WriteSchemas.java b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/Int32WriteSchemas.java
index 8d202d6..724321b 100644
--- a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/Int32WriteSchemas.java
+++ b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/Int32WriteSchemas.java
@@ -18,7 +18,10 @@ package org.apache.servicecomb.foundation.protobuf.internal.schema.serializer.sc
import java.io.IOException;
+import org.apache.servicecomb.foundation.common.utils.bean.ByteGetter;
import org.apache.servicecomb.foundation.common.utils.bean.Getter;
+import org.apache.servicecomb.foundation.common.utils.bean.IntGetter;
+import org.apache.servicecomb.foundation.common.utils.bean.ShortGetter;
import org.apache.servicecomb.foundation.protobuf.internal.ProtoUtils;
import org.apache.servicecomb.foundation.protobuf.internal.bean.PropertyDescriptor;
@@ -29,11 +32,15 @@ import io.protostuff.runtime.FieldSchema;
public final class Int32WriteSchemas {
public static <T> FieldSchema<T> create(Field protoField, PropertyDescriptor propertyDescriptor) {
if (int.class.equals(propertyDescriptor.getJavaType().getRawClass())) {
- return new Int32PrimitiveSchema<>(protoField, propertyDescriptor);
+ return new IntFieldInt32PrimitiveSchema<>(protoField, propertyDescriptor);
}
- if (Integer.class.equals(propertyDescriptor.getJavaType().getRawClass())) {
- return new Int32Schema<>(protoField, propertyDescriptor);
+ if (short.class.equals(propertyDescriptor.getJavaType().getRawClass())) {
+ return new ShortFieldInt32PrimitiveSchema<>(protoField, propertyDescriptor);
+ }
+
+ if (byte.class.equals(propertyDescriptor.getJavaType().getRawClass())) {
+ return new ByteFieldInt32PrimitiveSchema<>(protoField, propertyDescriptor);
}
return new Int32Schema<>(protoField, propertyDescriptor);
@@ -91,10 +98,10 @@ public final class Int32WriteSchemas {
}
}
- private static final class Int32PrimitiveSchema<T> extends Int32DynamicSchema<T> {
- private final Getter<T, Integer> primitiveGetter;
+ private static final class IntFieldInt32PrimitiveSchema<T> extends Int32DynamicSchema<T> {
+ private final IntGetter<T> primitiveGetter;
- public Int32PrimitiveSchema(Field protoField, PropertyDescriptor propertyDescriptor) {
+ public IntFieldInt32PrimitiveSchema(Field protoField, PropertyDescriptor propertyDescriptor) {
super(protoField, propertyDescriptor);
primitiveGetter = propertyDescriptor.getGetter();
@@ -106,4 +113,36 @@ public final class Int32WriteSchemas {
output.writeScalarInt32(tag, tagSize, value);
}
}
+
+ private static final class ShortFieldInt32PrimitiveSchema<T> extends Int32DynamicSchema<T> {
+ private final ShortGetter<T> primitiveGetter;
+
+ public ShortFieldInt32PrimitiveSchema(Field protoField, PropertyDescriptor propertyDescriptor) {
+ super(protoField, propertyDescriptor);
+
+ primitiveGetter = propertyDescriptor.getGetter();
+ }
+
+ @Override
+ public final void getAndWriteTo(OutputEx output, T message) throws IOException {
+ short value = primitiveGetter.get(message);
+ output.writeScalarInt32(tag, tagSize, value);
+ }
+ }
+
+ private static final class ByteFieldInt32PrimitiveSchema<T> extends Int32DynamicSchema<T> {
+ private final ByteGetter<T> primitiveGetter;
+
+ public ByteFieldInt32PrimitiveSchema(Field protoField, PropertyDescriptor propertyDescriptor) {
+ super(protoField, propertyDescriptor);
+
+ primitiveGetter = propertyDescriptor.getGetter();
+ }
+
+ @Override
+ public final void getAndWriteTo(OutputEx output, T message) throws IOException {
+ byte value = primitiveGetter.get(message);
+ output.writeScalarInt32(tag, tagSize, 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 1856229..ed72737 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
@@ -22,6 +22,7 @@ import java.time.temporal.ChronoField;
import java.util.Date;
import org.apache.servicecomb.foundation.common.utils.bean.Getter;
+import org.apache.servicecomb.foundation.common.utils.bean.LongGetter;
import org.apache.servicecomb.foundation.protobuf.internal.ProtoUtils;
import org.apache.servicecomb.foundation.protobuf.internal.bean.PropertyDescriptor;
@@ -104,7 +105,7 @@ public class Int64WriteSchemas {
}
private static final class Int64PrimitiveSchema<T> extends Int64DynamicSchema<T> {
- private final Getter<T, Long> primitiveGetter;
+ private final LongGetter<T> primitiveGetter;
public Int64PrimitiveSchema(Field protoField, PropertyDescriptor propertyDescriptor) {
super(protoField, propertyDescriptor);
diff --git a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/SFixed32WriteSchemas.java b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/SFixed32WriteSchemas.java
index fe4fddc..3cbbd8c 100644
--- a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/SFixed32WriteSchemas.java
+++ b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/SFixed32WriteSchemas.java
@@ -19,6 +19,7 @@ package org.apache.servicecomb.foundation.protobuf.internal.schema.serializer.sc
import java.io.IOException;
import org.apache.servicecomb.foundation.common.utils.bean.Getter;
+import org.apache.servicecomb.foundation.common.utils.bean.IntGetter;
import org.apache.servicecomb.foundation.protobuf.internal.ProtoUtils;
import org.apache.servicecomb.foundation.protobuf.internal.bean.PropertyDescriptor;
@@ -89,7 +90,7 @@ public class SFixed32WriteSchemas {
}
private static class SFixed32PrimitiveSchema<T> extends SFixed32DynamicSchema<T> {
- private final Getter<T, Integer> primitiveGetter;
+ private final IntGetter<T> primitiveGetter;
public SFixed32PrimitiveSchema(Field protoField, PropertyDescriptor propertyDescriptor) {
super(protoField, propertyDescriptor);
diff --git a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/SFixed64WriteSchemas.java b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/SFixed64WriteSchemas.java
index 4f1432e..2f0a4be 100644
--- a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/SFixed64WriteSchemas.java
+++ b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/SFixed64WriteSchemas.java
@@ -19,6 +19,7 @@ package org.apache.servicecomb.foundation.protobuf.internal.schema.serializer.sc
import java.io.IOException;
import org.apache.servicecomb.foundation.common.utils.bean.Getter;
+import org.apache.servicecomb.foundation.common.utils.bean.LongGetter;
import org.apache.servicecomb.foundation.protobuf.internal.ProtoUtils;
import org.apache.servicecomb.foundation.protobuf.internal.bean.PropertyDescriptor;
@@ -89,7 +90,7 @@ public class SFixed64WriteSchemas {
}
private static class SFixed64PrimitiveSchema<T> extends SFixed64DynamicSchema<T> {
- private final Getter<T, Long> primitiveGetter;
+ private final LongGetter<T> primitiveGetter;
public SFixed64PrimitiveSchema(Field protoField, PropertyDescriptor propertyDescriptor) {
super(protoField, propertyDescriptor);
diff --git a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/SInt32WriteSchemas.java b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/SInt32WriteSchemas.java
index 18d5413..f3d2e1a 100644
--- a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/SInt32WriteSchemas.java
+++ b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/SInt32WriteSchemas.java
@@ -19,6 +19,7 @@ package org.apache.servicecomb.foundation.protobuf.internal.schema.serializer.sc
import java.io.IOException;
import org.apache.servicecomb.foundation.common.utils.bean.Getter;
+import org.apache.servicecomb.foundation.common.utils.bean.IntGetter;
import org.apache.servicecomb.foundation.protobuf.internal.ProtoUtils;
import org.apache.servicecomb.foundation.protobuf.internal.bean.PropertyDescriptor;
@@ -89,7 +90,7 @@ public class SInt32WriteSchemas {
}
private static class SInt32PrimitiveSchema<T> extends SInt32DynamicSchema<T> {
- private final Getter<T, Integer> primitiveGetter;
+ private final IntGetter<T> primitiveGetter;
public SInt32PrimitiveSchema(Field protoField, PropertyDescriptor propertyDescriptor) {
super(protoField, propertyDescriptor);
diff --git a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/SInt64WriteSchemas.java b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/SInt64WriteSchemas.java
index f085b2c..b935e26 100644
--- a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/SInt64WriteSchemas.java
+++ b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/SInt64WriteSchemas.java
@@ -19,6 +19,7 @@ package org.apache.servicecomb.foundation.protobuf.internal.schema.serializer.sc
import java.io.IOException;
import org.apache.servicecomb.foundation.common.utils.bean.Getter;
+import org.apache.servicecomb.foundation.common.utils.bean.LongGetter;
import org.apache.servicecomb.foundation.protobuf.internal.ProtoUtils;
import org.apache.servicecomb.foundation.protobuf.internal.bean.PropertyDescriptor;
@@ -89,7 +90,7 @@ public class SInt64WriteSchemas {
}
private static class SInt64PrimitiveSchema<T> extends SInt64DynamicSchema<T> {
- private final Getter<T, Long> primitiveGetter;
+ private final LongGetter<T> primitiveGetter;
public SInt64PrimitiveSchema(Field protoField, PropertyDescriptor propertyDescriptor) {
super(protoField, propertyDescriptor);
diff --git a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/StringWriteSchemas.java b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/StringWriteSchemas.java
index 18051d6..34c8647 100644
--- a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/StringWriteSchemas.java
+++ b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/StringWriteSchemas.java
@@ -18,6 +18,7 @@ package org.apache.servicecomb.foundation.protobuf.internal.schema.serializer.sc
import java.io.IOException;
+import org.apache.servicecomb.foundation.common.utils.bean.CharGetter;
import org.apache.servicecomb.foundation.common.utils.bean.Getter;
import org.apache.servicecomb.foundation.protobuf.internal.ProtoUtils;
import org.apache.servicecomb.foundation.protobuf.internal.bean.PropertyDescriptor;
@@ -28,6 +29,10 @@ import io.protostuff.runtime.FieldSchema;
public class StringWriteSchemas {
public static <T> FieldSchema<T> create(Field protoField, PropertyDescriptor propertyDescriptor) {
+ if (char.class.equals(propertyDescriptor.getJavaType().getRawClass())) {
+ return new CharFieldStringSchema<>(protoField, propertyDescriptor);
+ }
+
if (String.class.equals(propertyDescriptor.getJavaType().getRawClass())) {
return new StringSchema<>(protoField, propertyDescriptor);
}
@@ -56,7 +61,7 @@ public class StringWriteSchemas {
}
if (value instanceof Character) {
- output.writeScalarString(tag, tagSize, String.valueOf((char)value));
+ output.writeScalarString(tag, tagSize, String.valueOf((char) value));
return;
}
@@ -81,4 +86,20 @@ public class StringWriteSchemas {
}
}
}
+
+ private static class CharFieldStringSchema<T> extends StringDynamicSchema<T> {
+ protected final CharGetter<T> getter;
+
+ public CharFieldStringSchema(Field protoField, PropertyDescriptor propertyDescriptor) {
+ super(protoField, propertyDescriptor);
+
+ this.getter = propertyDescriptor.getGetter();
+ }
+
+ @Override
+ public final void getAndWriteTo(OutputEx output, T message) throws IOException {
+ char value = getter.get(message);
+ writeTo(output, value);
+ }
+ }
}
diff --git a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/UInt32WriteSchemas.java b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/UInt32WriteSchemas.java
index 9a47705..6a163be 100644
--- a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/UInt32WriteSchemas.java
+++ b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/UInt32WriteSchemas.java
@@ -19,6 +19,7 @@ package org.apache.servicecomb.foundation.protobuf.internal.schema.serializer.sc
import java.io.IOException;
import org.apache.servicecomb.foundation.common.utils.bean.Getter;
+import org.apache.servicecomb.foundation.common.utils.bean.IntGetter;
import org.apache.servicecomb.foundation.protobuf.internal.ProtoUtils;
import org.apache.servicecomb.foundation.protobuf.internal.bean.PropertyDescriptor;
@@ -89,7 +90,7 @@ public class UInt32WriteSchemas {
}
private static class UInt32PrimitiveSchema<T> extends UInt32DynamicSchema<T> {
- private final Getter<T, Integer> primitiveGetter;
+ private final IntGetter<T> primitiveGetter;
public UInt32PrimitiveSchema(Field protoField, PropertyDescriptor propertyDescriptor) {
super(protoField, propertyDescriptor);
diff --git a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/UInt64WriteSchemas.java b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/UInt64WriteSchemas.java
index c6ec795..e8a449f 100644
--- a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/UInt64WriteSchemas.java
+++ b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/serializer/scalar/UInt64WriteSchemas.java
@@ -19,6 +19,7 @@ package org.apache.servicecomb.foundation.protobuf.internal.schema.serializer.sc
import java.io.IOException;
import org.apache.servicecomb.foundation.common.utils.bean.Getter;
+import org.apache.servicecomb.foundation.common.utils.bean.LongGetter;
import org.apache.servicecomb.foundation.protobuf.internal.ProtoUtils;
import org.apache.servicecomb.foundation.protobuf.internal.bean.PropertyDescriptor;
@@ -89,7 +90,7 @@ public class UInt64WriteSchemas {
}
private static class UInt64PrimitiveSchema<T> extends UInt64DynamicSchema<T> {
- private final Getter<T, Long> primitiveGetter;
+ private final LongGetter<T> primitiveGetter;
public UInt64PrimitiveSchema(Field protoField, PropertyDescriptor propertyDescriptor) {
super(protoField, propertyDescriptor);
diff --git a/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/bean/TestBeanDescriptorManager.java b/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/bean/TestBeanDescriptorManager.java
index bdbb714..9d2994b 100644
--- a/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/bean/TestBeanDescriptorManager.java
+++ b/foundations/foundation-protobuf/src/test/java/org/apache/servicecomb/foundation/protobuf/internal/bean/TestBeanDescriptorManager.java
@@ -20,6 +20,8 @@ import java.lang.reflect.Method;
import org.apache.servicecomb.foundation.common.utils.ReflectUtils;
import org.apache.servicecomb.foundation.common.utils.bean.Getter;
+import org.apache.servicecomb.foundation.common.utils.bean.IntGetter;
+import org.apache.servicecomb.foundation.common.utils.bean.IntSetter;
import org.apache.servicecomb.foundation.common.utils.bean.Setter;
import org.junit.Assert;
import org.junit.Test;
@@ -106,8 +108,8 @@ public class TestBeanDescriptorManager {
@Test
public void both() {
PropertyDescriptor propertyDescriptor = beanDescriptor.getPropertyDescriptors().get("both");
- ((Setter<Model, Integer>) propertyDescriptor.getSetter()).set(model, 1);
- Assert.assertEquals(1, ((Getter<Model, Integer>) propertyDescriptor.getGetter()).get(model).intValue());
+ ((IntSetter<Model>) propertyDescriptor.getSetter()).set(model, 1);
+ Assert.assertEquals(1, ((IntGetter<Model>) propertyDescriptor.getGetter()).get(model));
Assert.assertEquals(1, model.getBoth());
}
@@ -118,7 +120,7 @@ public class TestBeanDescriptorManager {
Assert.assertNull(propertyDescriptor.getSetter());
model.onlyGet(1);
- Assert.assertEquals(1, ((Getter<Model, Integer>) propertyDescriptor.getGetter()).get(model).intValue());
+ Assert.assertEquals(1, ((IntGetter<Model>) propertyDescriptor.getGetter()).get(model));
Assert.assertEquals(1, model.getOnlyGet());
}
@@ -128,7 +130,7 @@ public class TestBeanDescriptorManager {
PropertyDescriptor propertyDescriptor = beanDescriptor.getPropertyDescriptors().get("onlySet");
Assert.assertNull(propertyDescriptor.getGetter());
- ((Setter<Model, Integer>) propertyDescriptor.getSetter()).set(model, 1);
+ ((IntSetter<Model>) propertyDescriptor.getSetter()).set(model, 1);
Assert.assertEquals(1, model.onlySet());
}
diff --git a/integration-tests/it-common/src/main/java/org/apache/servicecomb/it/schema/objectparams/FlattenObjectRequest.java b/integration-tests/it-common/src/main/java/org/apache/servicecomb/it/schema/objectparams/FlattenObjectRequest.java
index 21b7b9f..b0b134f 100644
--- a/integration-tests/it-common/src/main/java/org/apache/servicecomb/it/schema/objectparams/FlattenObjectRequest.java
+++ b/integration-tests/it-common/src/main/java/org/apache/servicecomb/it/schema/objectparams/FlattenObjectRequest.java
@@ -261,4 +261,27 @@ public class FlattenObjectRequest {
anWrappedInteger,
anWrappedLong, anWrappedFloat, anWrappedDouble, anWrappedBoolean, anWrappedCharacter, string, color);
}
+
+ public static FlattenObjectRequest createFlattenObjectRequest() {
+ FlattenObjectRequest request = new FlattenObjectRequest();
+ request.setAnByte((byte) 8);
+ request.setAnShort((short) 7);
+ request.setAnInt(6);
+ request.setAnLong(5);
+ request.setAnFloat(4.4f);
+ request.setAnDouble(3.3);
+ request.setAnBoolean(true);
+ request.setAnChar('c');
+ request.setAnWrappedByte((byte) 16);
+ request.setAnWrappedShort((short) 15);
+ request.setAnWrappedInteger(14);
+ request.setAnWrappedLong(13L);
+ request.setAnWrappedFloat(12.2f);
+ request.setAnWrappedDouble(11.1);
+ request.setAnWrappedBoolean(true);
+ request.setAnWrappedCharacter('d');
+ request.setString("abc");
+ request.setColor(Color.BLUE);
+ return request;
+ }
}
\ No newline at end of file
diff --git a/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/testcase/objectparams/TestSpringMVCObjectParamType.java b/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/testcase/objectparams/TestSpringMVCObjectParamType.java
index bbb7707..693e4af 100644
--- a/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/testcase/objectparams/TestSpringMVCObjectParamType.java
+++ b/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/testcase/objectparams/TestSpringMVCObjectParamType.java
@@ -58,7 +58,7 @@ public class TestSpringMVCObjectParamType {
@Test
public void testFlattenObjectParam_rpc() {
- FlattenObjectRequest request = createFlattenObjectRequest();
+ FlattenObjectRequest request = FlattenObjectRequest.createFlattenObjectRequest();
FlattenObjectResponse response = consumers.getIntf().testFlattenObjectParam(request);
Assert.assertEquals(Json.encode(request), Json.encode(response));
@@ -69,7 +69,7 @@ public class TestSpringMVCObjectParamType {
@Test
public void testFlattenObjectParam_rt() {
- FlattenObjectRequest request = createFlattenObjectRequest();
+ FlattenObjectRequest request = FlattenObjectRequest.createFlattenObjectRequest();
FlattenObjectResponse response = consumers.getSCBRestTemplate()
.postForObject("/testFlattenObjectParam", request, FlattenObjectResponse.class);
Assert.assertEquals(Json.encode(request), Json.encode(response));
@@ -82,7 +82,7 @@ public class TestSpringMVCObjectParamType {
@Test
public void testFlattenObjectParam_edge() {
- FlattenObjectRequest request = createFlattenObjectRequest();
+ FlattenObjectRequest request = FlattenObjectRequest.createFlattenObjectRequest();
FlattenObjectResponse response = consumers.getEdgeRestTemplate()
.postForObject("/testFlattenObjectParam", request, FlattenObjectResponse.class);
Assert.assertEquals(Json.encode(request), Json.encode(response));
@@ -98,7 +98,7 @@ public class TestSpringMVCObjectParamType {
@Test
public void testMultiLayerObjectParam_rpc() {
MultiLayerObjectParam request = new MultiLayerObjectParam("sss-1", new Date(),
- new MultiLayerObjectParam2("sss-2", 12.12, createFlattenObjectRequest()));
+ new MultiLayerObjectParam2("sss-2", 12.12, FlattenObjectRequest.createFlattenObjectRequest()));
MultiLayerObjectParam response = consumers.getIntf().testMultiLayerObjectParam(request);
Assert.assertEquals(request, response);
// Highway will not give null return value
@@ -109,7 +109,7 @@ public class TestSpringMVCObjectParamType {
@Test
public void testMultiLayerObjectParam_rt() {
MultiLayerObjectParam request = new MultiLayerObjectParam("sss-1", new Date(),
- new MultiLayerObjectParam2("sss-2", 12.12, createFlattenObjectRequest()));
+ new MultiLayerObjectParam2("sss-2", 12.12, FlattenObjectRequest.createFlattenObjectRequest()));
ResponseEntity<MultiLayerObjectParam> responseEntity = consumers.getSCBRestTemplate()
.exchange("/testMultiLayerObjectParam", HttpMethod.PUT,
new HttpEntity<>(request), MultiLayerObjectParam.class);
@@ -127,7 +127,7 @@ public class TestSpringMVCObjectParamType {
@Test
public void testMultiLayerObjectParam_edge() {
MultiLayerObjectParam request = new MultiLayerObjectParam("sss-1", new Date(),
- new MultiLayerObjectParam2("sss-2", 12.12, createFlattenObjectRequest()));
+ new MultiLayerObjectParam2("sss-2", 12.12, FlattenObjectRequest.createFlattenObjectRequest()));
ResponseEntity<MultiLayerObjectParam> responseEntity = consumers.getEdgeRestTemplate()
.exchange("/testMultiLayerObjectParam", HttpMethod.PUT,
new HttpEntity<>(request), MultiLayerObjectParam.class);
@@ -311,7 +311,7 @@ public class TestSpringMVCObjectParamType {
@Test
public void testQueryObjectParam() {
- FlattenObjectRequest expected = createFlattenObjectRequest();
+ FlattenObjectRequest expected = FlattenObjectRequest.createFlattenObjectRequest();
FlattenObjectRequest response = consumers.getIntf().testQueryObjectParam(
expected.getAnByte(), expected.getAnShort(), expected.getAnInt(), expected.getAnLong(), expected.getAnFloat(),
expected.getAnDouble(), expected.isAnBoolean(), expected.getAnChar(),
@@ -367,29 +367,6 @@ public class TestSpringMVCObjectParamType {
Assert.assertEquals(expected, response);
}
- private FlattenObjectRequest createFlattenObjectRequest() {
- FlattenObjectRequest request = new FlattenObjectRequest();
- request.setAnByte((byte) 8);
- request.setAnShort((short) 7);
- request.setAnInt(6);
- request.setAnLong(5);
- request.setAnFloat(4.4f);
- request.setAnDouble(3.3);
- request.setAnBoolean(true);
- request.setAnChar('c');
- request.setAnWrappedByte((byte) 16);
- request.setAnWrappedShort((short) 15);
- request.setAnWrappedInteger(14);
- request.setAnWrappedLong(13L);
- request.setAnWrappedFloat(12.2f);
- request.setAnWrappedDouble(11.1);
- request.setAnWrappedBoolean(true);
- request.setAnWrappedCharacter('d');
- request.setString("abc");
- request.setColor(Color.BLUE);
- return request;
- }
-
private RecursiveObjectParam createRecursiveObjectParam() {
return new RecursiveObjectParam(new InnerRecursiveObjectParam(1, "sss1",
new RecursiveObjectParam(new InnerRecursiveObjectParam(2, "sss2", new RecursiveObjectParam()),