From 2cfe8ef782a45f4b9be720c321658d29790e9764 Mon Sep 17 00:00:00 2001 From: Andrea Campanella Date: Thu, 13 Jul 2017 19:45:15 +0200 Subject: [PATCH] Moving Extensions codecs to net/flow to avoid circular dependencies Change-Id: I93dc5580ff46f57afe93dd4d1f0217359d5c89c2 --- .../codec/ExtensionSelectorCodec.java | 2 + .../codec/ExtensionTreatmentCodec.java | 2 + .../net/flow/ExtensionSelectorCodec.java | 49 +++++++++++++++++++ .../net/flow/ExtensionTreatmentCodec.java | 49 +++++++++++++++++++ .../impl/DecodeInstructionCodecHelper.java | 2 +- .../impl/EncodeInstructionCodecHelper.java | 2 +- .../src/main/resources/onos-drivers.xml | 4 +- .../OplinkExtensionTreatmentCodec.java | 2 +- .../src/main/resources/optical-drivers.xml | 2 +- .../ExtensionSelectorInterpreter.java | 2 +- .../ExtensionTreatmentInterpreter.java | 2 +- 11 files changed, 110 insertions(+), 8 deletions(-) create mode 100644 core/api/src/main/java/org/onosproject/net/flow/ExtensionSelectorCodec.java create mode 100644 core/api/src/main/java/org/onosproject/net/flow/ExtensionTreatmentCodec.java diff --git a/core/api/src/main/java/org/onosproject/codec/ExtensionSelectorCodec.java b/core/api/src/main/java/org/onosproject/codec/ExtensionSelectorCodec.java index fc512161f3..b542a444e5 100644 --- a/core/api/src/main/java/org/onosproject/codec/ExtensionSelectorCodec.java +++ b/core/api/src/main/java/org/onosproject/codec/ExtensionSelectorCodec.java @@ -21,7 +21,9 @@ import org.onosproject.net.flow.criteria.ExtensionSelector; /** * Interface for encode and decode extension selector. + * @deprecated 1.11.0 Loon use interface under core/api/net/flow. */ +@Deprecated public interface ExtensionSelectorCodec extends HandlerBehaviour { /** diff --git a/core/api/src/main/java/org/onosproject/codec/ExtensionTreatmentCodec.java b/core/api/src/main/java/org/onosproject/codec/ExtensionTreatmentCodec.java index e33258bea6..f024de54c4 100644 --- a/core/api/src/main/java/org/onosproject/codec/ExtensionTreatmentCodec.java +++ b/core/api/src/main/java/org/onosproject/codec/ExtensionTreatmentCodec.java @@ -21,7 +21,9 @@ import org.onosproject.net.flow.instructions.ExtensionTreatment; /** * Interface for encode and decode extension treatment. + * @deprecated 1.11.0 Loon use interface under core/api/net/flow. */ +@Deprecated public interface ExtensionTreatmentCodec extends HandlerBehaviour { /** diff --git a/core/api/src/main/java/org/onosproject/net/flow/ExtensionSelectorCodec.java b/core/api/src/main/java/org/onosproject/net/flow/ExtensionSelectorCodec.java new file mode 100644 index 0000000000..231e17d0db --- /dev/null +++ b/core/api/src/main/java/org/onosproject/net/flow/ExtensionSelectorCodec.java @@ -0,0 +1,49 @@ +/* + * Copyright 2017-present Open Networking Laboratory + * + * Licensed 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 org.onosproject.net.flow; + +import com.fasterxml.jackson.databind.node.ObjectNode; +import org.onosproject.codec.CodecContext; +import org.onosproject.net.driver.HandlerBehaviour; +import org.onosproject.net.flow.criteria.ExtensionSelector; + +/** + * Interface for encode and decode extension selector. + */ +public interface ExtensionSelectorCodec extends HandlerBehaviour { + + /** + * Encodes an extension selector to an JSON object. + * + * @param extensionSelector extension selector + * @param context encoding context + * @return JSON object + */ + default ObjectNode encode(ExtensionSelector extensionSelector, CodecContext context) { + return null; + } + + /** + * Decodes an JSON object to an extension selector. + * + * @param objectNode JSON object + * @param context decoding context + * @return extension selector + */ + default ExtensionSelector decode(ObjectNode objectNode, CodecContext context) { + return null; + } +} diff --git a/core/api/src/main/java/org/onosproject/net/flow/ExtensionTreatmentCodec.java b/core/api/src/main/java/org/onosproject/net/flow/ExtensionTreatmentCodec.java new file mode 100644 index 0000000000..d984fb4320 --- /dev/null +++ b/core/api/src/main/java/org/onosproject/net/flow/ExtensionTreatmentCodec.java @@ -0,0 +1,49 @@ +/* + * Copyright 2017-present Open Networking Laboratory + * + * Licensed 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 org.onosproject.net.flow; + +import com.fasterxml.jackson.databind.node.ObjectNode; +import org.onosproject.codec.CodecContext; +import org.onosproject.net.driver.HandlerBehaviour; +import org.onosproject.net.flow.instructions.ExtensionTreatment; + +/** + * Interface for encode and decode extension treatment. + */ +public interface ExtensionTreatmentCodec extends HandlerBehaviour { + + /** + * Encodes an extension treatment to an JSON object. + * + * @param extensionTreatment extension treatment + * @param context encoding context + * @return JSON object + */ + default ObjectNode encode(ExtensionTreatment extensionTreatment, CodecContext context) { + return null; + } + + /** + * Decodes an JSON object to an extension treatment. + * + * @param objectNode JSON object + * @param context decoding context + * @return extension treatment + */ + default ExtensionTreatment decode(ObjectNode objectNode, CodecContext context) { + return null; + } +} diff --git a/core/common/src/main/java/org/onosproject/codec/impl/DecodeInstructionCodecHelper.java b/core/common/src/main/java/org/onosproject/codec/impl/DecodeInstructionCodecHelper.java index 94fc97cd5b..9851d4c59e 100644 --- a/core/common/src/main/java/org/onosproject/codec/impl/DecodeInstructionCodecHelper.java +++ b/core/common/src/main/java/org/onosproject/codec/impl/DecodeInstructionCodecHelper.java @@ -27,7 +27,7 @@ import org.onlab.packet.TpPort; import org.onlab.packet.VlanId; import org.onlab.util.HexString; import org.onosproject.codec.CodecContext; -import org.onosproject.codec.ExtensionTreatmentCodec; +import org.onosproject.net.flow.ExtensionTreatmentCodec; import org.onosproject.core.GroupId; import org.onosproject.net.ChannelSpacing; import org.onosproject.net.Device; diff --git a/core/common/src/main/java/org/onosproject/codec/impl/EncodeInstructionCodecHelper.java b/core/common/src/main/java/org/onosproject/codec/impl/EncodeInstructionCodecHelper.java index 2727223493..8f5fc74e2b 100644 --- a/core/common/src/main/java/org/onosproject/codec/impl/EncodeInstructionCodecHelper.java +++ b/core/common/src/main/java/org/onosproject/codec/impl/EncodeInstructionCodecHelper.java @@ -20,7 +20,7 @@ import org.onlab.osgi.DefaultServiceDirectory; import org.onlab.osgi.ServiceDirectory; import org.onlab.util.HexString; import org.onosproject.codec.CodecContext; -import org.onosproject.codec.ExtensionTreatmentCodec; +import org.onosproject.net.flow.ExtensionTreatmentCodec; import org.onosproject.net.Device; import org.onosproject.net.DeviceId; import org.onosproject.net.OchSignal; diff --git a/drivers/default/src/main/resources/onos-drivers.xml b/drivers/default/src/main/resources/onos-drivers.xml index 59144a514d..84269df602 100644 --- a/drivers/default/src/main/resources/onos-drivers.xml +++ b/drivers/default/src/main/resources/onos-drivers.xml @@ -30,13 +30,13 @@ impl="org.onosproject.driver.extensions.NiciraExtensionTreatmentInterpreter" /> - - diff --git a/drivers/optical/src/main/java/org/onosproject/driver/optical/extensions/OplinkExtensionTreatmentCodec.java b/drivers/optical/src/main/java/org/onosproject/driver/optical/extensions/OplinkExtensionTreatmentCodec.java index c62f85710a..f62e2aaa07 100644 --- a/drivers/optical/src/main/java/org/onosproject/driver/optical/extensions/OplinkExtensionTreatmentCodec.java +++ b/drivers/optical/src/main/java/org/onosproject/driver/optical/extensions/OplinkExtensionTreatmentCodec.java @@ -20,7 +20,7 @@ import org.onlab.osgi.DefaultServiceDirectory; import org.onlab.osgi.ServiceDirectory; import org.onosproject.codec.CodecContext; import org.onosproject.codec.CodecService; -import org.onosproject.codec.ExtensionTreatmentCodec; +import org.onosproject.net.flow.ExtensionTreatmentCodec; import org.onosproject.driver.extensions.OplinkAttenuation; import org.onosproject.net.driver.AbstractHandlerBehaviour; import org.onosproject.net.flow.instructions.ExtensionTreatment; diff --git a/drivers/optical/src/main/resources/optical-drivers.xml b/drivers/optical/src/main/resources/optical-drivers.xml index 1dd44ff5cd..a7ef017c1f 100644 --- a/drivers/optical/src/main/resources/optical-drivers.xml +++ b/drivers/optical/src/main/resources/optical-drivers.xml @@ -60,7 +60,7 @@ impl="org.onosproject.net.optical.DefaultOpticalDevice"/> - diff --git a/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/ExtensionSelectorInterpreter.java b/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/ExtensionSelectorInterpreter.java index 37726baf4f..de7ec2f2b4 100644 --- a/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/ExtensionSelectorInterpreter.java +++ b/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/ExtensionSelectorInterpreter.java @@ -17,7 +17,7 @@ package org.onosproject.openflow.controller; import com.google.common.annotations.Beta; -import org.onosproject.codec.ExtensionSelectorCodec; +import org.onosproject.net.flow.ExtensionSelectorCodec; import org.onosproject.net.flow.criteria.ExtensionSelector; import org.onosproject.net.flow.criteria.ExtensionSelectorType; import org.projectfloodlight.openflow.protocol.OFFactory; diff --git a/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/ExtensionTreatmentInterpreter.java b/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/ExtensionTreatmentInterpreter.java index f511ef3b0e..f0b9979fdf 100644 --- a/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/ExtensionTreatmentInterpreter.java +++ b/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/ExtensionTreatmentInterpreter.java @@ -17,7 +17,7 @@ package org.onosproject.openflow.controller; import com.google.common.annotations.Beta; -import org.onosproject.codec.ExtensionTreatmentCodec; +import org.onosproject.net.flow.ExtensionTreatmentCodec; import org.onosproject.net.flow.instructions.ExtensionTreatment; import org.onosproject.net.flow.instructions.ExtensionTreatmentType; import org.projectfloodlight.openflow.protocol.OFFactory;