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));