ONOS-743 - Use REST API Codecs to generate JSON for CLI commands
Change-Id: I25e0840d1af03341c638f837498c95275e6cf31b
diff --git a/core/api/src/main/java/org/onosproject/codec/CodecContext.java b/core/api/src/main/java/org/onosproject/codec/CodecContext.java
index ee00fa9..272c3e9 100644
--- a/core/api/src/main/java/org/onosproject/codec/CodecContext.java
+++ b/core/api/src/main/java/org/onosproject/codec/CodecContext.java
@@ -45,6 +45,6 @@
* @param <T> service type
* @return JSON codec; null if no codec available for the class
*/
- <T> T get(Class<T> serviceClass);
+ <T> T getService(Class<T> serviceClass);
}
diff --git a/core/api/src/main/java/org/onosproject/rest/AbstractWebResource.java b/core/api/src/main/java/org/onosproject/rest/AbstractWebResource.java
index ff53182..82caf08 100644
--- a/core/api/src/main/java/org/onosproject/rest/AbstractWebResource.java
+++ b/core/api/src/main/java/org/onosproject/rest/AbstractWebResource.java
@@ -60,4 +60,9 @@
return result;
}
+ @Override
+ public <T> T getService(Class<T> serviceClass) {
+ return get(serviceClass);
+ }
+
}
diff --git a/core/api/src/test/java/org/onosproject/codec/JsonCodecTest.java b/core/api/src/test/java/org/onosproject/codec/JsonCodecTest.java
index ebe5f8e..eb04d9a 100644
--- a/core/api/src/test/java/org/onosproject/codec/JsonCodecTest.java
+++ b/core/api/src/test/java/org/onosproject/codec/JsonCodecTest.java
@@ -92,7 +92,7 @@
}
@Override
- public <T> T get(Class<T> serviceClass) {
+ public <T> T getService(Class<T> serviceClass) {
return null;
}
}
diff --git a/core/common/src/main/java/org/onosproject/codec/impl/ApplicationCodec.java b/core/common/src/main/java/org/onosproject/codec/impl/ApplicationCodec.java
index 4812154..b2cab09 100644
--- a/core/common/src/main/java/org/onosproject/codec/impl/ApplicationCodec.java
+++ b/core/common/src/main/java/org/onosproject/codec/impl/ApplicationCodec.java
@@ -31,7 +31,7 @@
@Override
public ObjectNode encode(Application app, CodecContext context) {
checkNotNull(app, "Application cannot be null");
- ApplicationService service = context.get(ApplicationService.class);
+ ApplicationService service = context.getService(ApplicationService.class);
ObjectNode result = context.mapper().createObjectNode()
.put("name", app.id().name())
.put("id", app.id().id())
diff --git a/core/common/src/main/java/org/onosproject/codec/impl/ControllerNodeCodec.java b/core/common/src/main/java/org/onosproject/codec/impl/ControllerNodeCodec.java
index 4b06ff0..65d758e 100644
--- a/core/common/src/main/java/org/onosproject/codec/impl/ControllerNodeCodec.java
+++ b/core/common/src/main/java/org/onosproject/codec/impl/ControllerNodeCodec.java
@@ -35,7 +35,7 @@
@Override
public ObjectNode encode(ControllerNode node, CodecContext context) {
checkNotNull(node, "Controller node cannot be null");
- ClusterService service = context.get(ClusterService.class);
+ ClusterService service = context.getService(ClusterService.class);
return context.mapper().createObjectNode()
.put("id", node.id().toString())
.put("ip", node.ip().toString())
diff --git a/core/common/src/main/java/org/onosproject/codec/impl/CriterionCodec.java b/core/common/src/main/java/org/onosproject/codec/impl/CriterionCodec.java
index 899ade5..3526f23 100644
--- a/core/common/src/main/java/org/onosproject/codec/impl/CriterionCodec.java
+++ b/core/common/src/main/java/org/onosproject/codec/impl/CriterionCodec.java
@@ -117,19 +117,19 @@
}
private interface CriterionTypeFormatter {
- ObjectNode formatCriterion(ObjectNode root, Criterion criterion);
+ ObjectNode encodeCriterion(ObjectNode root, Criterion criterion);
}
private static class FormatUnknown implements CriterionTypeFormatter {
@Override
- public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
+ public ObjectNode encodeCriterion(ObjectNode root, Criterion criterion) {
return root;
}
}
private static class FormatInPort implements CriterionTypeFormatter {
@Override
- public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
+ public ObjectNode encodeCriterion(ObjectNode root, Criterion criterion) {
final PortCriterion portCriterion = (PortCriterion) criterion;
return root.put("port", portCriterion.port().toLong());
}
@@ -137,7 +137,7 @@
private static class FormatMetadata implements CriterionTypeFormatter {
@Override
- public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
+ public ObjectNode encodeCriterion(ObjectNode root, Criterion criterion) {
final MetadataCriterion metadataCriterion =
(MetadataCriterion) criterion;
return root.put("metadata", metadataCriterion.metadata());
@@ -146,7 +146,7 @@
private static class FormatEth implements CriterionTypeFormatter {
@Override
- public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
+ public ObjectNode encodeCriterion(ObjectNode root, Criterion criterion) {
final EthCriterion ethCriterion = (EthCriterion) criterion;
return root.put("mac", ethCriterion.mac().toString());
}
@@ -154,7 +154,7 @@
private static class FormatEthType implements CriterionTypeFormatter {
@Override
- public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
+ public ObjectNode encodeCriterion(ObjectNode root, Criterion criterion) {
final EthTypeCriterion ethTypeCriterion =
(EthTypeCriterion) criterion;
return root.put("ethType", ethTypeCriterion.ethType());
@@ -163,7 +163,7 @@
private static class FormatVlanVid implements CriterionTypeFormatter {
@Override
- public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
+ public ObjectNode encodeCriterion(ObjectNode root, Criterion criterion) {
final VlanIdCriterion vlanIdCriterion =
(VlanIdCriterion) criterion;
return root.put("vlanId", vlanIdCriterion.vlanId().toShort());
@@ -172,7 +172,7 @@
private static class FormatVlanPcp implements CriterionTypeFormatter {
@Override
- public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
+ public ObjectNode encodeCriterion(ObjectNode root, Criterion criterion) {
final VlanPcpCriterion vlanPcpCriterion =
(VlanPcpCriterion) criterion;
return root.put("priority", vlanPcpCriterion.priority());
@@ -181,7 +181,7 @@
private static class FormatIpDscp implements CriterionTypeFormatter {
@Override
- public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
+ public ObjectNode encodeCriterion(ObjectNode root, Criterion criterion) {
final IPDscpCriterion ipDscpCriterion =
(IPDscpCriterion) criterion;
return root.put("ipDscp", ipDscpCriterion.ipDscp());
@@ -190,7 +190,7 @@
private static class FormatIpEcn implements CriterionTypeFormatter {
@Override
- public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
+ public ObjectNode encodeCriterion(ObjectNode root, Criterion criterion) {
final IPEcnCriterion ipEcnCriterion =
(IPEcnCriterion) criterion;
return root.put("ipEcn", ipEcnCriterion.ipEcn());
@@ -199,7 +199,7 @@
private static class FormatIpProto implements CriterionTypeFormatter {
@Override
- public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
+ public ObjectNode encodeCriterion(ObjectNode root, Criterion criterion) {
final IPProtocolCriterion iPProtocolCriterion =
(IPProtocolCriterion) criterion;
return root.put("protocol", iPProtocolCriterion.protocol());
@@ -208,7 +208,7 @@
private static class FormatIp implements CriterionTypeFormatter {
@Override
- public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
+ public ObjectNode encodeCriterion(ObjectNode root, Criterion criterion) {
final IPCriterion iPCriterion = (IPCriterion) criterion;
return root.put("ip", iPCriterion.ip().toString());
}
@@ -216,7 +216,7 @@
private static class FormatTcp implements CriterionTypeFormatter {
@Override
- public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
+ public ObjectNode encodeCriterion(ObjectNode root, Criterion criterion) {
final TcpPortCriterion tcpPortCriterion =
(TcpPortCriterion) criterion;
return root.put("tcpPort", tcpPortCriterion.tcpPort());
@@ -225,7 +225,7 @@
private static class FormatUdp implements CriterionTypeFormatter {
@Override
- public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
+ public ObjectNode encodeCriterion(ObjectNode root, Criterion criterion) {
final UdpPortCriterion udpPortCriterion =
(UdpPortCriterion) criterion;
return root.put("udpPort", udpPortCriterion.udpPort());
@@ -234,7 +234,7 @@
private static class FormatSctp implements CriterionTypeFormatter {
@Override
- public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
+ public ObjectNode encodeCriterion(ObjectNode root, Criterion criterion) {
final SctpPortCriterion sctpPortCriterion =
(SctpPortCriterion) criterion;
return root.put("sctpPort", sctpPortCriterion.sctpPort());
@@ -243,7 +243,7 @@
private static class FormatIcmpV4Type implements CriterionTypeFormatter {
@Override
- public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
+ public ObjectNode encodeCriterion(ObjectNode root, Criterion criterion) {
final IcmpTypeCriterion icmpTypeCriterion =
(IcmpTypeCriterion) criterion;
return root.put("icmpType", icmpTypeCriterion.icmpType());
@@ -252,7 +252,7 @@
private static class FormatIcmpV4Code implements CriterionTypeFormatter {
@Override
- public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
+ public ObjectNode encodeCriterion(ObjectNode root, Criterion criterion) {
final IcmpCodeCriterion icmpCodeCriterion =
(IcmpCodeCriterion) criterion;
return root.put("icmpCode", icmpCodeCriterion.icmpCode());
@@ -261,7 +261,7 @@
private static class FormatIpV6FLabel implements CriterionTypeFormatter {
@Override
- public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
+ public ObjectNode encodeCriterion(ObjectNode root, Criterion criterion) {
final IPv6FlowLabelCriterion ipv6FlowLabelCriterion =
(IPv6FlowLabelCriterion) criterion;
return root.put("flowLabel", ipv6FlowLabelCriterion.flowLabel());
@@ -270,7 +270,7 @@
private static class FormatIcmpV6Type implements CriterionTypeFormatter {
@Override
- public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
+ public ObjectNode encodeCriterion(ObjectNode root, Criterion criterion) {
final Icmpv6TypeCriterion icmpv6TypeCriterion =
(Icmpv6TypeCriterion) criterion;
return root.put("icmpv6Type", icmpv6TypeCriterion.icmpv6Type());
@@ -279,7 +279,7 @@
private static class FormatIcmpV6Code implements CriterionTypeFormatter {
@Override
- public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
+ public ObjectNode encodeCriterion(ObjectNode root, Criterion criterion) {
final Icmpv6CodeCriterion icmpv6CodeCriterion =
(Icmpv6CodeCriterion) criterion;
return root.put("icmpv6Code", icmpv6CodeCriterion.icmpv6Code());
@@ -288,7 +288,7 @@
private static class FormatV6NDTarget implements CriterionTypeFormatter {
@Override
- public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
+ public ObjectNode encodeCriterion(ObjectNode root, Criterion criterion) {
final IPv6NDTargetAddressCriterion ipv6NDTargetAddressCriterion
= (IPv6NDTargetAddressCriterion) criterion;
return root.put("targetAddress", ipv6NDTargetAddressCriterion.targetAddress().toString());
@@ -297,7 +297,7 @@
private static class FormatV6NDTll implements CriterionTypeFormatter {
@Override
- public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
+ public ObjectNode encodeCriterion(ObjectNode root, Criterion criterion) {
final IPv6NDLinkLayerAddressCriterion ipv6NDLinkLayerAddressCriterion
= (IPv6NDLinkLayerAddressCriterion) criterion;
return root.put("mac", ipv6NDLinkLayerAddressCriterion.mac().toString());
@@ -306,7 +306,7 @@
private static class FormatMplsLabel implements CriterionTypeFormatter {
@Override
- public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
+ public ObjectNode encodeCriterion(ObjectNode root, Criterion criterion) {
final MplsCriterion mplsCriterion =
(MplsCriterion) criterion;
return root.put("label", mplsCriterion.label().toInt());
@@ -315,7 +315,7 @@
private static class FormatIpV6Exthdr implements CriterionTypeFormatter {
@Override
- public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
+ public ObjectNode encodeCriterion(ObjectNode root, Criterion criterion) {
final IPv6ExthdrFlagsCriterion exthdrCriterion =
(IPv6ExthdrFlagsCriterion) criterion;
return root.put("exthdrFlags", exthdrCriterion.exthdrFlags());
@@ -324,7 +324,7 @@
private static class FormatOchSigId implements CriterionTypeFormatter {
@Override
- public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
+ public ObjectNode encodeCriterion(ObjectNode root, Criterion criterion) {
final LambdaCriterion lambdaCriterion =
(LambdaCriterion) criterion;
return root.put("lambda", lambdaCriterion.lambda());
@@ -333,7 +333,7 @@
private static class FormatOchSigType implements CriterionTypeFormatter {
@Override
- public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
+ public ObjectNode encodeCriterion(ObjectNode root, Criterion criterion) {
final OpticalSignalTypeCriterion opticalSignalTypeCriterion =
(OpticalSignalTypeCriterion) criterion;
return root.put("signalType", opticalSignalTypeCriterion.signalType());
@@ -343,7 +343,7 @@
private class FormatDummyType implements CriterionTypeFormatter {
@Override
- public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
+ public ObjectNode encodeCriterion(ObjectNode root, Criterion criterion) {
checkNotNull(criterion, "Criterion cannot be null");
return root.put("type", criterion.type().toString());
@@ -364,7 +364,7 @@
"No formatter found for criterion type "
+ criterion.type().toString());
- return formatter.formatCriterion(result, criterion);
+ return formatter.encodeCriterion(result, criterion);
}
diff --git a/core/common/src/main/java/org/onosproject/codec/impl/DeviceCodec.java b/core/common/src/main/java/org/onosproject/codec/impl/DeviceCodec.java
index 7f78756..f1a4f78 100644
--- a/core/common/src/main/java/org/onosproject/codec/impl/DeviceCodec.java
+++ b/core/common/src/main/java/org/onosproject/codec/impl/DeviceCodec.java
@@ -48,7 +48,7 @@
@Override
public ObjectNode encode(Device device, CodecContext context) {
checkNotNull(device, "Device cannot be null");
- DeviceService service = context.get(DeviceService.class);
+ DeviceService service = context.getService(DeviceService.class);
ObjectNode result = context.mapper().createObjectNode()
.put(ID, device.id().toString())
.put(TYPE, device.type().name())
diff --git a/core/common/src/main/java/org/onosproject/codec/impl/LinkCodec.java b/core/common/src/main/java/org/onosproject/codec/impl/LinkCodec.java
index 65fcb80..491d751 100644
--- a/core/common/src/main/java/org/onosproject/codec/impl/LinkCodec.java
+++ b/core/common/src/main/java/org/onosproject/codec/impl/LinkCodec.java
@@ -37,6 +37,7 @@
private static final String SRC = "src";
private static final String DST = "dst";
private static final String TYPE = "type";
+ private static final String STATE = "state";
@Override
public ObjectNode encode(Link link, CodecContext context) {
@@ -46,6 +47,9 @@
result.set(SRC, codec.encode(link.src(), context));
result.set(DST, codec.encode(link.dst(), context));
result.put(TYPE, link.type().toString());
+ if (link.state() != null) {
+ result.put(STATE, link.state().toString());
+ }
return annotate(result, link, context);
}
diff --git a/core/common/src/test/java/org/onosproject/codec/impl/MockCodecContext.java b/core/common/src/test/java/org/onosproject/codec/impl/MockCodecContext.java
index 4c869c1..6a9b670 100644
--- a/core/common/src/test/java/org/onosproject/codec/impl/MockCodecContext.java
+++ b/core/common/src/test/java/org/onosproject/codec/impl/MockCodecContext.java
@@ -52,7 +52,7 @@
@SuppressWarnings("unchecked")
@Override
- public <T> T get(Class<T> serviceClass) {
+ public <T> T getService(Class<T> serviceClass) {
return (T) services.get(serviceClass);
}