This is an automated email from the ASF dual-hosted git repository.

karp pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/rocketmq-schema-registry.git


The following commit(s) were added to refs/heads/main by this push:
     new 565b0d3  [ISSUE #39] Parse idl fields to return getSchemaResponse (#42)
565b0d3 is described below

commit 565b0d321dcdf3c5825e70a7b2557f4442ba0068
Author: wangfan <[email protected]>
AuthorDate: Wed Aug 17 15:09:27 2022 +0800

    [ISSUE #39] Parse idl fields to return getSchemaResponse (#42)
---
 .../common/dto/{FieldDto.java => Field.java}       |  8 +------
 .../registry/common/dto/GetSchemaResponse.java     | 28 ++++++++++++++++++++++
 .../schema/registry/common/utils/StorageUtil.java  |  4 ++--
 .../schema/registry/core/api/RequestProcessor.java |  1 -
 4 files changed, 31 insertions(+), 10 deletions(-)

diff --git 
a/common/src/main/java/org/apache/rocketmq/schema/registry/common/dto/FieldDto.java
 
b/common/src/main/java/org/apache/rocketmq/schema/registry/common/dto/Field.java
similarity index 90%
rename from 
common/src/main/java/org/apache/rocketmq/schema/registry/common/dto/FieldDto.java
rename to 
common/src/main/java/org/apache/rocketmq/schema/registry/common/dto/Field.java
index e2f6daf..e201a9c 100644
--- 
a/common/src/main/java/org/apache/rocketmq/schema/registry/common/dto/FieldDto.java
+++ 
b/common/src/main/java/org/apache/rocketmq/schema/registry/common/dto/Field.java
@@ -32,7 +32,7 @@ import lombok.NoArgsConstructor;
 @NoArgsConstructor
 @Builder
 @AllArgsConstructor
-public class FieldDto extends BaseDto {
+public class Field extends BaseDto {
     private static final long serialVersionUID = -8336499483006254487L;
 
     @ApiModelProperty(value = "Position of the field")
@@ -50,15 +50,9 @@ public class FieldDto extends BaseDto {
     @ApiModelProperty(value = "Can the field be null, default is true")
     private Boolean isNullable = true;
 
-    @ApiModelProperty(value = "Size of the field")
-    private Integer size;
-
     @ApiModelProperty(value = "Default value of the field")
     private String defaultValue;
 
-    @ApiModelProperty(value = "Is a sorted field, default is false")
-    private Boolean isSortable = false;
-
     @ApiModelProperty(value = "This filed sorted type, like: ascending, 
descending, ignore")
     private String sortType;
 
diff --git 
a/common/src/main/java/org/apache/rocketmq/schema/registry/common/dto/GetSchemaResponse.java
 
b/common/src/main/java/org/apache/rocketmq/schema/registry/common/dto/GetSchemaResponse.java
index 446463d..a8ab363 100644
--- 
a/common/src/main/java/org/apache/rocketmq/schema/registry/common/dto/GetSchemaResponse.java
+++ 
b/common/src/main/java/org/apache/rocketmq/schema/registry/common/dto/GetSchemaResponse.java
@@ -17,6 +17,9 @@
 
 package org.apache.rocketmq.schema.registry.common.dto;
 
+import java.util.List;
+import java.util.stream.Collectors;
+import org.apache.avro.Schema;
 import org.apache.rocketmq.schema.registry.common.QualifiedName;
 import org.apache.rocketmq.schema.registry.common.model.Dependency;
 import org.apache.rocketmq.schema.registry.common.model.SchemaRecordInfo;
@@ -50,6 +53,9 @@ public class GetSchemaResponse extends BaseDto {
     @ApiModelProperty(value = "Schema idl")
     private String idl;
 
+    @ApiModelProperty(value = "Schema idl")
+    private List<Field> fields;
+
     @ApiModelProperty(value = "Schema dependency")
     private Dependency dependency;
 
@@ -64,6 +70,28 @@ public class GetSchemaResponse extends BaseDto {
         this.idl = schemaRecordInfo.getIdl();
         this.dependency = schemaRecordInfo.getDependency();
         this.type = schemaRecordInfo.getType();
+        this.fields = parse(idl);
     }
 
+    private List<Field> parse(String schemaIdl) {
+        Schema schema = new Schema.Parser().parse(schemaIdl);
+        return schema.getFields().stream().map(field -> {
+            String type = field.schema().getType().getName();
+            // ["null", "double"] represent this field is nullable
+            if (field.schema().isUnion() && field.schema().getTypes().size() 
== 2) {
+                type = field.schema().getTypes().get(1).getName();
+            }
+            String defaultVal = field.hasDefaultValue() ? 
field.defaultVal().toString() : "null";
+            return Field.builder()
+                    .pos(field.pos())
+                    .name(field.name())
+                    .type(type)
+                    .comment(field.doc())
+                    .isNullable(field.schema().isNullable())
+                    .defaultValue(defaultVal)
+                    .sortType(field.order().name())
+                    .extra("")
+                    .build();
+        }).collect(Collectors.toList());
+    }
 }
diff --git 
a/common/src/main/java/org/apache/rocketmq/schema/registry/common/utils/StorageUtil.java
 
b/common/src/main/java/org/apache/rocketmq/schema/registry/common/utils/StorageUtil.java
index 706f977..0607f3c 100644
--- 
a/common/src/main/java/org/apache/rocketmq/schema/registry/common/utils/StorageUtil.java
+++ 
b/common/src/main/java/org/apache/rocketmq/schema/registry/common/utils/StorageUtil.java
@@ -20,7 +20,7 @@ package org.apache.rocketmq.schema.registry.common.utils;
 import org.apache.rocketmq.schema.registry.common.context.RequestContext;
 import 
org.apache.rocketmq.schema.registry.common.context.StorageServiceContext;
 import org.apache.rocketmq.schema.registry.common.dto.AuditDto;
-import org.apache.rocketmq.schema.registry.common.dto.FieldDto;
+import org.apache.rocketmq.schema.registry.common.dto.Field;
 import org.apache.rocketmq.schema.registry.common.dto.SchemaDetailDto;
 import org.apache.rocketmq.schema.registry.common.dto.SchemaDto;
 import org.apache.rocketmq.schema.registry.common.dto.SchemaMetaDto;
@@ -54,7 +54,7 @@ public class StorageUtil {
                 mapping(SchemaRecordDto.class, SchemaRecordInfo.class);
                 mapping(SubjectDto.class, SubjectInfo.class);
                 mapping(AuditDto.class, AuditInfo.class);
-                mapping(FieldDto.class, FieldInfo.class);
+                mapping(Field.class, FieldInfo.class);
             }
         };
         dozerBeanMapper.addMapping(builder);
diff --git 
a/core/src/main/java/org/apache/rocketmq/schema/registry/core/api/RequestProcessor.java
 
b/core/src/main/java/org/apache/rocketmq/schema/registry/core/api/RequestProcessor.java
index 8a9ada6..7579658 100644
--- 
a/core/src/main/java/org/apache/rocketmq/schema/registry/core/api/RequestProcessor.java
+++ 
b/core/src/main/java/org/apache/rocketmq/schema/registry/core/api/RequestProcessor.java
@@ -51,7 +51,6 @@ public class RequestProcessor {
          *  TODO: 2. add async process
          */
 
-        long time = System.currentTimeMillis();
         try {
             log.info("Handling request: {} for {}", requestName, 
qualifiedName);
             return supplier.get();

Reply via email to