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/11/19 06:49:43 UTC
[servicecomb-java-chassis] branch master updated: [SCB-2120]fix
operation override when using schema interface (#2066)
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 30c1653 [SCB-2120]fix operation override when using schema interface (#2066)
30c1653 is described below
commit 30c1653adcc51e6313a7be507e411d8d0b5e61a1
Author: bao liu <bi...@qq.com>
AuthorDate: Thu Nov 19 14:42:01 2020 +0800
[SCB-2120]fix operation override when using schema interface (#2066)
---
.../demo/jaxrs/server/SchemeInterfaceJaxrsImpl.java | 4 ++++
.../schema/deserializer/MessageReadSchema.java | 14 ++++++++------
.../swagger/engine/SwaggerEnvironment.java | 21 ++++++++++++---------
3 files changed, 24 insertions(+), 15 deletions(-)
diff --git a/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/SchemeInterfaceJaxrsImpl.java b/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/SchemeInterfaceJaxrsImpl.java
index 6800bab..862db16 100644
--- a/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/SchemeInterfaceJaxrsImpl.java
+++ b/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/SchemeInterfaceJaxrsImpl.java
@@ -31,6 +31,10 @@ public class SchemeInterfaceJaxrsImpl implements SchemeInterfaceJaxrs {
return a - b;
}
+ public int add(String a, String b) {
+ return Integer.valueOf(a) + Integer.valueOf(b);
+ }
+
@Override
public Page<String> interfaceModel(Page<String> model) {
return model;
diff --git a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/MessageReadSchema.java b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/MessageReadSchema.java
index 4cd66e9..b8d16cf 100644
--- a/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/MessageReadSchema.java
+++ b/foundations/foundation-protobuf/src/main/java/org/apache/servicecomb/foundation/protobuf/internal/schema/deserializer/MessageReadSchema.java
@@ -164,12 +164,14 @@ public class MessageReadSchema<T> implements SchemaEx<T> {
n = input.readFieldNumber();
}
} catch (Throwable e) {
- Field protoField = fieldSchema.getProtoField();
- LOGGER.error("Failed to mergeFrom, field={}:{}, type={}",
- protoField.getType().getCanonicalName(),
- protoField.getName(),
- protoField.getTypeName(),
- e.getMessage());
+ if (fieldSchema != null) {
+ Field protoField = fieldSchema.getProtoField();
+ LOGGER.error("Failed to mergeFrom, field={}:{}, type={}",
+ protoField.getType().getCanonicalName(),
+ protoField.getName(),
+ protoField.getTypeName(),
+ e.getMessage());
+ }
throw e;
}
}
diff --git a/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/engine/SwaggerEnvironment.java b/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/engine/SwaggerEnvironment.java
index 49618a0..d18b596 100644
--- a/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/engine/SwaggerEnvironment.java
+++ b/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/engine/SwaggerEnvironment.java
@@ -104,7 +104,9 @@ public class SwaggerEnvironment {
}
public SwaggerProducer createProducer(Object producerInstance, Class<?> schemaInterface, Swagger swagger) {
- swagger = checkAndGenerateSwagger(producerInstance, schemaInterface, swagger);
+ Class<?> producerCls = targetSwaggerClass(producerInstance, schemaInterface);
+
+ swagger = checkAndGenerateSwagger(producerCls, swagger);
Map<Class<?>, ContextArgumentMapperFactory> contextFactories = SPIServiceUtils
.getOrLoadSortedService(ProducerContextArgumentMapperFactory.class)
@@ -115,7 +117,6 @@ public class SwaggerEnvironment {
SwaggerOperations swaggerOperations = new SwaggerOperations(swagger);
- Class<?> producerCls = BeanUtils.getImplClassFromBean(producerInstance);
Map<String, Method> visibleProducerMethods = MethodUtils.findSwaggerMethodsMapOfOperationId(producerCls);
SwaggerProducer producer = new SwaggerProducer();
@@ -159,15 +160,17 @@ public class SwaggerEnvironment {
return producer;
}
- private Swagger checkAndGenerateSwagger(Object producerInstance, Class<?> schemaInterface, Swagger swagger) {
+ private Swagger checkAndGenerateSwagger(Class<?> swaggerClass, Swagger swagger) {
if (swagger == null) {
- if (schemaInterface != null && !Object.class.equals(schemaInterface)) {
- swagger = SwaggerGenerator.generate(schemaInterface);
- } else {
- Class<?> producerCls = BeanUtils.getImplClassFromBean(producerInstance);
- swagger = SwaggerGenerator.generate(producerCls);
- }
+ swagger = SwaggerGenerator.generate(swaggerClass);
}
return swagger;
}
+
+ private Class<?> targetSwaggerClass(Object producerInstance, Class<?> schemaInterface) {
+ if (schemaInterface != null && !Object.class.equals(schemaInterface)) {
+ return schemaInterface;
+ }
+ return BeanUtils.getImplClassFromBean(producerInstance);
+ }
}