You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by wu...@apache.org on 2018/01/09 00:56:36 UTC

[incubator-servicecomb-java-chassis] branch master updated (8369fab -> da3addb)

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

wujimin pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-java-chassis.git.


    from 8369fab  SCB-199 bug fix: consumer upload file, did not set correct boundary contentType
     new 24f4cc2  [SCB-195] support @Api annotation to specify tag
     new da3addb  [SCB-195] improve check method in unit test

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../core/AbstractSwaggerGeneratorContext.java      |  3 +
 .../swagger/generator/core/OperationGenerator.java | 18 ++++++
 .../swagger/generator/core/SwaggerGenerator.java   | 27 ++++++++
 ...ponsesClassProcessor.java => ApiProcessor.java} | 24 ++++---
 .../generator/core/TestOperationGenerator.java     | 63 +++++++++++++++++-
 .../generator/core/TestSwaggerGenerator.java       | 15 +++++
 .../annotation/ApiOperationProcessorTest.java      | 74 +++++++++++++++++++++
 .../processor/annotation/ApiProcessorTest.java     | 63 ++++++++++++++++++
 .../annotation/SwaggerDefinitionProcessorTest.java | 75 ++++++++++++++++++++++
 9 files changed, 352 insertions(+), 10 deletions(-)
 copy swagger/swagger-generator/generator-core/src/main/java/io/servicecomb/swagger/generator/core/processor/annotation/{ApiResponsesClassProcessor.java => ApiProcessor.java} (70%)
 create mode 100644 swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/processor/annotation/ApiOperationProcessorTest.java
 create mode 100644 swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/processor/annotation/ApiProcessorTest.java
 create mode 100644 swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/processor/annotation/SwaggerDefinitionProcessorTest.java

-- 
To stop receiving notification emails like this one, please contact
['"commits@servicecomb.apache.org" <co...@servicecomb.apache.org>'].

[incubator-servicecomb-java-chassis] 01/02: [SCB-195] support @Api annotation to specify tag

Posted by wu...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

wujimin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-java-chassis.git

commit 24f4cc2d01bbcd227fbeb5a0fc230639ca862400
Author: yaohaishi <ya...@huawei.com>
AuthorDate: Mon Jan 8 10:14:47 2018 +0800

    [SCB-195] support @Api annotation to specify tag
---
 .../core/AbstractSwaggerGeneratorContext.java      |  3 +
 .../swagger/generator/core/OperationGenerator.java | 18 +++++
 .../swagger/generator/core/SwaggerGenerator.java   | 27 ++++++++
 .../core/processor/annotation/ApiProcessor.java    | 43 ++++++++++++
 .../generator/core/TestOperationGenerator.java     | 67 ++++++++++++++++++-
 .../generator/core/TestSwaggerGenerator.java       | 17 +++++
 .../annotation/ApiOperationProcessorTest.java      | 76 ++++++++++++++++++++++
 .../processor/annotation/ApiProcessorTest.java     | 67 +++++++++++++++++++
 .../annotation/SwaggerDefinitionProcessorTest.java | 75 +++++++++++++++++++++
 9 files changed, 391 insertions(+), 2 deletions(-)

diff --git a/swagger/swagger-generator/generator-core/src/main/java/io/servicecomb/swagger/generator/core/AbstractSwaggerGeneratorContext.java b/swagger/swagger-generator/generator-core/src/main/java/io/servicecomb/swagger/generator/core/AbstractSwaggerGeneratorContext.java
index 922624c..ab5067c 100644
--- a/swagger/swagger-generator/generator-core/src/main/java/io/servicecomb/swagger/generator/core/AbstractSwaggerGeneratorContext.java
+++ b/swagger/swagger-generator/generator-core/src/main/java/io/servicecomb/swagger/generator/core/AbstractSwaggerGeneratorContext.java
@@ -33,6 +33,7 @@ import io.servicecomb.swagger.generator.core.processor.annotation.ApiImplicitPar
 import io.servicecomb.swagger.generator.core.processor.annotation.ApiImplicitParamsClassProcessor;
 import io.servicecomb.swagger.generator.core.processor.annotation.ApiImplicitParamsMethodProcessor;
 import io.servicecomb.swagger.generator.core.processor.annotation.ApiOperationProcessor;
+import io.servicecomb.swagger.generator.core.processor.annotation.ApiProcessor;
 import io.servicecomb.swagger.generator.core.processor.annotation.ApiResponseClassProcessor;
 import io.servicecomb.swagger.generator.core.processor.annotation.ApiResponseMethodProcessor;
 import io.servicecomb.swagger.generator.core.processor.annotation.ApiResponsesClassProcessor;
@@ -42,6 +43,7 @@ import io.servicecomb.swagger.generator.core.processor.annotation.ResponseHeader
 import io.servicecomb.swagger.generator.core.processor.annotation.SwaggerDefinitionProcessor;
 import io.servicecomb.swagger.generator.core.processor.parametertype.RawJsonRequestBodyProcessor;
 import io.servicecomb.swagger.generator.core.processor.response.DefaultResponseTypeProcessor;
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
@@ -104,6 +106,7 @@ public abstract class AbstractSwaggerGeneratorContext implements SwaggerGenerato
   }
 
   protected void initClassAnnotationMgr() {
+    classAnnotationMgr.register(Api.class, new ApiProcessor());
     classAnnotationMgr.register(SwaggerDefinition.class, new SwaggerDefinitionProcessor());
 
     classAnnotationMgr.register(ApiImplicitParams.class, new ApiImplicitParamsClassProcessor());
diff --git a/swagger/swagger-generator/generator-core/src/main/java/io/servicecomb/swagger/generator/core/OperationGenerator.java b/swagger/swagger-generator/generator-core/src/main/java/io/servicecomb/swagger/generator/core/OperationGenerator.java
index e0a8cc8..e961bb7 100644
--- a/swagger/swagger-generator/generator-core/src/main/java/io/servicecomb/swagger/generator/core/OperationGenerator.java
+++ b/swagger/swagger-generator/generator-core/src/main/java/io/servicecomb/swagger/generator/core/OperationGenerator.java
@@ -221,6 +221,24 @@ public class OperationGenerator {
       }
       processor.process(annotation, this);
     }
+
+    setDefaultTag();
+  }
+
+  private void setDefaultTag() {
+    // if tag has been defined, do nothing
+    if (null != operation.getTags()) {
+      for (String tag : operation.getTags()) {
+        if (!StringUtils.isEmpty(tag)) {
+          return;
+        }
+      }
+    }
+
+    // if there is no tag, set default tag
+    if (!swaggerGenerator.getDefaultTags().isEmpty()) {
+      operation.setTags(new ArrayList<>(swaggerGenerator.getDefaultTags()));
+    }
   }
 
   /**
diff --git a/swagger/swagger-generator/generator-core/src/main/java/io/servicecomb/swagger/generator/core/SwaggerGenerator.java b/swagger/swagger-generator/generator-core/src/main/java/io/servicecomb/swagger/generator/core/SwaggerGenerator.java
index aa4fa33..0956ec3 100644
--- a/swagger/swagger-generator/generator-core/src/main/java/io/servicecomb/swagger/generator/core/SwaggerGenerator.java
+++ b/swagger/swagger-generator/generator-core/src/main/java/io/servicecomb/swagger/generator/core/SwaggerGenerator.java
@@ -22,19 +22,23 @@ import java.lang.reflect.Method;
 import java.util.Arrays;
 import java.util.Comparator;
 import java.util.HashMap;
+import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
+import java.util.Set;
 
 import javax.ws.rs.core.MediaType;
 
 import org.springframework.util.StringUtils;
 
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.models.Info;
 import io.swagger.models.Operation;
 import io.swagger.models.Path;
 import io.swagger.models.Swagger;
+import io.swagger.models.Tag;
 import io.swagger.models.parameters.Parameter;
 
 /**
@@ -61,6 +65,13 @@ public class SwaggerGenerator {
 
   protected Swagger swagger;
 
+  /**
+   * According to the definition of swagger, the {@link Tag} defined in {@link Api#tags()} will be set
+   * to all of the operations in this swagger. And the {@link Tag} definde in {@link ApiOperation#tags()} will overwrite
+   * the {@link Api#tags()}.
+   */
+  protected Set<String> defaultTags = new LinkedHashSet<>();
+
   private Map<String, OperationGenerator> operationGeneratorMap = new HashMap<>();
 
   private String httpMethod;
@@ -281,4 +292,20 @@ public class SwaggerGenerator {
 
     throw new Error("method not found, name=" + methodName);
   }
+
+  /**
+   * Add a tag to {@link #defaultTags} if the corresponding tag not exists.
+   * @param tagName the name of the added tag
+   */
+  public void addDefaultTag(String tagName) {
+    if (StringUtils.isEmpty(tagName) || defaultTags.contains(tagName)) {
+      return;
+    }
+
+    defaultTags.add(tagName);
+  }
+
+  public Set<String> getDefaultTags() {
+    return defaultTags;
+  }
 }
diff --git a/swagger/swagger-generator/generator-core/src/main/java/io/servicecomb/swagger/generator/core/processor/annotation/ApiProcessor.java b/swagger/swagger-generator/generator-core/src/main/java/io/servicecomb/swagger/generator/core/processor/annotation/ApiProcessor.java
new file mode 100644
index 0000000..c024059
--- /dev/null
+++ b/swagger/swagger-generator/generator-core/src/main/java/io/servicecomb/swagger/generator/core/processor/annotation/ApiProcessor.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package io.servicecomb.swagger.generator.core.processor.annotation;
+
+import org.springframework.util.StringUtils;
+
+import io.servicecomb.swagger.generator.core.ClassAnnotationProcessor;
+import io.servicecomb.swagger.generator.core.SwaggerGenerator;
+import io.swagger.annotations.Api;
+
+public class ApiProcessor implements ClassAnnotationProcessor {
+  @Override
+  public void process(Object annotation, SwaggerGenerator swaggerGenerator) {
+    Api api = (Api) annotation;
+
+    setTags(api, swaggerGenerator);
+  }
+
+  private void setTags(Api api, SwaggerGenerator swaggerGenerator) {
+    String[] tags = api.tags();
+    for (String tagName : tags) {
+      if (StringUtils.isEmpty(tagName)) {
+        continue;
+      }
+      swaggerGenerator.addDefaultTag(tagName);
+    }
+  }
+}
diff --git a/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/TestOperationGenerator.java b/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/TestOperationGenerator.java
index abbc528..b6ca7af 100644
--- a/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/TestOperationGenerator.java
+++ b/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/TestOperationGenerator.java
@@ -17,14 +17,18 @@
 
 package io.servicecomb.swagger.generator.core;
 
+import static org.junit.Assert.assertEquals;
+
+import java.lang.reflect.Method;
 import java.util.Collections;
+import java.util.List;
 
-import org.junit.Assert;
 import org.junit.Test;
 import org.springframework.util.StringValueResolver;
 
 import io.servicecomb.foundation.test.scaffolding.spring.SpringUtils;
 import io.servicecomb.swagger.generator.pojo.PojoSwaggerGeneratorContext;
+import io.swagger.annotations.ApiOperation;
 
 public class TestOperationGenerator {
   @Test
@@ -39,6 +43,65 @@ public class TestOperationGenerator {
     OperationGenerator operationGenerator = new OperationGenerator(swaggerGenerator, null);
     operationGenerator.setPath("/a/${var}/b");
 
-    Assert.assertEquals("/a/varValue/b", operationGenerator.getPath());
+    assertEquals("/a/varValue/b", operationGenerator.getPath());
+  }
+
+  @Test
+  public void testConvertTags() throws NoSuchMethodException {
+    Method function = TestClass.class.getMethod("function");
+    SwaggerGenerator swaggerGenerator = new SwaggerGenerator(new PojoSwaggerGeneratorContext(), TestClass.class);
+    OperationGenerator operationGenerator = new OperationGenerator(swaggerGenerator, function);
+
+    operationGenerator.generate();
+
+    List<String> tagList = operationGenerator.getOperation().getTags();
+    assertEquals(2, tagList.size());
+    assertEquals("tag1", tagList.get(0));
+    assertEquals("tag2", tagList.get(1));
+  }
+
+  @Test
+  public void testConvertTagsOnMethodWithNoTag() throws NoSuchMethodException {
+    Method function = TestClass.class.getMethod("functionWithNoTag");
+    SwaggerGenerator swaggerGenerator = new SwaggerGenerator(new PojoSwaggerGeneratorContext(), TestClass.class);
+    OperationGenerator operationGenerator = new OperationGenerator(swaggerGenerator, function);
+    swaggerGenerator.addDefaultTag("default0");
+    swaggerGenerator.addDefaultTag("default1");
+
+    operationGenerator.generate();
+
+    List<String> tagList = operationGenerator.getOperation().getTags();
+    assertEquals(2, tagList.size());
+    assertEquals("default0", tagList.get(0));
+    assertEquals("default1", tagList.get(1));
+  }
+
+  @Test
+  public void testConvertTagsOnMethodWithNoAnnotation() throws NoSuchMethodException {
+    Method function = TestClass.class.getMethod("functionWithNoAnnotation");
+    SwaggerGenerator swaggerGenerator = new SwaggerGenerator(new PojoSwaggerGeneratorContext(), TestClass.class);
+    OperationGenerator operationGenerator = new OperationGenerator(swaggerGenerator, function);
+    swaggerGenerator.addDefaultTag("default0");
+    swaggerGenerator.addDefaultTag("default1");
+
+    operationGenerator.generate();
+
+    List<String> tagList = operationGenerator.getOperation().getTags();
+    assertEquals(2, tagList.size());
+    assertEquals("default0", tagList.get(0));
+    assertEquals("default1", tagList.get(1));
+  }
+
+  private static class TestClass {
+    @ApiOperation(value = "value1", tags = {"tag1", "tag2"})
+    public void function() {
+    }
+
+    @ApiOperation(value = "value2")
+    public void functionWithNoTag() {
+    }
+
+    public void functionWithNoAnnotation() {
+    }
   }
 }
diff --git a/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/TestSwaggerGenerator.java b/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/TestSwaggerGenerator.java
index d30e1b4..708dc27 100644
--- a/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/TestSwaggerGenerator.java
+++ b/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/TestSwaggerGenerator.java
@@ -40,4 +40,21 @@ public class TestSwaggerGenerator {
 
     Assert.assertEquals("/a/varValue/b", swaggerGenerator.getSwagger().getBasePath());
   }
+
+  @Test
+  public void testAddDefaultTag() {
+    SwaggerGenerator swaggerGenerator = new SwaggerGenerator(new PojoSwaggerGeneratorContext(), null);
+
+    swaggerGenerator.addDefaultTag("test1");
+    swaggerGenerator.addDefaultTag("");
+    swaggerGenerator.addDefaultTag(null);
+    swaggerGenerator.addDefaultTag("test2");
+
+    Assert.assertEquals(2, swaggerGenerator.getDefaultTags().size());
+    int index = 0;
+    for (String tagName : swaggerGenerator.getDefaultTags()) {
+      ++index;
+      Assert.assertEquals("test" + index, tagName);
+    }
+  }
 }
diff --git a/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/processor/annotation/ApiOperationProcessorTest.java b/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/processor/annotation/ApiOperationProcessorTest.java
new file mode 100644
index 0000000..2f706e2
--- /dev/null
+++ b/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/processor/annotation/ApiOperationProcessorTest.java
@@ -0,0 +1,76 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package io.servicecomb.swagger.generator.core.processor.annotation;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
+import java.lang.reflect.Method;
+import java.util.List;
+
+import org.junit.Test;
+
+import io.servicecomb.swagger.generator.core.OperationGenerator;
+import io.servicecomb.swagger.generator.core.SwaggerGenerator;
+import io.servicecomb.swagger.generator.pojo.PojoSwaggerGeneratorContext;
+import io.swagger.annotations.ApiOperation;
+
+public class ApiOperationProcessorTest {
+
+  @Test
+  public void testConvertTags() throws NoSuchMethodException {
+    ApiOperationProcessor apiOperationProcessor = new ApiOperationProcessor();
+
+    Method function = TestClass.class.getMethod("function");
+    SwaggerGenerator swaggerGenerator = new SwaggerGenerator(new PojoSwaggerGeneratorContext(), TestClass.class);
+    OperationGenerator operationGenerator = new OperationGenerator(swaggerGenerator, function);
+
+    apiOperationProcessor.process(function.getAnnotation(ApiOperation.class),
+        operationGenerator);
+
+    List<String> tagList = operationGenerator.getOperation().getTags();
+    assertEquals(2, tagList.size());
+    assertEquals("tag1", tagList.get(0));
+    assertEquals("tag2", tagList.get(1));
+  }
+
+  @Test
+  public void testConvertTagsOnMethodWithNoTag() throws NoSuchMethodException {
+    ApiOperationProcessor apiOperationProcessor = new ApiOperationProcessor();
+
+    Method function = TestClass.class.getMethod("functionWithNoTag");
+    SwaggerGenerator swaggerGenerator = new SwaggerGenerator(new PojoSwaggerGeneratorContext(), TestClass.class);
+    OperationGenerator operationGenerator = new OperationGenerator(swaggerGenerator, function);
+
+    apiOperationProcessor.process(function.getAnnotation(ApiOperation.class),
+        operationGenerator);
+
+    List<String> tagList = operationGenerator.getOperation().getTags();
+    assertNull(tagList);
+  }
+
+  private static class TestClass {
+    @ApiOperation(value = "value1", tags = {"tag1", "tag2"})
+    public void function() {
+    }
+
+    @ApiOperation(value = "value2")
+    public void functionWithNoTag() {
+    }
+  }
+}
\ No newline at end of file
diff --git a/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/processor/annotation/ApiProcessorTest.java b/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/processor/annotation/ApiProcessorTest.java
new file mode 100644
index 0000000..9620f1a
--- /dev/null
+++ b/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/processor/annotation/ApiProcessorTest.java
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package io.servicecomb.swagger.generator.core.processor.annotation;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.Set;
+
+import org.junit.Test;
+import org.mockito.Mockito;
+
+import io.servicecomb.swagger.generator.core.SwaggerGenerator;
+import io.servicecomb.swagger.generator.core.SwaggerGeneratorContext;
+import io.swagger.annotations.Api;
+
+public class ApiProcessorTest {
+  private ApiProcessor apiProcessor = new ApiProcessor();
+
+  @Test
+  public void process() {
+    SwaggerGenerator swaggerGenerator = new SwaggerGenerator(Mockito.mock(SwaggerGeneratorContext.class),
+        null);
+    apiProcessor.process(SwaggerTestTarget.class.getAnnotation(Api.class),
+        swaggerGenerator);
+
+    Set<String> tags = swaggerGenerator.getDefaultTags();
+    assertEquals(2, tags.size());
+    int index = 0;
+    for (String tagName : tags) {
+      ++index;
+      assertEquals("tag" + index, tagName);
+    }
+  }
+
+  @Test
+  public void processOnNoTag() {
+    SwaggerGenerator swaggerGenerator = new SwaggerGenerator(Mockito.mock(SwaggerGeneratorContext.class),
+        null);
+    apiProcessor.process(SwaggerTestTargetWithNoTag.class.getAnnotation(Api.class), swaggerGenerator);
+
+    Set<String> tags = swaggerGenerator.getDefaultTags();
+    assertEquals(0, tags.size());
+  }
+
+  @Api(tags = {"tag1", "tag2", "", "tag1"})
+  private class SwaggerTestTarget {
+  }
+
+  @Api
+  private class SwaggerTestTargetWithNoTag {
+  }
+}
diff --git a/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/processor/annotation/SwaggerDefinitionProcessorTest.java b/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/processor/annotation/SwaggerDefinitionProcessorTest.java
new file mode 100644
index 0000000..2a88a8a
--- /dev/null
+++ b/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/processor/annotation/SwaggerDefinitionProcessorTest.java
@@ -0,0 +1,75 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package io.servicecomb.swagger.generator.core.processor.annotation;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+import org.mockito.Mockito;
+
+import io.servicecomb.swagger.generator.core.SwaggerGenerator;
+import io.servicecomb.swagger.generator.core.SwaggerGeneratorContext;
+import io.swagger.annotations.Contact;
+import io.swagger.annotations.ExternalDocs;
+import io.swagger.annotations.Info;
+import io.swagger.annotations.License;
+import io.swagger.annotations.SwaggerDefinition;
+import io.swagger.annotations.SwaggerDefinition.Scheme;
+import io.swagger.annotations.Tag;
+import io.swagger.models.Swagger;
+
+public class SwaggerDefinitionProcessorTest {
+
+  private SwaggerDefinitionProcessor swaggerDefinitionProcessor = new SwaggerDefinitionProcessor();
+
+  @Test
+  public void testProcess() {
+    SwaggerGenerator swaggerGenerator = new SwaggerGenerator(Mockito.mock(SwaggerGeneratorContext.class),
+        null);
+    swaggerDefinitionProcessor.process(SwaggerTestTarget.class.getAnnotation(SwaggerDefinition.class),
+        swaggerGenerator);
+
+    Swagger swagger = swaggerGenerator.getSwagger();
+    assertEquals(1, swagger.getTags().size());
+    io.swagger.models.Tag tag = swagger.getTags().get(0);
+    assertEquals("testTag", tag.getName());
+    assertEquals("desc", tag.getDescription());
+    assertEquals("testValue", tag.getExternalDocs().getDescription());
+    assertEquals("testUrl", tag.getExternalDocs().getUrl());
+    assertEquals("127.0.0.1", swagger.getHost());
+    assertEquals(2, swagger.getSchemes().size());
+    assertEquals(io.swagger.models.Scheme.HTTP, swagger.getSchemes().get(0));
+    assertEquals(io.swagger.models.Scheme.HTTPS, swagger.getSchemes().get(1));
+    io.swagger.models.Info info = swagger.getInfo();
+    assertEquals("title", info.getTitle());
+    assertEquals("version", info.getVersion());
+    assertEquals("desc", info.getDescription());
+    assertEquals("contactName", info.getContact().getName());
+    assertEquals("licenseName", info.getLicense().getName());
+  }
+
+  @SwaggerDefinition(tags = {
+      @Tag(name = "testTag", description = "desc", externalDocs = @ExternalDocs(value = "testValue", url = "testUrl"))
+  },
+      host = "127.0.0.1",
+      schemes = {Scheme.HTTP, Scheme.HTTPS},
+      info = @Info(title = "title", version = "version", description = "desc", contact =
+      @Contact(name = "contactName"), license = @License(name = "licenseName")))
+  private class SwaggerTestTarget {
+  }
+}

-- 
To stop receiving notification emails like this one, please contact
"commits@servicecomb.apache.org" <co...@servicecomb.apache.org>.

[incubator-servicecomb-java-chassis] 02/02: [SCB-195] improve check method in unit test

Posted by wu...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

wujimin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-java-chassis.git

commit da3addb9452694e823a14816db94cfeba3e6dd80
Author: yaohaishi <ya...@huawei.com>
AuthorDate: Mon Jan 8 16:02:03 2018 +0800

    [SCB-195] improve check method in unit test
---
 .../swagger/generator/core/TestOperationGenerator.java     | 14 +++++---------
 .../swagger/generator/core/TestSwaggerGenerator.java       | 10 ++++------
 .../processor/annotation/ApiOperationProcessorTest.java    | 10 ++++------
 .../core/processor/annotation/ApiProcessorTest.java        | 10 +++-------
 .../annotation/SwaggerDefinitionProcessorTest.java         |  6 +++---
 5 files changed, 19 insertions(+), 31 deletions(-)

diff --git a/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/TestOperationGenerator.java b/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/TestOperationGenerator.java
index b6ca7af..fd1c364 100644
--- a/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/TestOperationGenerator.java
+++ b/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/TestOperationGenerator.java
@@ -17,7 +17,9 @@
 
 package io.servicecomb.swagger.generator.core;
 
+import static org.hamcrest.Matchers.contains;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThat;
 
 import java.lang.reflect.Method;
 import java.util.Collections;
@@ -55,9 +57,7 @@ public class TestOperationGenerator {
     operationGenerator.generate();
 
     List<String> tagList = operationGenerator.getOperation().getTags();
-    assertEquals(2, tagList.size());
-    assertEquals("tag1", tagList.get(0));
-    assertEquals("tag2", tagList.get(1));
+    assertThat(tagList, contains("tag1", "tag2"));
   }
 
   @Test
@@ -71,9 +71,7 @@ public class TestOperationGenerator {
     operationGenerator.generate();
 
     List<String> tagList = operationGenerator.getOperation().getTags();
-    assertEquals(2, tagList.size());
-    assertEquals("default0", tagList.get(0));
-    assertEquals("default1", tagList.get(1));
+    assertThat(tagList, contains("default0", "default1"));
   }
 
   @Test
@@ -87,9 +85,7 @@ public class TestOperationGenerator {
     operationGenerator.generate();
 
     List<String> tagList = operationGenerator.getOperation().getTags();
-    assertEquals(2, tagList.size());
-    assertEquals("default0", tagList.get(0));
-    assertEquals("default1", tagList.get(1));
+    assertThat(tagList, contains("default0", "default1"));
   }
 
   private static class TestClass {
diff --git a/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/TestSwaggerGenerator.java b/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/TestSwaggerGenerator.java
index 708dc27..bb5ebe8 100644
--- a/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/TestSwaggerGenerator.java
+++ b/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/TestSwaggerGenerator.java
@@ -17,6 +17,9 @@
 
 package io.servicecomb.swagger.generator.core;
 
+import static org.hamcrest.Matchers.contains;
+import static org.junit.Assert.assertThat;
+
 import java.util.Collections;
 
 import org.junit.Assert;
@@ -50,11 +53,6 @@ public class TestSwaggerGenerator {
     swaggerGenerator.addDefaultTag(null);
     swaggerGenerator.addDefaultTag("test2");
 
-    Assert.assertEquals(2, swaggerGenerator.getDefaultTags().size());
-    int index = 0;
-    for (String tagName : swaggerGenerator.getDefaultTags()) {
-      ++index;
-      Assert.assertEquals("test" + index, tagName);
-    }
+    assertThat(swaggerGenerator.getDefaultTags(), contains("test1", "test2"));
   }
 }
diff --git a/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/processor/annotation/ApiOperationProcessorTest.java b/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/processor/annotation/ApiOperationProcessorTest.java
index 2f706e2..5e1aa6e 100644
--- a/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/processor/annotation/ApiOperationProcessorTest.java
+++ b/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/processor/annotation/ApiOperationProcessorTest.java
@@ -17,8 +17,9 @@
 
 package io.servicecomb.swagger.generator.core.processor.annotation;
 
-import static org.junit.Assert.assertEquals;
+import static org.hamcrest.Matchers.containsInAnyOrder;
 import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertThat;
 
 import java.lang.reflect.Method;
 import java.util.List;
@@ -43,10 +44,7 @@ public class ApiOperationProcessorTest {
     apiOperationProcessor.process(function.getAnnotation(ApiOperation.class),
         operationGenerator);
 
-    List<String> tagList = operationGenerator.getOperation().getTags();
-    assertEquals(2, tagList.size());
-    assertEquals("tag1", tagList.get(0));
-    assertEquals("tag2", tagList.get(1));
+    assertThat(operationGenerator.getOperation().getTags(), containsInAnyOrder("tag1", "tag2"));
   }
 
   @Test
@@ -73,4 +71,4 @@ public class ApiOperationProcessorTest {
     public void functionWithNoTag() {
     }
   }
-}
\ No newline at end of file
+}
diff --git a/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/processor/annotation/ApiProcessorTest.java b/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/processor/annotation/ApiProcessorTest.java
index 9620f1a..d44b7a9 100644
--- a/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/processor/annotation/ApiProcessorTest.java
+++ b/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/processor/annotation/ApiProcessorTest.java
@@ -17,7 +17,9 @@
 
 package io.servicecomb.swagger.generator.core.processor.annotation;
 
+import static org.hamcrest.Matchers.contains;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThat;
 
 import java.util.Set;
 
@@ -38,13 +40,7 @@ public class ApiProcessorTest {
     apiProcessor.process(SwaggerTestTarget.class.getAnnotation(Api.class),
         swaggerGenerator);
 
-    Set<String> tags = swaggerGenerator.getDefaultTags();
-    assertEquals(2, tags.size());
-    int index = 0;
-    for (String tagName : tags) {
-      ++index;
-      assertEquals("tag" + index, tagName);
-    }
+    assertThat(swaggerGenerator.getDefaultTags(), contains("tag1", "tag2"));
   }
 
   @Test
diff --git a/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/processor/annotation/SwaggerDefinitionProcessorTest.java b/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/processor/annotation/SwaggerDefinitionProcessorTest.java
index 2a88a8a..6fd97ac 100644
--- a/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/processor/annotation/SwaggerDefinitionProcessorTest.java
+++ b/swagger/swagger-generator/generator-core/src/test/java/io/servicecomb/swagger/generator/core/processor/annotation/SwaggerDefinitionProcessorTest.java
@@ -17,7 +17,9 @@
 
 package io.servicecomb.swagger.generator.core.processor.annotation;
 
+import static org.hamcrest.Matchers.contains;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThat;
 
 import org.junit.Test;
 import org.mockito.Mockito;
@@ -52,9 +54,7 @@ public class SwaggerDefinitionProcessorTest {
     assertEquals("testValue", tag.getExternalDocs().getDescription());
     assertEquals("testUrl", tag.getExternalDocs().getUrl());
     assertEquals("127.0.0.1", swagger.getHost());
-    assertEquals(2, swagger.getSchemes().size());
-    assertEquals(io.swagger.models.Scheme.HTTP, swagger.getSchemes().get(0));
-    assertEquals(io.swagger.models.Scheme.HTTPS, swagger.getSchemes().get(1));
+    assertThat(swagger.getSchemes(), contains(io.swagger.models.Scheme.HTTP, io.swagger.models.Scheme.HTTPS));
     io.swagger.models.Info info = swagger.getInfo();
     assertEquals("title", info.getTitle());
     assertEquals("version", info.getVersion());

-- 
To stop receiving notification emails like this one, please contact
"commits@servicecomb.apache.org" <co...@servicecomb.apache.org>.