Api docs: api list sorted in natural order 24/7824/1
authorMarek Gradzki <[email protected]>
Thu, 27 Jul 2017 07:04:16 +0000 (09:04 +0200)
committerMarek Gradzki <[email protected]>
Thu, 27 Jul 2017 21:43:38 +0000 (23:43 +0200)
Change-Id: Ide2316c50ee144055eab2499fd241ca1ea354066
Signed-off-by: Marek Gradzki <[email protected]>
vpp-integration/api-docs/api/pom.xml
vpp-integration/api-docs/api/src/main/java/io/fd/hc2vpp/docs/api/CoverageUnit.java
vpp-integration/api-docs/api/src/main/java/io/fd/hc2vpp/docs/api/VppApiMessage.java
vpp-integration/api-docs/scripts/src/main/groovy/io/fd/hc2vpp/docs/scripts/ApiDocsIndexGenerator.groovy

index 78361fd..52c24ea 100644 (file)
         <relativePath>../../../common/hc2vpp-parent</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
+    <dependencies>
+        <dependency>
+            <groupId>com.google.code.findbugs</groupId>
+            <artifactId>jsr305</artifactId>
+            <version>3.0.0</version>
+        </dependency>
+    </dependencies>
 
     <properties>
         <sonar.skip>true</sonar.skip>
index e04d283..5c82471 100644 (file)
 
 package io.fd.hc2vpp.docs.api;
 
+import static java.util.Objects.requireNonNull;
+
 import java.util.Collection;
 import java.util.List;
 import java.util.Objects;
 import java.util.Set;
+import javax.annotation.Nonnull;
 
 /**
  * Represents mapping between single supported VPP binary api and its binding
  */
-public class CoverageUnit {
+public class CoverageUnit implements Comparable<CoverageUnit> {
 
     /**
      * VPP binary api reference
@@ -46,13 +49,13 @@ public class CoverageUnit {
      */
     private final Collection<Operation> supportedOperations;
 
-    private CoverageUnit(final VppApiMessage vppApi, final JavaApiMessage javaApi,
-                         final List<YangType> yangTypes,
-                         final Collection<Operation> supportedOperations) {
-        this.vppApi = vppApi;
-        this.javaApi = javaApi;
-        this.yangTypes = yangTypes;
-        this.supportedOperations = supportedOperations;
+    private CoverageUnit(@Nonnull final VppApiMessage vppApi, @Nonnull final JavaApiMessage javaApi,
+                         @Nonnull final List<YangType> yangTypes,
+                         @Nonnull final Collection<Operation> supportedOperations) {
+        this.vppApi = requireNonNull(vppApi, "vppApi should not be null");
+        this.javaApi = requireNonNull(javaApi, "javaApi should not be null");
+        this.yangTypes = requireNonNull(yangTypes, "yangTypes should not be null");
+        this.supportedOperations = requireNonNull(supportedOperations, "supportedOperations should not be null");
     }
 
     public VppApiMessage getVppApi() {
@@ -93,6 +96,11 @@ public class CoverageUnit {
         return Objects.hash(vppApi, javaApi, yangTypes, supportedOperations);
     }
 
+    @Override
+    public int compareTo(final CoverageUnit o) {
+        return vppApi.getName().compareTo(o.getVppApi().getName());
+    }
+
     public static class CoverageUnitBuilder {
         private VppApiMessage vppApi;
         private JavaApiMessage javaApi;
index 7801047..5be7432 100644 (file)
 
 package io.fd.hc2vpp.docs.api;
 
+import static java.util.Objects.requireNonNull;
+
 import java.util.Objects;
+import javax.annotation.Nonnull;
 
 /**
  * Represents reference to VPP binary api
@@ -34,9 +37,9 @@ public class VppApiMessage {
     // TODO - check if possible to add direct link for specific api
     private final String link;
 
-    public VppApiMessage(final String name, final String link) {
-        this.name = name;
-        this.link = link;
+    public VppApiMessage(@Nonnull final String name, @Nonnull final String link) {
+        this.name = requireNonNull(name, "name should not be null");
+        this.link = requireNonNull(link, "link should not be null");
     }
 
     public String getName() {
index ae6ebc6..de15d7b 100644 (file)
@@ -123,7 +123,7 @@ class ApiDocsIndexGenerator {
     }
 
     private static String generateConfigTableContent(final Set<CoverageUnit> coverage) {
-        coverage.stream()
+        coverage.stream().sorted()
                 .map { unit ->
             "$NL" +
                     "${vppApiWithLink(unit.vppApi)}" +