Andrea Campanella
Committed by Gerrit Code Review

ONOS-3607 Add Criteria model for Flows REST Api with field description.

Change Model parsing in Swagger mojo for whitspaces stripping.

Also, readding onos-maven-plugin to root pom build temporarily.

Change-Id: I8995c74d762a3e59acebe15cc600a0f1bfa41411
......@@ -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>
......@@ -78,7 +79,7 @@
<netty4.version>4.0.23.Final</netty4.version>
<copycat.version>0.5.1.onos</copycat.version>
<openflowj.version>0.9.1.onos</openflowj.version>
<onos-maven-plugin.version>1.7</onos-maven-plugin.version>
<onos-maven-plugin.version>1.8-SNAPSHOT</onos-maven-plugin.version>
<karaf.version>3.0.3</karaf.version>
<jersey.version>1.19</jersey.version>
<!-- TODO argLine was originally added maven-surfire-plugin configuration
......
......@@ -91,6 +91,11 @@
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.5</version>
</dependency>
</dependencies>
<build>
......
......@@ -18,9 +18,9 @@ package org.onosproject.maven;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.google.common.base.Charsets;
import com.google.common.io.ByteStreams;
import com.google.common.io.Files;
import com.google.gson.JsonParser;
import com.thoughtworks.qdox.JavaProjectBuilder;
import com.thoughtworks.qdox.model.DocletTag;
import com.thoughtworks.qdox.model.JavaAnnotation;
......@@ -36,6 +36,7 @@ import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.project.MavenProject;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
......@@ -51,6 +52,7 @@ import static com.google.common.base.Strings.isNullOrEmpty;
@Mojo(name = "swagger", defaultPhase = LifecyclePhase.GENERATE_SOURCES)
public class OnosSwaggerMojo extends AbstractMojo {
private final ObjectMapper mapper = new ObjectMapper();
private final JsonParser jsonParser = new JsonParser();
private static final String JSON_FILE = "swagger.json";
private static final String GEN_SRC = "generated-sources";
......@@ -291,10 +293,7 @@ public class OnosSwaggerMojo extends AbstractMojo {
try {
File config = new File(definitionsDirectory.getAbsolutePath() + "/"
+ param + ".json");
String lines = Files.readLines(config, Charsets.UTF_8).stream().reduce((t, u) -> t + u).
get();
lines = lines.replaceAll("\\s+", "");
definitions.putPOJO(param, lines);
definitions.putPOJO(param, jsonParser.parse(new FileReader(config)));
} catch (IOException e) {
e.printStackTrace();
}
......
......@@ -155,19 +155,214 @@
"items": {
"type": "object",
"title": "criteria",
"required": [
"type",
"ethType"
],
"properties": {
"type": {
"type": "string",
"description":"Ethernet field name",
"example": "ETH_TYPE"
},
"ethType": {
"type": "int64",
"format": "int64",
"example": "0x88cc",
"description":"Ethernet frame type"
},
"mac": {
"type": "string",
"example": "00:00:11:00:00:01"
},
"port": {
"type": "int64",
"format": "int64",
"example": 1,
"description":"Match port"
},
"metadata": {
"type": "Hex16",
"format": "Hex16",
"example": "0xabcdL",
"description":"Metadata passed between tables"
},
"vlanId": {
"type": "uint16",
"format": "uint16",
"example": "0x1000"
},
"priority": {
"type": "int64",
"format": "int64",
"example": 1,
"description":"VLAN priority."
},
"ipDscp": {
"type": "byte",
"format": "byte",
"description":"IP DSCP (6 bits in ToS field)"
},
"ipEcn": {
"type": "byte",
"format": "byte",
"description":"IP ECN (2 bits in ToS field)."
},
"protocol": {
"type": "uint16",
"format": "uint16",
"example": 1,
"description":"IP protocol"
},
"ip": {
"type": "string",
"example": "10.1.1.0/24",
"description":"IP source address"
},
"tcpPort": {
"type": "integer",
"format": "uint16",
"example": 1,
"description":"TCP source address"
},
"udpPort": {
"type": "uint16",
"format": "uint16",
"example": 1,
"description":"UDP source address"
},
"sctpPort": {
"type": "uint16",
"format": "uint16",
"example": 1,
"description":"SCTP source address"
},
"icmpType": {
"type": "uint16",
"format": "uint16",
"example": 1,
"description":"Internet Control Message Protocol for IPV4 code (RFC0792)"
},
"icmpCode": {
"type": "uint16",
"format": "uint16",
"example": 1,
"description":"Internet Control Message Protocol for IPV4 code (RFC0792)"
},
"flowLabel": {
"type": "Hex16",
"format": "Hex16",
"example": "0xffffe",
"description":"IPv6 Flow Label (RFC 6437)"
},
"icmpv6Type": {
"type": "uint16",
"format": "uint16",
"example": 1,
"description":"Internet Control Message Protocol for IPV6 type (RFC2463)"
},
"icmpv6Code": {
"type": "uint16",
"format": "uint16",
"example": 1,
"description":"Internet Control Message Protocol for IPV6 code (RFC2463)"
},
"targetAddress": {
"type": "String",
"example": "10.1.1.0/24",
"description":"IPv6 Neighbor discovery target address"
},
"label": {
"type": "int32",
"format": "int32",
"example": 1,
"description":"MPLS label"
},
"exthdrFlags": {
"type": "int64",
"format": "int64",
"example": 1,
"description":"IPv6 extension header pseudo-field"
},
"lambda": {
"type": "int64",
"format": "int64",
"example": 1,
"description":"wavelength abstraction"
},
"gridType": {
"type": "String",
"example": "DWDM",
"description":"Type of wavelength grid"
},
"channelSpacing": {
"type": "int64",
"format": "int64",
"example": 100,
"description":"Optical channel spacing"
},
"spacingMultiplier": {
"type": "integer",
"format": "int64",
"example": 4,
"description":"Optical channel spacing multiplier"
},
"slotGranularity": {
"type": "int64",
"format": "int64",
"example": 8
},
"ochSignalId": {
"type": "integer",
"format": "int64",
"example": "0x88cc"
"example": 1,
"description":"Optical channel signal ID"
},
"tunnelId": {
"type": "int64",
"format": "int64",
"example": 5,
"description":"Tunnel ID"
},
"ochSignalType": {
"type": "int64",
"format": "int64",
"example": 1,
"description":"Optical channel signal type"
},
"oduSignalId": {
"type": "int64",
"format": "int64",
"example": 1,
"description":"ODU (Optical channel Data Unit) signal ID."
},
"tributaryPortNumber": {
"type": "int64",
"format": "int64",
"example": 11,
"description":"OPU (Optical channel Payload Unit) port number."
},
"tributarySlotLen": {
"type": "int64",
"format": "int64",
"example": 80,
"description":"OPU (Optical channel Payload Unit) slot length."
},
"tributarySlotBitmap": {
"type": "array",
"title": "tributarySlotBitmap",
"description":"OPU (Optical channel Payload Unit) slot bitmap.",
"required": [
"byte",
"port"
],
"items": {
"type": "byte",
"title": "byte",
"example": 1
}
},
"oduSignalType": {
"type": "int64",
"format": "int64",
"example": 4,
"description":"ODU (Optical channel Data Unit) signal type."
}
}
}
......
......@@ -78,19 +78,214 @@
"items": {
"type": "object",
"title": "criteria",
"required": [
"type",
"ethType"
],
"properties": {
"type": {
"type": "string",
"description":"Ethernet field name",
"example": "ETH_TYPE"
},
"ethType": {
"type": "int64",
"format": "int64",
"example": "0x88cc",
"description":"Ethernet frame type"
},
"mac": {
"type": "string",
"example": "00:00:11:00:00:01"
},
"port": {
"type": "int64",
"format": "int64",
"example": 1,
"description":"Match port"
},
"metadata": {
"type": "Hex16",
"format": "Hex16",
"example": "0xabcdL",
"description":"Metadata passed between tables"
},
"vlanId": {
"type": "uint16",
"format": "uint16",
"example": "0x1000"
},
"priority": {
"type": "int64",
"format": "int64",
"example": 1,
"description":"VLAN priority."
},
"ipDscp": {
"type": "byte",
"format": "byte",
"description":"IP DSCP (6 bits in ToS field)"
},
"ipEcn": {
"type": "byte",
"format": "byte",
"description":"IP ECN (2 bits in ToS field)."
},
"protocol": {
"type": "uint16",
"format": "uint16",
"example": 1,
"description":"IP protocol"
},
"ip": {
"type": "string",
"example": "10.1.1.0/24",
"description":"IP source address"
},
"tcpPort": {
"type": "integer",
"format": "uint16",
"example": 1,
"description":"TCP source address"
},
"udpPort": {
"type": "uint16",
"format": "uint16",
"example": 1,
"description":"UDP source address"
},
"sctpPort": {
"type": "uint16",
"format": "uint16",
"example": 1,
"description":"SCTP source address"
},
"icmpType": {
"type": "uint16",
"format": "uint16",
"example": 1,
"description":"Internet Control Message Protocol for IPV4 code (RFC0792)"
},
"icmpCode": {
"type": "uint16",
"format": "uint16",
"example": 1,
"description":"Internet Control Message Protocol for IPV4 code (RFC0792)"
},
"flowLabel": {
"type": "Hex16",
"format": "Hex16",
"example": "0xffffe",
"description":"IPv6 Flow Label (RFC 6437)"
},
"icmpv6Type": {
"type": "uint16",
"format": "uint16",
"example": 1,
"description":"Internet Control Message Protocol for IPV6 type (RFC2463)"
},
"icmpv6Code": {
"type": "uint16",
"format": "uint16",
"example": 1,
"description":"Internet Control Message Protocol for IPV6 code (RFC2463)"
},
"targetAddress": {
"type": "String",
"example": "10.1.1.0/24",
"description":"IPv6 Neighbor discovery target address"
},
"label": {
"type": "int32",
"format": "int32",
"example": 1,
"description":"MPLS label"
},
"exthdrFlags": {
"type": "int64",
"format": "int64",
"example": 1,
"description":"IPv6 extension header pseudo-field"
},
"lambda": {
"type": "int64",
"format": "int64",
"example": 1,
"description":"wavelength abstraction"
},
"gridType": {
"type": "String",
"example": "DWDM",
"description":"Type of wavelength grid"
},
"channelSpacing": {
"type": "int64",
"format": "int64",
"example": 100,
"description":"Optical channel spacing"
},
"spacingMultiplier": {
"type": "integer",
"format": "int64",
"example": 4,
"description":"Optical channel spacing multiplier"
},
"slotGranularity": {
"type": "int64",
"format": "int64",
"example": 8
},
"ochSignalId": {
"type": "integer",
"format": "int64",
"example": "0x88cc"
"example": 1,
"description":"Optical channel signal ID"
},
"tunnelId": {
"type": "int64",
"format": "int64",
"example": 5,
"description":"Tunnel ID"
},
"ochSignalType": {
"type": "int64",
"format": "int64",
"example": 1,
"description":"Optical channel signal type"
},
"oduSignalId": {
"type": "int64",
"format": "int64",
"example": 1,
"description":"ODU (Optical channel Data Unit) signal ID."
},
"tributaryPortNumber": {
"type": "int64",
"format": "int64",
"example": 11,
"description":"OPU (Optical channel Payload Unit) port number."
},
"tributarySlotLen": {
"type": "int64",
"format": "int64",
"example": 80,
"description":"OPU (Optical channel Payload Unit) slot length."
},
"tributarySlotBitmap": {
"type": "array",
"title": "tributarySlotBitmap",
"description":"OPU (Optical channel Payload Unit) slot bitmap.",
"required": [
"byte",
"port"
],
"items": {
"type": "byte",
"title": "byte",
"example": 1
}
},
"oduSignalType": {
"type": "int64",
"format": "int64",
"example": 4,
"description":"ODU (Optical channel Data Unit) signal type."
}
}
}
......