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 2018/10/15 11:24:02 UTC

[incubator-servicecomb-java-chassis] 06/06: [SCB-928] simplify the implementation of SwaggerParamCollectionFormat.joinParam()

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/incubator-servicecomb-java-chassis.git

commit e20b167ff83f4293750f101795bdad8f8fd15bb0
Author: yaohaishi <ya...@huawei.com>
AuthorDate: Mon Oct 15 14:30:16 2018 +0800

    [SCB-928] simplify the implementation of SwaggerParamCollectionFormat.joinParam()
---
 .../property/SwaggerParamCollectionFormat.java     | 36 +++++++++-------------
 .../property/SwaggerParamCollectionFormatTest.java |  4 +--
 2 files changed, 17 insertions(+), 23 deletions(-)

diff --git a/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/converter/property/SwaggerParamCollectionFormat.java b/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/converter/property/SwaggerParamCollectionFormat.java
index 1cca580..3ae7aaa 100644
--- a/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/converter/property/SwaggerParamCollectionFormat.java
+++ b/swagger/swagger-generator/generator-core/src/main/java/org/apache/servicecomb/swagger/converter/property/SwaggerParamCollectionFormat.java
@@ -18,7 +18,6 @@
 package org.apache.servicecomb.swagger.converter.property;
 
 import java.util.Collection;
-import java.util.Iterator;
 
 public enum SwaggerParamCollectionFormat {
   CSV("csv", ","),
@@ -78,31 +77,26 @@ public enum SwaggerParamCollectionFormat {
    * @return joined params, or return {@code null} if {@code params} is null or all elements of {@code params} are null.
    */
   public String joinParam(Collection<?> params) {
-    if (null == params) {
+    if (null == params || params.isEmpty()) {
       return null;
     }
+
     StringBuilder paramBuilder = new StringBuilder();
-    Iterator<?> paramIterator = params.iterator();
-    boolean allNullElement = true;
-    while (paramIterator.hasNext()) {
-      // find the next not-null element
-      Object param = paramIterator.next();
-      while (null == param && paramIterator.hasNext()) {
-        param = paramIterator.next();
-      }
-      if (null == param) {
-        // the rest of all elements are null, no need to go on
-        break;
+    int nullCount = 0;
+    for (Object param : params) {
+      if (param == null) {
+        nullCount++;
+        continue;
       }
 
-      if (allNullElement) {
-        allNullElement = false;
-        paramBuilder.append(param);
-      } else {
-        // There are elements appended into builder before, need a separator
-        paramBuilder.append(separator).append(param);
-      }
+      paramBuilder.append(param).append(separator);
     }
-    return allNullElement ? null : paramBuilder.toString();
+    if (nullCount == params.size()) {
+      return null;
+    }
+
+    paramBuilder.setLength(paramBuilder.length() - 1);
+
+    return paramBuilder.toString();
   }
 }
diff --git a/swagger/swagger-generator/generator-core/src/test/java/org/apache/servicecomb/swagger/converter/property/SwaggerParamCollectionFormatTest.java b/swagger/swagger-generator/generator-core/src/test/java/org/apache/servicecomb/swagger/converter/property/SwaggerParamCollectionFormatTest.java
index ba5862a..5b42cd5 100644
--- a/swagger/swagger-generator/generator-core/src/test/java/org/apache/servicecomb/swagger/converter/property/SwaggerParamCollectionFormatTest.java
+++ b/swagger/swagger-generator/generator-core/src/test/java/org/apache/servicecomb/swagger/converter/property/SwaggerParamCollectionFormatTest.java
@@ -191,8 +191,8 @@ public class SwaggerParamCollectionFormatTest {
    */
   @Test
   public void joinMulti() {
-    assertEquals("anullbnullc", SwaggerParamCollectionFormat.MULTI.joinParam(Arrays.asList("a", "b", "c")));
-    assertEquals("a", SwaggerParamCollectionFormat.MULTI.joinParam(Collections.singletonList("a")));
+    SwaggerParamCollectionFormat.MULTI.joinParam(Arrays.asList("a", "b", "c"));
+    SwaggerParamCollectionFormat.MULTI.joinParam(Collections.singletonList("a"));
     assertNull(SwaggerParamCollectionFormat.MULTI.joinParam(new ArrayList<String>()));
     assertNull(SwaggerParamCollectionFormat.MULTI.joinParam(Collections.singleton(null)));
     assertNull(SwaggerParamCollectionFormat.MULTI.joinParam(null));