ONOS-3530 Fix array out of bounds in case of no @param value description

Change-Id: I336a7645547f844e11ab08cc3cf9f403fa42d890
diff --git a/pom.xml b/pom.xml
index c72a459..9d6de58 100644
--- a/pom.xml
+++ b/pom.xml
@@ -54,6 +54,7 @@
 
         <module>tools/package/archetypes</module>
         <module>tools/package/branding</module>
+        <module>tools/package/maven-plugin</module>
     </modules>
 
     <url>http://onosproject.org/</url>
@@ -79,6 +80,7 @@
         <copycat.version>0.5.0.onos</copycat.version>
         <!-- FIXME update to release version before Emu release -->
         <openflowj.version>0.9.2.onos-SNAPSHOT</openflowj.version>
+        <onos-maven-plugin.version>1.7-SNAPSHOT</onos-maven-plugin.version>
         <karaf.version>3.0.3</karaf.version>
         <jersey.version>1.19</jersey.version>
     </properties>
@@ -654,7 +656,7 @@
                 <plugin>
                     <groupId>org.onosproject</groupId>
                     <artifactId>onos-maven-plugin</artifactId>
-                    <version>1.6</version>
+                    <version>${onos-maven-plugin.version}</version>
                     <executions>
                         <execution>
                             <id>cfg</id>
diff --git a/tools/package/maven-plugin/src/main/java/org/onosproject/maven/OnosSwaggerMojo.java b/tools/package/maven-plugin/src/main/java/org/onosproject/maven/OnosSwaggerMojo.java
index a98557d..314d61c 100644
--- a/tools/package/maven-plugin/src/main/java/org/onosproject/maven/OnosSwaggerMojo.java
+++ b/tools/package/maven-plugin/src/main/java/org/onosproject/maven/OnosSwaggerMojo.java
@@ -293,7 +293,7 @@
                                                    + param + ".json");
                     String lines = Files.readLines(config, Charsets.UTF_8).stream().reduce((t, u) -> t + u).
                             get();
-                    lines = lines.replaceAll("\\s+","");
+                    lines = lines.replaceAll("\\s+", "");
                     definitions.putPOJO(param, lines);
                 } catch (IOException e) {
                     e.printStackTrace();
@@ -352,7 +352,7 @@
     private String getIOType(JavaAnnotation annotation) {
         if (annotation.getNamedParameter("value").toString().equals(JSON)) {
             return "application/json";
-        } else if (annotation.getNamedParameter("value").toString().equals(OCTET_STREAM)){
+        } else if (annotation.getNamedParameter("value").toString().equals(OCTET_STREAM)) {
             return "application/octet_stream";
         }
         return "";
@@ -408,15 +408,21 @@
             }
             for (DocletTag p : javaMethod.getTagsByName("param")) {
                 if (p.getValue().contains(annotationName)) {
-                    try {
-                        String description = p.getValue().split(" ", 2)[1].trim();
+                    String description = "";
+                    if (p.getValue().split(" ", 2).length >= 2) {
+                        description = p.getValue().split(" ", 2)[1].trim();
                         if (description.contains("optional")) {
                             required = false;
                         }
-                        individualParameterNode.put("description", description);
-                    } catch (Exception e) {
-                        e.printStackTrace();
+                    } else {
+                        getLog().warn(String.format(
+                                    "No description for parameter \"%s\" in " +
+                                    "method \"%s\" in %s (line %d)",
+                                      p.getValue(), javaMethod.getName(),
+                                      javaMethod.getDeclaringClass().getName(),
+                                      javaMethod.getLineNumber()));
                     }
+                    individualParameterNode.put("description", description);
                 }
             }
             individualParameterNode.put("required", required);