From 79dba1331fc464a3fc6da4623d8ac1807152db4b Mon Sep 17 00:00:00 2001 From: Michal Polkorab Date: Tue, 22 Apr 2014 13:07:02 +0200 Subject: [PATCH] Extensibility refactoring - RegistryInjector renamed to SerializerRegistryInjector - EnhancedMessageTypeKey moved to api project to be visible outside library implementation - SerializerRegistryImpl - unified Exception message - MessageTypeKey - updated hashCode() - also updated SerializationFactory key to .getImplementedInterface() instead of .getClass() Signed-off-by: Michal Polkorab --- .../EnhancedMessageTypeKey.java | 13 +- .../api/extensibility/MessageTypeKey.java | 18 +- ...r.java => SerializerRegistryInjector.java} | 2 +- .../DeserializationFactory.java | 5 +- .../serialization/SerializationFactory.java | 2 +- .../serialization/SerializerRegistryImpl.java | 12 +- .../factories/FlowModInputMessageFactory.java | 4 +- .../GroupModInputMessageFactory.java | 4 +- .../MultipartRequestInputFactory.java | 6 +- .../OF10FlowModInputMessageFactory.java | 4 +- .../OF10PacketOutInputMessageFactory.java | 4 +- .../OF10StatsRequestInputFactory.java | 4 +- .../PacketOutInputMessageFactory.java | 4 +- .../impl/util/MatchIdsDeserializer.java | 231 ------------------ .../impl/util/OF10ActionsSerializer.java | 4 +- .../impl/util/OF13ActionsSerializer.java | 6 +- .../impl/util/OF13InstructionsSerializer.java | 4 +- .../util/OF13MatchEntriesRegistryHelper.java | 2 +- .../impl/util/OF13MatchSerializer.java | 6 +- 19 files changed, 36 insertions(+), 299 deletions(-) rename {openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization => openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility}/EnhancedMessageTypeKey.java (75%) rename openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/{RegistryInjector.java => SerializerRegistryInjector.java} (90%) delete mode 100644 openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/MatchIdsDeserializer.java diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/EnhancedMessageTypeKey.java b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/EnhancedMessageTypeKey.java similarity index 75% rename from openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/EnhancedMessageTypeKey.java rename to openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/EnhancedMessageTypeKey.java index f16987d1..15919e4f 100644 --- a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/EnhancedMessageTypeKey.java +++ b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/EnhancedMessageTypeKey.java @@ -5,10 +5,8 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.openflowjava.protocol.impl.deserialization; +package org.opendaylight.openflowjava.protocol.api.extensibility; -import org.opendaylight.openflowjava.protocol.api.extensibility.MessageTypeKey; -import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry; /** * More specific key for {@link SerializerRegistry} @@ -30,13 +28,6 @@ public class EnhancedMessageTypeKey extends MessageTypeKey { this.msgType2 = msgType2; } - /** - * @return more specific type - */ - public Class getMsgType2() { - return msgType2; - } - @Override public boolean equals(Object obj) { if (this == obj) @@ -50,7 +41,7 @@ public class EnhancedMessageTypeKey extends MessageTypeKey { if (msgType2 == null) { if (other.msgType2 != null) return false; - } else if (!msgType2.equals(other.msgType2)) + } else if (!msgType2.getName().equals(other.msgType2.getName())) return false; return true; } diff --git a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/MessageTypeKey.java b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/MessageTypeKey.java index 65d3823d..7885b7e1 100644 --- a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/MessageTypeKey.java +++ b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/MessageTypeKey.java @@ -30,20 +30,6 @@ public class MessageTypeKey { this.msgVersion = msgVersion; } - /** - * @return msgVersion - */ - public short getMsgVersion() { - return msgVersion; - } - - /** - * @return the msgType - */ - public Class getMsgType() { - return msgType; - } - @Override public String toString() { return "msgVersion: " + msgVersion + " msgType: " + msgType.getName(); @@ -53,7 +39,7 @@ public class MessageTypeKey { public int hashCode() { final int prime = 31; int result = 1; - result = prime * result + msgVersion; + result = prime * result + ((msgType == null) ? 0 : msgType.getName().hashCode()); return result; } @@ -69,7 +55,7 @@ public class MessageTypeKey { if (msgType == null) { if (other.msgType != null) return false; - } else if (!other.msgType.isAssignableFrom(msgType)) + } else if (!other.msgType.getName().equals(msgType.getName())) return false; if (msgVersion != other.msgVersion) return false; diff --git a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/RegistryInjector.java b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/SerializerRegistryInjector.java similarity index 90% rename from openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/RegistryInjector.java rename to openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/SerializerRegistryInjector.java index 9c1b5373..260c2cc4 100644 --- a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/RegistryInjector.java +++ b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/SerializerRegistryInjector.java @@ -11,7 +11,7 @@ package org.opendaylight.openflowjava.protocol.api.extensibility; * Serializer registry injector * @author michal.polkorab */ -public interface RegistryInjector { +public interface SerializerRegistryInjector { /** * Injects serializer registry diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/DeserializationFactory.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/DeserializationFactory.java index 1d827c0f..afc01f62 100644 --- a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/DeserializationFactory.java +++ b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/DeserializationFactory.java @@ -33,7 +33,7 @@ public class DeserializationFactory { */ public DeserializationFactory() { messageClassMap = new HashMap<>(); - initTypeToClassMapping(); + TypeToClassMapInitializer.initializeTypeToClassMap(messageClassMap); } /** @@ -62,7 +62,4 @@ public class DeserializationFactory { this.registry = registry; } - private void initTypeToClassMapping() { - TypeToClassMapInitializer.initializeTypeToClassMap(messageClassMap); - } } diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/SerializationFactory.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/SerializationFactory.java index d9ad3abc..34f4fb19 100644 --- a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/SerializationFactory.java +++ b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/SerializationFactory.java @@ -31,7 +31,7 @@ public class SerializationFactory { */ public void messageToBuffer(short version, ByteBuf out, DataObject message) { OFSerializer serializer = registry.getSerializer( - new MessageTypeKey<>(version, message.getClass())); + new MessageTypeKey<>(version, message.getImplementedInterface())); if (serializer != null) { serializer.serialize(message, out); } diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/SerializerRegistryImpl.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/SerializerRegistryImpl.java index 9a9a1b0c..b617284e 100644 --- a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/SerializerRegistryImpl.java +++ b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/SerializerRegistryImpl.java @@ -13,9 +13,8 @@ import java.util.Map; import org.opendaylight.openflowjava.protocol.api.extensibility.MessageTypeKey; import org.opendaylight.openflowjava.protocol.api.extensibility.OFGeneralSerializer; -import org.opendaylight.openflowjava.protocol.api.extensibility.RegistryInjector; import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry; -import org.opendaylight.openflowjava.protocol.impl.deserialization.EnhancedMessageTypeKey; +import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector; import org.opendaylight.openflowjava.protocol.impl.util.EncodeConstants; import org.opendaylight.openflowjava.protocol.impl.util.OF10ActionsSerializer; import org.opendaylight.openflowjava.protocol.impl.util.OF10MatchSerializer; @@ -66,11 +65,6 @@ public class SerializerRegistryImpl implements SerializerRegistry { MessageTypeKey msgTypeKey) { OFGeneralSerializer serializer = registry.get(msgTypeKey); if (serializer == null) { - if (msgTypeKey instanceof EnhancedMessageTypeKey) { - EnhancedMessageTypeKey key = (EnhancedMessageTypeKey) msgTypeKey; - throw new NullPointerException("Serializer for key: " + key.toString() - + " was not found"); - } throw new NullPointerException("Serializer for key: " + msgTypeKey.toString() + " was not found"); } @@ -83,8 +77,8 @@ public class SerializerRegistryImpl implements SerializerRegistry { if ((msgTypeKey == null) || (serializer == null)) { throw new NullPointerException("MessageTypeKey or Serializer is null"); } - if (serializer instanceof RegistryInjector) { - ((RegistryInjector) serializer).injectSerializerRegistry(this); + if (serializer instanceof SerializerRegistryInjector) { + ((SerializerRegistryInjector) serializer).injectSerializerRegistry(this); } registry.put(msgTypeKey, serializer); } diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/FlowModInputMessageFactory.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/FlowModInputMessageFactory.java index 683a301c..ffb20862 100644 --- a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/FlowModInputMessageFactory.java +++ b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/FlowModInputMessageFactory.java @@ -15,7 +15,7 @@ import java.util.Map; import org.opendaylight.openflowjava.protocol.api.extensibility.MessageTypeKey; import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer; -import org.opendaylight.openflowjava.protocol.api.extensibility.RegistryInjector; +import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector; import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry; import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils; import org.opendaylight.openflowjava.protocol.impl.util.CodingUtils; @@ -30,7 +30,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731 * @author timotej.kubas * @author michal.polkorab */ -public class FlowModInputMessageFactory implements OFSerializer, RegistryInjector { +public class FlowModInputMessageFactory implements OFSerializer, SerializerRegistryInjector { private static final byte MESSAGE_TYPE = 14; private static final byte PADDING_IN_FLOW_MOD_MESSAGE = 2; private SerializerRegistry registry; diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/GroupModInputMessageFactory.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/GroupModInputMessageFactory.java index 287ac2c0..75a6bdfc 100644 --- a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/GroupModInputMessageFactory.java +++ b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/GroupModInputMessageFactory.java @@ -14,7 +14,7 @@ import java.util.List; import org.opendaylight.openflowjava.protocol.api.extensibility.MessageTypeKey; import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer; -import org.opendaylight.openflowjava.protocol.api.extensibility.RegistryInjector; +import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector; import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry; import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils; import org.opendaylight.openflowjava.protocol.impl.util.CodingUtils; @@ -28,7 +28,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731 * @author timotej.kubas * @author michal.polkorab */ -public class GroupModInputMessageFactory implements OFSerializer, RegistryInjector { +public class GroupModInputMessageFactory implements OFSerializer, SerializerRegistryInjector { private static final byte MESSAGE_TYPE = 15; private static final byte PADDING_IN_GROUP_MOD_MESSAGE = 1; private static final byte PADDING_IN_BUCKET = 4; diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/MultipartRequestInputFactory.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/MultipartRequestInputFactory.java index caf857c4..6edd6fa4 100644 --- a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/MultipartRequestInputFactory.java +++ b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/MultipartRequestInputFactory.java @@ -14,12 +14,12 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import org.opendaylight.openflowjava.protocol.api.extensibility.EnhancedMessageTypeKey; import org.opendaylight.openflowjava.protocol.api.extensibility.HeaderSerializer; import org.opendaylight.openflowjava.protocol.api.extensibility.MessageTypeKey; import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer; -import org.opendaylight.openflowjava.protocol.api.extensibility.RegistryInjector; +import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector; import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry; -import org.opendaylight.openflowjava.protocol.impl.deserialization.EnhancedMessageTypeKey; import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils; import org.opendaylight.openflowjava.protocol.impl.util.CodingUtils; import org.opendaylight.openflowjava.protocol.impl.util.EncodeConstants; @@ -69,7 +69,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731 * @author timotej.kubas * @author michal.polkorab */ -public class MultipartRequestInputFactory implements OFSerializer, RegistryInjector { +public class MultipartRequestInputFactory implements OFSerializer, SerializerRegistryInjector { private static final byte MESSAGE_TYPE = 18; private static final byte PADDING_IN_MULTIPART_REQUEST_MESSAGE = 4; private static final byte TABLE_FEAT_HEADER_LENGTH = 4; diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/OF10FlowModInputMessageFactory.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/OF10FlowModInputMessageFactory.java index d43104cf..ea37b0c1 100644 --- a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/OF10FlowModInputMessageFactory.java +++ b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/OF10FlowModInputMessageFactory.java @@ -15,7 +15,7 @@ import java.util.Map; import org.opendaylight.openflowjava.protocol.api.extensibility.MessageTypeKey; import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer; -import org.opendaylight.openflowjava.protocol.api.extensibility.RegistryInjector; +import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector; import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry; import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils; import org.opendaylight.openflowjava.protocol.impl.util.CodingUtils; @@ -29,7 +29,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731 * Translates FlowMod messages * @author michal.polkorab */ -public class OF10FlowModInputMessageFactory implements OFSerializer, RegistryInjector { +public class OF10FlowModInputMessageFactory implements OFSerializer, SerializerRegistryInjector { private static final byte MESSAGE_TYPE = 14; private SerializerRegistry registry; diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/OF10PacketOutInputMessageFactory.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/OF10PacketOutInputMessageFactory.java index ad49758b..9bd6d733 100644 --- a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/OF10PacketOutInputMessageFactory.java +++ b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/OF10PacketOutInputMessageFactory.java @@ -12,7 +12,7 @@ import io.netty.buffer.ByteBuf; import org.opendaylight.openflowjava.protocol.api.extensibility.MessageTypeKey; import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer; -import org.opendaylight.openflowjava.protocol.api.extensibility.RegistryInjector; +import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector; import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry; import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils; import org.opendaylight.openflowjava.protocol.impl.util.CodingUtils; @@ -24,7 +24,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731 * Translates PacketOut messages * @author michal.polkorab */ -public class OF10PacketOutInputMessageFactory implements OFSerializer, RegistryInjector { +public class OF10PacketOutInputMessageFactory implements OFSerializer, SerializerRegistryInjector { private static final byte MESSAGE_TYPE = 13; private SerializerRegistry registry; diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/OF10StatsRequestInputFactory.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/OF10StatsRequestInputFactory.java index 24c876fa..cb3eee8b 100644 --- a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/OF10StatsRequestInputFactory.java +++ b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/OF10StatsRequestInputFactory.java @@ -15,7 +15,7 @@ import java.util.Map; import org.opendaylight.openflowjava.protocol.api.extensibility.MessageTypeKey; import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer; -import org.opendaylight.openflowjava.protocol.api.extensibility.RegistryInjector; +import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector; import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry; import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils; import org.opendaylight.openflowjava.protocol.impl.util.EncodeConstants; @@ -41,7 +41,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731 * Translates StatsRequest messages * @author michal.polkorab */ -public class OF10StatsRequestInputFactory implements OFSerializer, RegistryInjector { +public class OF10StatsRequestInputFactory implements OFSerializer, SerializerRegistryInjector { private static final byte MESSAGE_TYPE = 16; private static final byte FLOW_BODY_LENGTH = 44; diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/PacketOutInputMessageFactory.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/PacketOutInputMessageFactory.java index 2b14b19d..2b2017c4 100644 --- a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/PacketOutInputMessageFactory.java +++ b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/PacketOutInputMessageFactory.java @@ -12,7 +12,7 @@ import io.netty.buffer.ByteBuf; import org.opendaylight.openflowjava.protocol.api.extensibility.MessageTypeKey; import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer; -import org.opendaylight.openflowjava.protocol.api.extensibility.RegistryInjector; +import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector; import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry; import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils; import org.opendaylight.openflowjava.protocol.impl.util.CodingUtils; @@ -25,7 +25,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731 * @author michal.polkorab * @author timotej.kubas */ -public class PacketOutInputMessageFactory implements OFSerializer, RegistryInjector { +public class PacketOutInputMessageFactory implements OFSerializer, SerializerRegistryInjector { /** Code type of PacketOut message */ private static final byte MESSAGE_TYPE = 13; diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/MatchIdsDeserializer.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/MatchIdsDeserializer.java deleted file mode 100644 index db1687be..00000000 --- a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/MatchIdsDeserializer.java +++ /dev/null @@ -1,231 +0,0 @@ -/* - * Copyright (c) 2013 Pantheon Technologies s.r.o. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.openflowjava.protocol.impl.util; - -import io.netty.buffer.ByteBuf; - -import java.util.ArrayList; -import java.util.List; - -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.ArpOp; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.ArpSha; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.ArpSpa; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.ArpTha; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.ArpTpa; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.EthDst; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.EthSrc; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.EthType; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.ExperimenterClass; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Icmpv4Code; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Icmpv4Type; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Icmpv6Code; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Icmpv6Type; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.InPhyPort; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.InPort; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.IpDscp; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.IpEcn; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.IpProto; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv4Dst; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv4Src; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv6Dst; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv6Exthdr; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv6Flabel; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv6NdSll; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv6NdTarget; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv6NdTll; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv6Src; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Metadata; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.MplsBos; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.MplsLabel; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.MplsTc; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Nxm0Class; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Nxm1Class; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.OpenflowBasicClass; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.PbbIsid; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.SctpDst; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.SctpSrc; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.TcpDst; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.TcpSrc; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.TunnelId; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.UdpDst; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.UdpSrc; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.VlanPcp; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.VlanVid; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.oxm.fields.grouping.MatchEntries; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.oxm.fields.grouping.MatchEntriesBuilder; - -/** - * Encodes match ids (oxm_ids) needed in Multipart-TableFeatures messages - * @author michal.polkorab - */ -public abstract class MatchIdsDeserializer { - - /** Decodes oxm ids - * @param in input ByteBuf - * @param matchLength match entries length - * @return list of match ids - */ - public static List createOxmIds(ByteBuf in, int matchLength) { - List matchEntriesList = new ArrayList<>(); - int currLength = 0; - while(currLength < matchLength) { - MatchEntriesBuilder matchEntriesBuilder = new MatchEntriesBuilder(); - switch (in.readUnsignedShort()) { - case 0x0000: - matchEntriesBuilder.setOxmClass(Nxm0Class.class); - break; - case 0x0001: - matchEntriesBuilder.setOxmClass(Nxm1Class.class); - break; - case 0x8000: - matchEntriesBuilder.setOxmClass(OpenflowBasicClass.class); - break; - case 0xFFFF: - matchEntriesBuilder.setOxmClass(ExperimenterClass.class); - break; - default: - break; - } - - int fieldAndMask = in.readUnsignedByte(); - boolean hasMask = (fieldAndMask & 1) != 0; - matchEntriesBuilder.setHasMask(hasMask); - int matchField = fieldAndMask >> 1; - in.skipBytes(EncodeConstants.SIZE_OF_BYTE_IN_BYTES); - currLength += EncodeConstants.SIZE_OF_SHORT_IN_BYTES + - (2 * EncodeConstants.SIZE_OF_BYTE_IN_BYTES); - - switch(matchField) { - case 0: - matchEntriesBuilder.setOxmMatchField(InPort.class); - break; - case 1: - matchEntriesBuilder.setOxmMatchField(InPhyPort.class); - break; - case 2: - matchEntriesBuilder.setOxmMatchField(Metadata.class); - break; - case 3: - matchEntriesBuilder.setOxmMatchField(EthDst.class); - break; - case 4: - matchEntriesBuilder.setOxmMatchField(EthSrc.class); - break; - case 5: - matchEntriesBuilder.setOxmMatchField(EthType.class); - break; - case 6: - matchEntriesBuilder.setOxmMatchField(VlanVid.class); - break; - case 7: - matchEntriesBuilder.setOxmMatchField(VlanPcp.class); - break; - case 8: - matchEntriesBuilder.setOxmMatchField(IpDscp.class); - break; - case 9: - matchEntriesBuilder.setOxmMatchField(IpEcn.class); - break; - case 10: - matchEntriesBuilder.setOxmMatchField(IpProto.class); - break; - case 11: - matchEntriesBuilder.setOxmMatchField(Ipv4Src.class); - break; - case 12: - matchEntriesBuilder.setOxmMatchField(Ipv4Dst.class); - break; - case 13: - matchEntriesBuilder.setOxmMatchField(TcpSrc.class); - break; - case 14: - matchEntriesBuilder.setOxmMatchField(TcpDst.class); - break; - case 15: - matchEntriesBuilder.setOxmMatchField(UdpSrc.class); - break; - case 16: - matchEntriesBuilder.setOxmMatchField(UdpDst.class); - break; - case 17: - matchEntriesBuilder.setOxmMatchField(SctpSrc.class); - break; - case 18: - matchEntriesBuilder.setOxmMatchField(SctpDst.class); - break; - case 19: - matchEntriesBuilder.setOxmMatchField(Icmpv4Type.class); - break; - case 20: - matchEntriesBuilder.setOxmMatchField(Icmpv4Code.class); - break; - case 21: - matchEntriesBuilder.setOxmMatchField(ArpOp.class); - break; - case 22: - matchEntriesBuilder.setOxmMatchField(ArpSpa.class); - break; - case 23: - matchEntriesBuilder.setOxmMatchField(ArpTpa.class); - break; - case 24: - matchEntriesBuilder.setOxmMatchField(ArpSha.class); - break; - case 25: - matchEntriesBuilder.setOxmMatchField(ArpTha.class); - break; - case 26: - matchEntriesBuilder.setOxmMatchField(Ipv6Src.class); - break; - case 27: - matchEntriesBuilder.setOxmMatchField(Ipv6Dst.class); - break; - case 28: - matchEntriesBuilder.setOxmMatchField(Ipv6Flabel.class); - break; - case 29: - matchEntriesBuilder.setOxmMatchField(Icmpv6Type.class); - break; - case 30: - matchEntriesBuilder.setOxmMatchField(Icmpv6Code.class); - break; - case 31: - matchEntriesBuilder.setOxmMatchField(Ipv6NdTarget.class); - break; - case 32: - matchEntriesBuilder.setOxmMatchField(Ipv6NdSll.class); - break; - case 33: - matchEntriesBuilder.setOxmMatchField(Ipv6NdTll.class); - break; - case 34: - matchEntriesBuilder.setOxmMatchField(MplsLabel.class); - break; - case 35: - matchEntriesBuilder.setOxmMatchField(MplsTc.class); - break; - case 36: - matchEntriesBuilder.setOxmMatchField(MplsBos.class); - break; - case 37: - matchEntriesBuilder.setOxmMatchField(PbbIsid.class); - break; - case 38: - matchEntriesBuilder.setOxmMatchField(TunnelId.class); - break; - case 39: - matchEntriesBuilder.setOxmMatchField(Ipv6Exthdr.class); - break; - default: - break; - } - matchEntriesList.add(matchEntriesBuilder.build()); - } - return matchEntriesList; - } -} diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/OF10ActionsSerializer.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/OF10ActionsSerializer.java index 3ec867d7..2e1d2328 100644 --- a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/OF10ActionsSerializer.java +++ b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/OF10ActionsSerializer.java @@ -12,7 +12,7 @@ import io.netty.buffer.ByteBuf; import org.opendaylight.openflowjava.protocol.api.extensibility.MessageTypeKey; import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer; -import org.opendaylight.openflowjava.protocol.api.extensibility.RegistryInjector; +import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector; import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.DlAddressAction; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.ExperimenterAction; @@ -42,7 +42,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev1 * Serializes ofp_action (OpenFlow v1.0) structures * @author michal.polkorab */ -public class OF10ActionsSerializer implements OFSerializer, RegistryInjector { +public class OF10ActionsSerializer implements OFSerializer, SerializerRegistryInjector { private static final byte OUTPUT_CODE = 0; private static final byte SET_VLAN_VID_CODE = 1; diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/OF13ActionsSerializer.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/OF13ActionsSerializer.java index e1f4ec6f..2d4431ed 100644 --- a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/OF13ActionsSerializer.java +++ b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/OF13ActionsSerializer.java @@ -10,12 +10,12 @@ package org.opendaylight.openflowjava.protocol.impl.util; import io.netty.buffer.ByteBuf; +import org.opendaylight.openflowjava.protocol.api.extensibility.EnhancedMessageTypeKey; import org.opendaylight.openflowjava.protocol.api.extensibility.HeaderSerializer; import org.opendaylight.openflowjava.protocol.api.extensibility.MessageTypeKey; import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer; -import org.opendaylight.openflowjava.protocol.api.extensibility.RegistryInjector; +import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector; import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry; -import org.opendaylight.openflowjava.protocol.impl.deserialization.EnhancedMessageTypeKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.EthertypeAction; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.ExperimenterAction; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.GroupIdAction; @@ -51,7 +51,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.oxm. * @author timotej.kubas */ public class OF13ActionsSerializer implements OFSerializer, - HeaderSerializer, RegistryInjector { + HeaderSerializer, SerializerRegistryInjector { private static final byte OUTPUT_CODE = 0; private static final byte COPY_TTL_OUT_CODE = 11; diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/OF13InstructionsSerializer.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/OF13InstructionsSerializer.java index 84beb0b0..d8dc6935 100644 --- a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/OF13InstructionsSerializer.java +++ b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/OF13InstructionsSerializer.java @@ -15,7 +15,7 @@ import java.util.List; import org.opendaylight.openflowjava.protocol.api.extensibility.HeaderSerializer; import org.opendaylight.openflowjava.protocol.api.extensibility.MessageTypeKey; import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer; -import org.opendaylight.openflowjava.protocol.api.extensibility.RegistryInjector; +import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector; import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.ActionsInstruction; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.ExperimenterInstruction; @@ -39,7 +39,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev13 * @author timotej.kubas */ public class OF13InstructionsSerializer implements OFSerializer, - HeaderSerializer, RegistryInjector { + HeaderSerializer, SerializerRegistryInjector { private static final byte GOTO_TABLE_TYPE = 1; private static final byte WRITE_METADATA_TYPE = 2; diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/OF13MatchEntriesRegistryHelper.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/OF13MatchEntriesRegistryHelper.java index 3a5b6a7f..24d4c812 100644 --- a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/OF13MatchEntriesRegistryHelper.java +++ b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/OF13MatchEntriesRegistryHelper.java @@ -7,9 +7,9 @@ */ package org.opendaylight.openflowjava.protocol.impl.util; +import org.opendaylight.openflowjava.protocol.api.extensibility.EnhancedMessageTypeKey; import org.opendaylight.openflowjava.protocol.api.extensibility.OFGeneralSerializer; import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry; -import org.opendaylight.openflowjava.protocol.impl.deserialization.EnhancedMessageTypeKey; /** * @author michal.polkorab diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/OF13MatchSerializer.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/OF13MatchSerializer.java index a90e77bc..7c3d61c0 100644 --- a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/OF13MatchSerializer.java +++ b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/OF13MatchSerializer.java @@ -12,10 +12,10 @@ import io.netty.buffer.ByteBuf; import java.util.List; +import org.opendaylight.openflowjava.protocol.api.extensibility.EnhancedMessageTypeKey; import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer; -import org.opendaylight.openflowjava.protocol.api.extensibility.RegistryInjector; +import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector; import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry; -import org.opendaylight.openflowjava.protocol.impl.deserialization.EnhancedMessageTypeKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.StandardMatchType; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.OxmMatchType; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.match.grouping.Match; @@ -28,7 +28,7 @@ import org.slf4j.LoggerFactory; * @author michal.polkorab * @author timotej.kubas */ -public class OF13MatchSerializer implements OFSerializer, RegistryInjector { +public class OF13MatchSerializer implements OFSerializer, SerializerRegistryInjector { private static final Logger LOGGER = LoggerFactory.getLogger(OF13MatchSerializer.class); private static final byte STANDARD_MATCH_TYPE_CODE = 0; private static final byte OXM_MATCH_TYPE_CODE = 1; -- 2.36.6