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/08/05 00:52:40 UTC

[servicecomb-java-chassis] 02/02: [SCB-2058] make RequestPartAnnotationProcessor extend AbstractSpringmvcSerializableParameterProcessor

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

commit cb47f4c31fee7468ef5d8cfe0aed2d53a73d08cd
Author: yhs0092 <yh...@163.com>
AuthorDate: Tue Aug 4 16:50:09 2020 +0800

    [SCB-2058] make RequestPartAnnotationProcessor extend AbstractSpringmvcSerializableParameterProcessor
---
 .../annotation/RequestPartAnnotationProcessor.java | 47 ++++------------------
 1 file changed, 7 insertions(+), 40 deletions(-)

diff --git a/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/RequestPartAnnotationProcessor.java b/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/RequestPartAnnotationProcessor.java
index 3041527..aade823 100644
--- a/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/RequestPartAnnotationProcessor.java
+++ b/swagger/swagger-generator/generator-springmvc/src/main/java/org/apache/servicecomb/swagger/generator/springmvc/processor/annotation/RequestPartAnnotationProcessor.java
@@ -19,22 +19,13 @@ package org.apache.servicecomb.swagger.generator.springmvc.processor.annotation;
 
 import java.lang.reflect.Type;
 
-import org.apache.servicecomb.swagger.generator.ParameterProcessor;
 import org.apache.servicecomb.swagger.generator.core.model.HttpParameterType;
 import org.springframework.web.bind.annotation.RequestPart;
 
-import com.fasterxml.jackson.databind.JavaType;
-import com.fasterxml.jackson.databind.type.TypeFactory;
-
-import io.swagger.converter.ModelConverters;
-import io.swagger.models.Operation;
-import io.swagger.models.Swagger;
 import io.swagger.models.parameters.FormParameter;
-import io.swagger.models.properties.ArrayProperty;
-import io.swagger.models.properties.Property;
 
-public class RequestPartAnnotationProcessor implements
-    ParameterProcessor<FormParameter, RequestPart> {
+public class RequestPartAnnotationProcessor extends
+    AbstractSpringmvcSerializableParameterProcessor<FormParameter, RequestPart> {
   @Override
   public Type getProcessType() {
     return RequestPart.class;
@@ -55,36 +46,12 @@ public class RequestPartAnnotationProcessor implements
   }
 
   @Override
-  public void fillParameter(Swagger swagger, Operation operation, FormParameter formParameter, Type type,
-      RequestPart requestPart) {
-    Property property = resolveParamProperty(type);
-
-    formParameter.setProperty(property);
-    formParameter.setRequired(requestPart.required());
+  protected boolean readRequired(RequestPart requestPart) {
+    return requestPart.required();
   }
 
-  private Property resolveParamProperty(Type type) {
-    JavaType javaType = TypeFactory.defaultInstance().constructType(type);
-    if (javaType.isContainerType()) {
-      return resolvePropertyAsContainerType(javaType);
-    }
-    return ModelConverters.getInstance().readAsProperty(type);
-  }
-
-  private Property resolvePropertyAsContainerType(JavaType javaType) {
-    // At present, only array and collection of Part params are supported,
-    // but Map type is also a kind of container type.
-    // Although Map is not supported now, we still consider to take the type of value to generate a property.
-    // Therefore, here we use lastContainedTypeIndex to get the contained type.
-    int lastContainedTypeIndex = javaType.containedTypeCount() - 1;
-    JavaType containedItemType;
-    if (lastContainedTypeIndex < 0) {
-      // javaType may be an array
-      containedItemType = javaType.getContentType();
-    } else {
-      containedItemType = javaType.containedType(lastContainedTypeIndex);
-    }
-    Property containedItemProperty = ModelConverters.getInstance().readAsProperty(containedItemType);
-    return new ArrayProperty(containedItemProperty);
+  @Override
+  protected String pureReadDefaultValue(RequestPart requestPart) {
+    return null;
   }
 }