getCipherSuites() {
+ return cipherSuites;
+ }
}
diff --git a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/AlienMessageListener.java b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/AlienMessageListener.java
new file mode 100644
index 00000000..a3cd7c6c
--- /dev/null
+++ b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/AlienMessageListener.java
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2017 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.api.extensibility;
+
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader;
+
+public interface AlienMessageListener {
+
+ /**
+ * Handler for alien but successfully deserialized messages for device
+ * @param message alien message
+ */
+ void onAlienMessage(OfHeader message);
+}
diff --git a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/DeserializerExtensionProvider.java b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/DeserializerExtensionProvider.java
index b38b5cfa..5a0658eb 100644
--- a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/DeserializerExtensionProvider.java
+++ b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/DeserializerExtensionProvider.java
@@ -13,9 +13,10 @@
import org.opendaylight.openflowjava.protocol.api.keys.ExperimenterIdDeserializerKey;
import org.opendaylight.openflowjava.protocol.api.keys.ExperimenterInstructionDeserializerKey;
import org.opendaylight.openflowjava.protocol.api.keys.MatchEntryDeserializerKey;
+import org.opendaylight.openflowjava.protocol.api.keys.MessageCodeKey;
+import org.opendaylight.openflowjava.protocol.api.keys.TypeToClassKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ErrorMessage;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ExperimenterMessage;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartReplyMessage;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.experimenter.core.ExperimenterDataOfChoice;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandExperimenterCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.queue.property.header.QueueProperty;
@@ -34,6 +35,20 @@
*/
public interface DeserializerExtensionProvider {
+ /**
+ * Registers deserializer.
+ * Throws IllegalStateException when there is
+ * a deserializer already registered under given key.
+ *
+ * If the deserializer implements {@link DeserializerRegistryInjector} interface,
+ * the deserializer is injected with DeserializerRegistry instance.
+ *
+ * @param key used for deserializer lookup
+ * @param deserializer deserializer instance
+ */
+ void registerDeserializer(MessageCodeKey key,
+ OFGeneralDeserializer deserializer);
+
/**
* Unregisters custom deserializer
* @param key used for deserializer lookup
@@ -80,7 +95,7 @@ void registerErrorDeserializer(ExperimenterIdDeserializerKey key,
* @param deserializer deserializer instance
*/
void registerExperimenterMessageDeserializer(ExperimenterIdDeserializerKey key,
- OFDeserializer deserializer);
+ OFDeserializer extends ExperimenterDataOfChoice> deserializer);
/**
* Registers multipart-reply (stats) message deserializer
@@ -88,7 +103,7 @@ void registerExperimenterMessageDeserializer(ExperimenterIdDeserializerKey key,
* @param deserializer deserializer instance
*/
void registerMultipartReplyMessageDeserializer(ExperimenterIdDeserializerKey key,
- OFDeserializer deserializer);
+ OFDeserializer extends ExperimenterDataOfChoice> deserializer);
/**
* Registers multipart-reply table-features message deserializer
@@ -113,4 +128,18 @@ void registerMeterBandDeserializer(ExperimenterIdDeserializerKey key,
*/
void registerQueuePropertyDeserializer(ExperimenterIdDeserializerKey key,
OFDeserializer deserializer);
+
+ /**
+ * Registers type to class mapping used to assign return type when deserializing message
+ * @param key type to class key
+ * @param clazz return class
+ */
+ void registerDeserializerMapping(TypeToClassKey key, Class> clazz);
+
+ /**
+ * Unregisters type to class mapping used to assign return type when deserializing message
+ * @param key type to class key
+ * @return true if mapping was successfully removed
+ */
+ boolean unregisterDeserializerMapping(TypeToClassKey key);
}
diff --git a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/DeserializerRegistry.java b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/DeserializerRegistry.java
index 6970a1dc..27660398 100644
--- a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/DeserializerRegistry.java
+++ b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/DeserializerRegistry.java
@@ -22,6 +22,7 @@ public interface DeserializerRegistry {
void init();
/**
+ * @param type of particular deserializer
* @param key used for deserializer lookup
* @return deserializer found
*/
diff --git a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/DeserializerRegistryInjector.java b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/DeserializerRegistryInjector.java
index 0b291af3..98e83633 100644
--- a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/DeserializerRegistryInjector.java
+++ b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/DeserializerRegistryInjector.java
@@ -15,7 +15,7 @@ public interface DeserializerRegistryInjector {
/**
* Injects deserializer registry into deserializer
- * @param deserializerRegistry
+ * @param deserializerRegistry registry of deserializers
*/
void injectDeserializerRegistry(DeserializerRegistry deserializerRegistry);
}
diff --git a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/EnhancedMessageTypeKey.java b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/EnhancedMessageTypeKey.java
index ec578c6b..3a9fffc2 100644
--- a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/EnhancedMessageTypeKey.java
+++ b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/EnhancedMessageTypeKey.java
@@ -21,9 +21,9 @@ public class EnhancedMessageTypeKey extends MessageTypeKey {
private final Class msgType2;
/**
- * @param msgVersion
- * @param msgType
- * @param msgType2
+ * @param msgVersion protocol version
+ * @param msgType main type
+ * @param msgType2 subtype
*/
public EnhancedMessageTypeKey(short msgVersion, Class msgType, Class msgType2) {
super(msgVersion, msgType);
diff --git a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/HeaderDeserializer.java b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/HeaderDeserializer.java
index 1d105f39..c80df7b9 100644
--- a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/HeaderDeserializer.java
+++ b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/HeaderDeserializer.java
@@ -8,14 +8,13 @@
package org.opendaylight.openflowjava.protocol.api.extensibility;
import io.netty.buffer.ByteBuf;
-
-import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yangtools.yang.binding.DataContainer;
/**
* @author michal.polkorab
- * @param
+ * @param output message type
*/
-public interface HeaderDeserializer extends OFGeneralDeserializer {
+public interface HeaderDeserializer extends OFGeneralDeserializer {
/**
* Deserializes byte message headers
diff --git a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/HeaderSerializer.java b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/HeaderSerializer.java
index 1e047c09..427d84ce 100644
--- a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/HeaderSerializer.java
+++ b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/HeaderSerializer.java
@@ -7,16 +7,15 @@
*/
package org.opendaylight.openflowjava.protocol.api.extensibility;
-import org.opendaylight.yangtools.yang.binding.DataObject;
-
import io.netty.buffer.ByteBuf;
+import org.opendaylight.yangtools.yang.binding.DataContainer;
/**
* Does only-header serialization (such as oxm_ids, action_ids, instruction_ids)
* @author michal.polkorab
- * @param
+ * @param input message type
*/
-public interface HeaderSerializer extends OFGeneralSerializer {
+public interface HeaderSerializer extends OFGeneralSerializer {
/**
* Serializes object headers (e.g. for Multipart message - Table Features)
diff --git a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/OFDeserializer.java b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/OFDeserializer.java
index a49d84c3..06c54f9d 100644
--- a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/OFDeserializer.java
+++ b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/OFDeserializer.java
@@ -9,8 +9,7 @@
package org.opendaylight.openflowjava.protocol.api.extensibility;
import io.netty.buffer.ByteBuf;
-
-import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yangtools.yang.binding.DataContainer;
/**
* Uniform interface for deserializing factories
@@ -18,7 +17,7 @@
* @author timotej.kubas
* @param message code type
*/
-public interface OFDeserializer extends OFGeneralDeserializer {
+public interface OFDeserializer extends OFGeneralDeserializer {
/**
* Transforms byte message into POJO/DTO (of type E).
diff --git a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/OFSerializer.java b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/OFSerializer.java
index 6b2ef473..ec63be53 100644
--- a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/OFSerializer.java
+++ b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/OFSerializer.java
@@ -8,9 +8,8 @@
package org.opendaylight.openflowjava.protocol.api.extensibility;
-import org.opendaylight.yangtools.yang.binding.DataObject;
-
import io.netty.buffer.ByteBuf;
+import org.opendaylight.yangtools.yang.binding.DataContainer;
/**
* Uniform interface for serializers
@@ -18,7 +17,7 @@
* @author timotej.kubas
* @param message type
*/
-public interface OFSerializer extends OFGeneralSerializer {
+public interface OFSerializer extends OFGeneralSerializer {
/**
* Transforms POJO/DTO into byte message (ByteBuf).
diff --git a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/SerializerExtensionProvider.java b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/SerializerExtensionProvider.java
old mode 100644
new mode 100755
index 7d83cd82..366cd3ab
--- a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/SerializerExtensionProvider.java
+++ b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/SerializerExtensionProvider.java
@@ -9,15 +9,16 @@
package org.opendaylight.openflowjava.protocol.api.extensibility;
import org.opendaylight.openflowjava.protocol.api.keys.ActionSerializerKey;
+import org.opendaylight.openflowjava.protocol.api.keys.ExperimenterIdMeterSubTypeSerializerKey;
import org.opendaylight.openflowjava.protocol.api.keys.ExperimenterIdSerializerKey;
import org.opendaylight.openflowjava.protocol.api.keys.ExperimenterSerializerKey;
import org.opendaylight.openflowjava.protocol.api.keys.InstructionSerializerKey;
import org.opendaylight.openflowjava.protocol.api.keys.MatchEntrySerializerKey;
+import org.opendaylight.openflowjava.protocol.api.keys.MessageTypeKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MatchField;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.OxmClassBase;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ExperimenterInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.experimenter.core.ExperimenterDataOfChoice;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandExperimenterCase;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestExperimenterCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.table.features.properties.grouping.TableFeatureProperties;
@@ -34,6 +35,21 @@
*/
public interface SerializerExtensionProvider {
+ /**
+ * Registers serializer
+ * Throws IllegalStateException when there is
+ * a serializer already registered under given key.
+ *
+ * If the serializer implements {@link SerializerRegistryInjector} interface,
+ * the serializer is injected with SerializerRegistry instance.
+ *
+ * @param serializer key type
+ * @param key used for serializer lookup
+ * @param serializer serializer implementation
+ */
+ void registerSerializer(MessageTypeKey key,
+ OFGeneralSerializer serializer);
+
/**
* Unregisters custom serializer
* @param key used for serializer lookup
@@ -60,6 +76,8 @@ void registerInstructionSerializer(InstructionSerializerKey> key,
/**
* Registers match entry serializer
+ * @param oxm type
+ * @param match field type
* @param key used for serializer lookup
* @param serializer serializer implementation
*/
@@ -71,16 +89,16 @@ void registerMatchEntrySerializer
* @param key used for serializer lookup
* @param serializer serializer implementation
*/
- void registerExperimenterMessageSerializer(ExperimenterIdSerializerKey key,
- OFSerializer serializer);
+ void registerExperimenterMessageSerializer(ExperimenterIdSerializerKey extends ExperimenterDataOfChoice> key,
+ OFSerializer extends ExperimenterDataOfChoice> serializer);
/**
* Registers multipart-request (stats-request) serializer
* @param key used for serializer lookup
* @param serializer serializer implementation
*/
- void registerMultipartRequestSerializer(ExperimenterIdSerializerKey key,
- OFSerializer serializer);
+ void registerMultipartRequestSerializer(ExperimenterIdSerializerKey extends ExperimenterDataOfChoice> key,
+ OFSerializer extends ExperimenterDataOfChoice> serializer);
/**
* Registers multipart-request table-features serializer
@@ -91,10 +109,21 @@ void registerMultipartRequestTFSerializer(ExperimenterIdSerializerKey key,
OFSerializer serializer);
+
+ /**
+ * Registers meter band serializer (used in meter-mod messages)
+ * @param key used for serializer lookup
+ * @param serializer serializer implementation
+ */
+ void registerMeterBandSerializer(ExperimenterIdMeterSubTypeSerializerKey key,
+ OFSerializer serializer);
}
diff --git a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/SerializerRegistry.java b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/SerializerRegistry.java
index 7fb39bbd..1ddc4856 100644
--- a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/SerializerRegistry.java
+++ b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/SerializerRegistry.java
@@ -23,6 +23,8 @@ public interface SerializerRegistry {
void init();
/**
+ * @param input key type
+ * @param type of resulting serializer
* @param msgTypeKey lookup key
* @return serializer or NullPointerException if no serializer was found
*/
@@ -36,6 +38,7 @@ public interface SerializerRegistry {
* If the serializer implements {@link SerializerRegistryInjector} interface,
* the serializer is injected with SerializerRegistry instance.
*
+ * @param serializer key type
* @param key used for serializer lookup
* @param serializer serializer implementation
*/
@@ -44,6 +47,7 @@ void registerSerializer(MessageTypeKey key,
/**
* Unregisters serializer
+ * @param serializer key type
* @param key used for serializer lookup
* @return true if serializer was removed,
* false if no serializer was found under specified key
diff --git a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/keys/ExperimenterIdDeserializerKey.java b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/keys/ExperimenterIdDeserializerKey.java
index bc16e523..ec2cf3e1 100644
--- a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/keys/ExperimenterIdDeserializerKey.java
+++ b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/keys/ExperimenterIdDeserializerKey.java
@@ -9,34 +9,36 @@
package org.opendaylight.openflowjava.protocol.api.keys;
import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
-import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yangtools.yang.binding.DataContainer;
/**
* @author michal.polkorab
- *
*/
-public final class ExperimenterIdDeserializerKey extends MessageCodeKey
- implements ExperimenterDeserializerKey {
+public class ExperimenterIdDeserializerKey extends MessageCodeKey implements ExperimenterDeserializerKey {
- private Long experimenterId;
+ private long experimenterId;
/**
+ * @param type of target experimenter object
* @param version protocol wire version
* @param experimenterId experimenter / vendor ID
* @param objectClass class of created object
*/
- public ExperimenterIdDeserializerKey(short version,
- Long experimenterId, Class objectClass) {
+ public ExperimenterIdDeserializerKey(final short version, final long experimenterId,
+ final Class objectClass) {
super(version, EncodeConstants.EXPERIMENTER_VALUE, objectClass);
this.experimenterId = experimenterId;
}
+ protected int hashCodeOfLong(long longValue) {
+ return (int) (longValue ^ (longValue >>> 32));
+ }
@Override
public int hashCode() {
final int prime = 31;
int result = super.hashCode();
- result = prime * result + ((experimenterId == null) ? 0 : experimenterId.hashCode());
+ result = prime * result + hashCodeOfLong(experimenterId);
return result;
}
@@ -52,11 +54,7 @@ public boolean equals(Object obj) {
return false;
}
ExperimenterIdDeserializerKey other = (ExperimenterIdDeserializerKey) obj;
- if (experimenterId == null) {
- if (other.experimenterId != null) {
- return false;
- }
- } else if (!experimenterId.equals(other.experimenterId)) {
+ if (experimenterId != other.experimenterId) {
return false;
}
return true;
diff --git a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/keys/ExperimenterIdMeterSubTypeSerializerKey.java b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/keys/ExperimenterIdMeterSubTypeSerializerKey.java
new file mode 100755
index 00000000..f568a028
--- /dev/null
+++ b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/keys/ExperimenterIdMeterSubTypeSerializerKey.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2016 ZTE, Inc. 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.api.keys;
+
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.ExperimenterMeterBandSubType;
+import org.opendaylight.yangtools.yang.binding.DataContainer;
+
+/**
+ * Created by hyy on 2016/9/8.
+ */
+public class ExperimenterIdMeterSubTypeSerializerKey extends ExperimenterIdSerializerKey {
+
+ private Class extends ExperimenterMeterBandSubType> meterSubType;
+
+ /**
+ * @param msgVersion protocol wire version
+ * @param experimenterId experimenter / vendor ID
+ * @param objectClass class of object to be serialized
+ * @param meterSubType vendor defined subtype
+ */
+ public ExperimenterIdMeterSubTypeSerializerKey(short msgVersion, long experimenterId,
+ Class objectClass, Class extends ExperimenterMeterBandSubType> meterSubType) {
+ super(msgVersion, experimenterId, objectClass);
+ this.meterSubType = meterSubType;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = super.hashCode();
+ result = prime * result + ((meterSubType == null) ? 0 : meterSubType.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (!super.equals(obj)) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ ExperimenterIdMeterSubTypeSerializerKey other = (ExperimenterIdMeterSubTypeSerializerKey) obj;
+ if (meterSubType == null) {
+ if (other.meterSubType != null) {
+ return false;
+ }
+ } else if (!meterSubType.equals(other.meterSubType)) {
+ return false;
+ }
+ return true;
+ }
+
+}
diff --git a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/keys/ExperimenterIdSerializerKey.java b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/keys/ExperimenterIdSerializerKey.java
index 89525282..8a900e34 100644
--- a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/keys/ExperimenterIdSerializerKey.java
+++ b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/keys/ExperimenterIdSerializerKey.java
@@ -8,16 +8,16 @@
package org.opendaylight.openflowjava.protocol.api.keys;
-import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yangtools.yang.binding.DataContainer;
/**
* @author michal.polkorab
* @param class of object to be serialized
*/
-public class ExperimenterIdSerializerKey extends MessageTypeKey
+public class ExperimenterIdSerializerKey extends MessageTypeKey
implements ExperimenterSerializerKey {
- private Long experimenterId;
+ private long experimenterId;
/**
* @param msgVersion protocol wire version
@@ -25,7 +25,7 @@ public class ExperimenterIdSerializerKey extends MessageTy
* @param objectClass class of object to be serialized
*/
public ExperimenterIdSerializerKey(short msgVersion,
- Long experimenterId, Class objectClass) {
+ long experimenterId, Class objectClass) {
super(msgVersion, objectClass);
this.experimenterId = experimenterId;
}
@@ -34,10 +34,14 @@ public ExperimenterIdSerializerKey(short msgVersion,
public int hashCode() {
final int prime = 31;
int result = super.hashCode();
- result = prime * result + ((experimenterId == null) ? 0 : experimenterId.hashCode());
+ result = prime * result + hashCodeOfLong(experimenterId);
return result;
}
+ protected int hashCodeOfLong(long longValue) {
+ return (int) (longValue ^ (longValue >>> 32));
+ }
+
@Override
public boolean equals(Object obj) {
if (this == obj) {
@@ -50,11 +54,7 @@ public boolean equals(Object obj) {
return false;
}
ExperimenterIdSerializerKey> other = (ExperimenterIdSerializerKey>) obj;
- if (experimenterId == null) {
- if (other.experimenterId != null) {
- return false;
- }
- } else if (!experimenterId.equals(other.experimenterId)) {
+ if (experimenterId != other.experimenterId) {
return false;
}
return true;
diff --git a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/keys/ExperimenterIdTypeDeserializerKey.java b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/keys/ExperimenterIdTypeDeserializerKey.java
new file mode 100644
index 00000000..c956feb0
--- /dev/null
+++ b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/keys/ExperimenterIdTypeDeserializerKey.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2014 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.api.keys;
+
+import org.opendaylight.yangtools.yang.binding.DataContainer;
+
+/**
+ * @author michal.polkorab
+ */
+public class ExperimenterIdTypeDeserializerKey extends ExperimenterIdDeserializerKey {
+
+ private long type;
+
+ /**
+ * @param type of target experimenter object
+ * @param version protocol wire version
+ * @param experimenterId experimenter / vendor ID
+ * @param type data type according to vendor implementation
+ * @param objectClass class of object to be serialized
+ */
+ public ExperimenterIdTypeDeserializerKey(final short version, final long experimenterId,
+ final long type, Class objectClass) {
+ super(version, experimenterId, objectClass);
+ this.type = type;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = super.hashCode();
+ result = prime * result + hashCodeOfLong(type);
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (!super.equals(obj)) {
+ return false;
+ }
+ if (!(obj instanceof ExperimenterIdTypeDeserializerKey)) {
+ return false;
+ }
+ ExperimenterIdTypeDeserializerKey other = (ExperimenterIdTypeDeserializerKey) obj;
+ if (type != other.type) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public String toString() {
+ return super.toString() + "; type: " + type;
+ }
+}
\ No newline at end of file
diff --git a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/keys/ExperimenterIdTypeSerializerKey.java b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/keys/ExperimenterIdTypeSerializerKey.java
new file mode 100644
index 00000000..b8f6ac93
--- /dev/null
+++ b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/keys/ExperimenterIdTypeSerializerKey.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2014 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.api.keys;
+
+import org.opendaylight.yangtools.yang.binding.DataContainer;
+
+/**
+ * @param class of object to be serialized
+ * @author michal.polkorab
+ */
+public class ExperimenterIdTypeSerializerKey extends ExperimenterIdSerializerKey {
+
+ private long type;
+
+ /**
+ * @param msgVersion protocol wire version
+ * @param experimenterId experimenter / vendor ID
+ * @param type data type according to vendor implementation
+ * @param objectClass class of object to be serialized
+ */
+ public ExperimenterIdTypeSerializerKey(short msgVersion,
+ long experimenterId, long type, Class objectClass) {
+ super(msgVersion, experimenterId, objectClass);
+ this.type = type;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = super.hashCode();
+ result = prime * result + hashCodeOfLong(type);
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (!super.equals(obj)) {
+ return false;
+ }
+ if (!(obj instanceof ExperimenterIdTypeSerializerKey)) {
+ return false;
+ }
+ ExperimenterIdTypeSerializerKey> other = (ExperimenterIdTypeSerializerKey>) obj;
+ if (type != other.type) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public String toString() {
+ return super.toString() + "; type: " + type;
+ }
+}
\ No newline at end of file
diff --git a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/keys/ExperimenterInstructionDeserializerKey.java b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/keys/ExperimenterInstructionDeserializerKey.java
index 45232a66..eea3e4ef 100644
--- a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/keys/ExperimenterInstructionDeserializerKey.java
+++ b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/keys/ExperimenterInstructionDeserializerKey.java
@@ -19,7 +19,7 @@ public final class ExperimenterInstructionDeserializerKey extends InstructionDes
/**
* @param version protocol wire version
- * @param experimenterId
+ * @param experimenterId experimenter (vendor) identifier
*/
public ExperimenterInstructionDeserializerKey(short version, Long experimenterId) {
super(version, EncodeConstants.EXPERIMENTER_VALUE, experimenterId);
diff --git a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/keys/InstructionDeserializerKey.java b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/keys/InstructionDeserializerKey.java
index 3a0bf982..8482f6ef 100644
--- a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/keys/InstructionDeserializerKey.java
+++ b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/keys/InstructionDeserializerKey.java
@@ -20,7 +20,7 @@ public class InstructionDeserializerKey extends MessageCodeKey {
/**
* @param version protocol wire version
* @param type instruction type
- * @param experimenterId
+ * @param experimenterId experimenter (vendor) identifier
*/
public InstructionDeserializerKey(short version, int type,
Long experimenterId) {
diff --git a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/keys/MessageCodeKey.java b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/keys/MessageCodeKey.java
index 6597c19a..566b3623 100644
--- a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/keys/MessageCodeKey.java
+++ b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/keys/MessageCodeKey.java
@@ -28,6 +28,14 @@ public MessageCodeKey(short version, int value, Class> clazz) {
this.clazz = clazz;
}
+ public int getMsgType() {
+ return this.msgType;
+ }
+
+ public Class> getClazz() {
+ return this.clazz;
+ }
+
@Override
public int hashCode() {
final int prime = 31;
diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/TypeToClassKey.java b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/keys/TypeToClassKey.java
similarity index 95%
rename from openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/TypeToClassKey.java
rename to openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/keys/TypeToClassKey.java
index 0f6b9caf..71eed094 100644
--- a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/TypeToClassKey.java
+++ b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/keys/TypeToClassKey.java
@@ -5,7 +5,7 @@
* 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;
+package org.opendaylight.openflowjava.protocol.api.keys;
/**
* @author michal.polkorab
diff --git a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/util/BinContent.java b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/util/BinContent.java
index 700fdf4d..995fd350 100644
--- a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/util/BinContent.java
+++ b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/util/BinContent.java
@@ -19,15 +19,15 @@ private BinContent() {
}
/**
- * @param value
- * @return int part wrapped in long
+ * @param value input integer value (might be negative)
+ * @return int part wrapped in long (always positive)
*/
public static long intToUnsignedLong(int value) {
return value & 0x00000000ffffffffL;
}
/**
- * @param value
+ * @param value input long value
* @return long cut into int
*/
public static int longToSignedInt(long value) {
diff --git a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/util/EncodeConstants.java b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/util/EncodeConstants.java
index 82a09282..58d6ccd4 100644
--- a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/util/EncodeConstants.java
+++ b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/util/EncodeConstants.java
@@ -9,7 +9,7 @@
package org.opendaylight.openflowjava.protocol.api.util;
/**
- * Stores common constants
+ * Stores common constants.
* @author michal.polkorab
*/
public abstract class EncodeConstants {
@@ -20,6 +20,14 @@ public abstract class EncodeConstants {
public static final byte OF10_VERSION_ID = 0x01;
/** OpenFlow v1.3 wire protocol number */
public static final byte OF13_VERSION_ID = 0x04;
+ /** OpenFlow v1.4 wire protocol number */
+ public static final byte OF14_VERSION_ID = 0x05;
+ /** OpenFlow v1.5 wire protocol number */
+ public static final byte OF15_VERSION_ID = 0x06;
+ /** OpenFlow Hello message type value */
+ public static final byte OF_HELLO_MESSAGE_TYPE_VALUE = 0;
+ /** OpenFlow PacketIn message type value */
+ public static final byte OF_PACKETIN_MESSAGE_TYPE_VALUE = 10;
/** Index of length in Openflow header */
public static final int OFHEADER_LENGTH_INDEX = 2;
/** Size of Openflow header */
@@ -52,11 +60,14 @@ public abstract class EncodeConstants {
/** Common experimenter value */
public static final int EXPERIMENTER_VALUE = 0xFFFF;
-
/** OF v1.0 maximal port name length */
public static final byte MAX_PORT_NAME_LENGTH = 16;
- /** OF v1.3 lenght of experimenter_ids - see Multipart TableFeatures (properties) message */
- public static final byte EXPERIMENTER_IDS_LENGTH = 8;
+
+ /** ONF Approved Extensions Constants */
+ /** Experimenter ID of ONF approved extensions */
+ public static final long ONF_EXPERIMENTER_ID = 0x4F4E4600;
+ /** ONFOXM_ET_TCP_FLAGS value */
+ public static final int ONFOXM_ET_TCP_FLAGS = 42;
private EncodeConstants() {
//not called
diff --git a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/util/OxmMatchConstants.java b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/util/OxmMatchConstants.java
index 3768f2f5..e47b70d6 100644
--- a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/util/OxmMatchConstants.java
+++ b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/util/OxmMatchConstants.java
@@ -8,9 +8,8 @@
package org.opendaylight.openflowjava.protocol.api.util;
/**
- * Stores oxm_match constants
+ * Stores oxm_match constants.
* @author michal.polkorab
- *
*/
public abstract class OxmMatchConstants {
diff --git a/openflow-protocol-api/src/main/yang/openflow-action.yang b/openflow-protocol-api/src/main/yang/openflow-action.yang
index 576a7f45..d2ae42f6 100644
--- a/openflow-protocol-api/src/main/yang/openflow-action.yang
+++ b/openflow-protocol-api/src/main/yang/openflow-action.yang
@@ -17,7 +17,7 @@
import openflow-extensible-match { prefix oxm;}
revision "2015-02-03" {
- description "OpenFlow 1.3 - action model";
+ description "#NOT_PUBLISHED# OpenFlow 1.3 - action model";
}
identity experimenter-action-sub-type {
diff --git a/openflow-protocol-api/src/main/yang/openflow-approved-extensions.yang b/openflow-protocol-api/src/main/yang/openflow-approved-extensions.yang
new file mode 100644
index 00000000..29a20351
--- /dev/null
+++ b/openflow-protocol-api/src/main/yang/openflow-approved-extensions.yang
@@ -0,0 +1,32 @@
+module openflow-approved-extensions {
+ namespace "urn:opendaylight:openflow:approved:extensions";
+ prefix "ofext";
+
+ import yang-ext {prefix ext;}
+ import openflow-extensible-match {prefix oxm;}
+ import openflow-augments {prefix aug;}
+
+ revision "2016-08-02" {
+ description "Openflow approved extensions definition";
+ }
+
+ //ONF Approved OpenFlow Extensions
+ // Extension 109 - TCP FLAGS
+ identity tcp_flags {
+ base oxm:match-field;
+ description "TCP flags from the TCP header";
+ }
+
+ augment "/oxm:oxm-container/oxm:match-entry-value/aug:experimenter-id-case" {
+ ext:augment-identifier "tcp-flags-container";
+ container tcp-flags {
+ leaf flags {
+ type uint16;
+ }
+ leaf mask {
+ type binary;
+ }
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/openflow-protocol-api/src/main/yang/openflow-augments.yang b/openflow-protocol-api/src/main/yang/openflow-augments.yang
old mode 100644
new mode 100755
index 34ca8c43..4a60c37e
--- a/openflow-protocol-api/src/main/yang/openflow-augments.yang
+++ b/openflow-protocol-api/src/main/yang/openflow-augments.yang
@@ -21,7 +21,7 @@
import openflow-extensible-match {prefix oxm;}
revision "2015-02-25" {
- description "OpenFlow 1.3 - augments model.
+ description "#NOT_PUBLISHED# OpenFlow 1.3 - augments model.
Please visit
https://wiki.opendaylight.org/view/File:OpenFlow_Protocol_Library_-_Project_documentation.pdf
- Augmentation Tables chapter";
@@ -121,31 +121,16 @@
}
}
-// OFP_MULTIPART AUGMENTS
- augment "/ofproto:multipart-request/input/ofproto:multipart-request-body/ofproto:multipart-request-experimenter-case/ofproto:multipart-request-experimenter" {
- ext:augment-identifier "experimenter-id-multipart-request";
- leaf experimenter {
- type oft:experimenter-id;
- }
- leaf exp-type {
- type uint32;
- }
- }
- augment "/ofproto:multipart-reply-message/ofproto:multipart-reply-body/ofproto:multipart-reply-experimenter-case/ofproto:multipart-reply-experimenter" {
- ext:augment-identifier "experimenter-id-multipart-reply";
- leaf experimenter {
- type oft:experimenter-id;
- }
- leaf exp-type {
- type uint32;
- }
- }
-
// OFP_METER_BAND AUGMENTS
augment "/ofproto:meter-band-container/ofproto:meter-band/ofproto:meter-band-experimenter-case/ofproto:meter-band-experimenter" {
ext:augment-identifier "experimenter-id-meter-band";
leaf experimenter {
type oft:experimenter-id;
}
+ leaf sub-type {
+ type identityref {
+ base oft:experimenter-meter-band-sub-type;
+ }
+ }
}
-}
\ No newline at end of file
+}
diff --git a/openflow-protocol-api/src/main/yang/openflow-extensible-match.yang b/openflow-protocol-api/src/main/yang/openflow-extensible-match.yang
index f9d3f6c3..f1f9e9b9 100644
--- a/openflow-protocol-api/src/main/yang/openflow-extensible-match.yang
+++ b/openflow-protocol-api/src/main/yang/openflow-extensible-match.yang
@@ -15,7 +15,7 @@
import openflow-types {prefix oft;}
revision "2015-02-25" {
- description "OpenFlow 1.3 - match model";
+ description "#NOT_PUBLISHED# OpenFlow 1.3 - match model";
}
identity oxm-match-type {
diff --git a/openflow-protocol-api/src/main/yang/openflow-instruction.yang b/openflow-protocol-api/src/main/yang/openflow-instruction.yang
index a58fc349..b9e515b3 100644
--- a/openflow-protocol-api/src/main/yang/openflow-instruction.yang
+++ b/openflow-protocol-api/src/main/yang/openflow-instruction.yang
@@ -14,7 +14,7 @@
import openflow-action {prefix ofaction;}
revision "2013-07-31" {
- description "OpenFlow 1.3 - instruction model";
+ description "#NOT_PUBLISHED# OpenFlow 1.3 - instruction model";
}
container instruction-container {
diff --git a/openflow-protocol-api/src/main/yang/openflow-protocol.yang b/openflow-protocol-api/src/main/yang/openflow-protocol.yang
index 9c9dbf0e..7e42a2b9 100644
--- a/openflow-protocol-api/src/main/yang/openflow-protocol.yang
+++ b/openflow-protocol-api/src/main/yang/openflow-protocol.yang
@@ -18,7 +18,7 @@
import openflow-action {prefix ofaction;}
revision "2013-07-31" {
- description "OpenFlow 1.3 - protocol objects model";
+ description "#NOT_PUBLISHED# OpenFlow 1.3 - protocol objects model";
}
// Generic Structures
@@ -207,18 +207,26 @@
type binary;
}
}
- grouping experimenter {
- reference "OFPT_EXPERIMENTER message in Openflow Switch 1.3 Spec";
- /* Symmetric message */
- uses ofHeader;
+ grouping experimenter-core {
+ description "General experimenter message content suitable for symmetric and multipart message";
leaf experimenter {
type oft:experimenter-id;
}
leaf exp_type {
type uint32;
}
+ choice experimenter-data-of-choice {
+ // to be augmented by vendors
+ }
}
+ grouping experimenter-of-message {
+ reference "OFPT_EXPERIMENTER message in Openflow Switch 1.3 Spec";
+ /* Symmetric message */
+ uses ofHeader;
+ uses experimenter-core;
+ }
+
/* Switch configuration messages. */
grouping features-request {
reference "OFPT_FEATURES_REQUEST message in Openflow Switch 1.3 Spec";
@@ -678,7 +686,7 @@
}
case multipart-request-experimenter-case {
container multipart-request-experimenter {
- // empty body - used for experimenter augmentation
+ uses experimenter-core;
}
}
}
@@ -1045,7 +1053,7 @@
}
case multipart-reply-experimenter-case {
container multipart-reply-experimenter {
- // empty body - used for experimenter augmentation
+ uses experimenter-core;
}
}
}
@@ -1250,7 +1258,8 @@
/* Symmetric message */
}
notification experimenter-message {
- uses experimenter;
+ description "Experimenter request message from device.";
+ uses experimenter-of-message;
reference "OFPT_EXPERIMENTER message in Openflow Switch 1.3 Spec";
// TODO:: does switch send this when understood experimenter msg from lib?
/* Symmetric message */
@@ -1280,8 +1289,9 @@
}
rpc experimenter {
+ description "Send experimenter message to device, reply is not solicitated.";
input {
- uses experimenter;
+ uses experimenter-of-message;
}
}
diff --git a/openflow-protocol-api/src/main/yang/openflow-types.yang b/openflow-protocol-api/src/main/yang/openflow-types.yang
old mode 100644
new mode 100755
index be0e9f5d..7d11bafa
--- a/openflow-protocol-api/src/main/yang/openflow-types.yang
+++ b/openflow-protocol-api/src/main/yang/openflow-types.yang
@@ -11,7 +11,7 @@
prefix "oft";
revision "2013-07-31" {
- description "OpenFlow 1.3 - common types model";
+ description "#NOT_PUBLISHED# OpenFlow 1.3 - common types model";
}
typedef port-number {
@@ -206,6 +206,10 @@
description "Base identity for action types";
}
+ identity experimenter-meter-band-sub-type {
+ description "The base identity for vendor's meter bands.";
+ }
+
typedef metadata {
type binary;
}
diff --git a/openflow-protocol-api/src/main/yang/system-notifications.yang b/openflow-protocol-api/src/main/yang/system-notifications.yang
index b31dd02b..5bd805c3 100644
--- a/openflow-protocol-api/src/main/yang/system-notifications.yang
+++ b/openflow-protocol-api/src/main/yang/system-notifications.yang
@@ -11,7 +11,7 @@
prefix "ofs";
revision "2013-09-27" {
- description "Model of system messages used in OpenFlow Protocol Library";
+ description "#NOT_PUBLISHED# Model of system messages used in OpenFlow Protocol Library";
}
notification disconnect-event {
diff --git a/openflow-protocol-api/src/test/java/org/opendaylight/openflowjava/protocol/api/connection/TlsConfigurationImplTest.java b/openflow-protocol-api/src/test/java/org/opendaylight/openflowjava/protocol/api/connection/TlsConfigurationImplTest.java
index f71d2302..be52a188 100644
--- a/openflow-protocol-api/src/test/java/org/opendaylight/openflowjava/protocol/api/connection/TlsConfigurationImplTest.java
+++ b/openflow-protocol-api/src/test/java/org/opendaylight/openflowjava/protocol/api/connection/TlsConfigurationImplTest.java
@@ -10,10 +10,14 @@
import static org.junit.Assert.*;
+import java.util.List;
+
import org.junit.Test;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.config.rev140630.KeystoreType;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.config.rev140630.PathType;
+import com.google.common.collect.Lists;
+
/**
* @author michal.polkorab
*
@@ -25,8 +29,9 @@ public class TlsConfigurationImplTest {
*/
@Test
public void test() {
+ List cipherSuites = Lists.newArrayList("TLS_RSA_WITH_AES_128_CBC_SHA", "TLS_RSA_WITH_AES_128_CBC_SHA256");
TlsConfigurationImpl config = new TlsConfigurationImpl(KeystoreType.JKS,
- "user/dir", PathType.CLASSPATH, KeystoreType.PKCS12, "/var/lib", PathType.PATH);
+ "user/dir", PathType.CLASSPATH, KeystoreType.PKCS12, "/var/lib", PathType.PATH, cipherSuites);
assertEquals("Wrong keystore location", "/var/lib", config.getTlsKeystore());
assertEquals("Wrong truststore location", "user/dir", config.getTlsTruststore());
assertEquals("Wrong keystore type", KeystoreType.PKCS12, config.getTlsKeystoreType());
@@ -36,5 +41,6 @@ public void test() {
assertEquals("Wrong certificate password", "opendaylight", config.getCertificatePassword());
assertEquals("Wrong keystore password", "opendaylight", config.getKeystorePassword());
assertEquals("Wrong truststore password", "opendaylight", config.getTruststorePassword());
+ assertEquals("Wrong cipher suites", cipherSuites, config.getCipherSuites());
}
}
\ No newline at end of file
diff --git a/openflow-protocol-api/src/test/java/org/opendaylight/openflowjava/protocol/api/keys/KeysTest.java b/openflow-protocol-api/src/test/java/org/opendaylight/openflowjava/protocol/api/keys/KeysTest.java
index c23d4b3c..d2aefedb 100644
--- a/openflow-protocol-api/src/test/java/org/opendaylight/openflowjava/protocol/api/keys/KeysTest.java
+++ b/openflow-protocol-api/src/test/java/org/opendaylight/openflowjava/protocol/api/keys/KeysTest.java
@@ -1,3 +1,10 @@
+/*
+ * Copyright (c) 2014 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.api.keys;
import org.junit.Assert;
diff --git a/openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/deserialization/TypeToClassKeyTest.java b/openflow-protocol-api/src/test/java/org/opendaylight/openflowjava/protocol/api/keys/TypeToClassKeyTest.java
similarity index 90%
rename from openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/deserialization/TypeToClassKeyTest.java
rename to openflow-protocol-api/src/test/java/org/opendaylight/openflowjava/protocol/api/keys/TypeToClassKeyTest.java
index a9ebcf43..8b6192d3 100644
--- a/openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/deserialization/TypeToClassKeyTest.java
+++ b/openflow-protocol-api/src/test/java/org/opendaylight/openflowjava/protocol/api/keys/TypeToClassKeyTest.java
@@ -6,12 +6,11 @@
* 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.keys;
import org.junit.Assert;
import org.junit.Test;
import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
-import org.opendaylight.openflowjava.protocol.impl.util.TypeToClassKey;
/**
*
* @author madamjak
diff --git a/openflow-protocol-api/src/test/java/org/opendaylight/openflowjava/protocol/api/keys/experimenter/ExperimenterIdDeserializerKeyTest.java b/openflow-protocol-api/src/test/java/org/opendaylight/openflowjava/protocol/api/keys/experimenter/ExperimenterIdDeserializerKeyTest.java
index eb71029a..d7f61084 100644
--- a/openflow-protocol-api/src/test/java/org/opendaylight/openflowjava/protocol/api/keys/experimenter/ExperimenterIdDeserializerKeyTest.java
+++ b/openflow-protocol-api/src/test/java/org/opendaylight/openflowjava/protocol/api/keys/experimenter/ExperimenterIdDeserializerKeyTest.java
@@ -36,7 +36,7 @@ public void test() {
key2 = new ExperimenterIdDeserializerKey(EncodeConstants.OF13_VERSION_ID, 42L, ExperimenterMessage.class);
Assert.assertFalse("Wrong equals", key1.equals(key2));
Assert.assertFalse("Wrong hashcode", key1.hashCode() == key2.hashCode());
- key2 = new ExperimenterIdDeserializerKey(EncodeConstants.OF10_VERSION_ID, null, ExperimenterMessage.class);
+ key2 = new ExperimenterIdDeserializerKey(EncodeConstants.OF10_VERSION_ID, 0L, ExperimenterMessage.class);
Assert.assertFalse("Wrong equals", key1.equals(key2));
Assert.assertFalse("Wrong hashcode", key1.hashCode() == key2.hashCode());
key2 = new ExperimenterIdDeserializerKey(EncodeConstants.OF10_VERSION_ID, 55L, ExperimenterMessage.class);
@@ -56,7 +56,7 @@ public void test() {
@Test
public void testEquals() {
ExperimenterIdDeserializerKey key1 =
- new ExperimenterIdDeserializerKey(EncodeConstants.OF10_VERSION_ID, null, ExperimenterMessage.class);
+ new ExperimenterIdDeserializerKey(EncodeConstants.OF10_VERSION_ID, 0L, ExperimenterMessage.class);
Assert.assertTrue("Wrong equal to identical object.", key1.equals(key1));
MessageCodeKey mk = new MessageCodeKey(EncodeConstants.OF10_VERSION_ID,EncodeConstants.EXPERIMENTER_VALUE, ExperimenterMessage.class);
Assert.assertFalse("Wrong equal to different class.", key1.equals(mk));
diff --git a/openflow-protocol-api/src/test/java/org/opendaylight/openflowjava/protocol/api/keys/experimenter/ExperimenterIdSerializerKeyTest.java b/openflow-protocol-api/src/test/java/org/opendaylight/openflowjava/protocol/api/keys/experimenter/ExperimenterIdSerializerKeyTest.java
index aa5d1275..a3bf7891 100644
--- a/openflow-protocol-api/src/test/java/org/opendaylight/openflowjava/protocol/api/keys/experimenter/ExperimenterIdSerializerKeyTest.java
+++ b/openflow-protocol-api/src/test/java/org/opendaylight/openflowjava/protocol/api/keys/experimenter/ExperimenterIdSerializerKeyTest.java
@@ -26,7 +26,7 @@ public class ExperimenterIdSerializerKeyTest {
* Test ExperimenterIdSerializerKey equals and hashCode
*/
@Test
- public void test() {
+ public void testHashCodeAndEquals() {
ExperimenterIdSerializerKey> key1 =
new ExperimenterIdSerializerKey<>(EncodeConstants.OF10_VERSION_ID, 42L, ExperimenterMessage.class);
ExperimenterIdSerializerKey> key2 =
@@ -36,9 +36,6 @@ public void test() {
key2 = new ExperimenterIdSerializerKey<>(EncodeConstants.OF13_VERSION_ID, 42L, ExperimenterMessage.class);
Assert.assertFalse("Wrong equals", key1.equals(key2));
Assert.assertFalse("Wrong hashcode", key1.hashCode() == key2.hashCode());
- key2 = new ExperimenterIdSerializerKey<>(EncodeConstants.OF10_VERSION_ID, null, ExperimenterMessage.class);
- Assert.assertFalse("Wrong equals", key1.equals(key2));
- Assert.assertFalse("Wrong hashcode", key1.hashCode() == key2.hashCode());
key2 = new ExperimenterIdSerializerKey<>(EncodeConstants.OF10_VERSION_ID, 55L, ExperimenterMessage.class);
Assert.assertFalse("Wrong equals", key1.equals(key2));
Assert.assertFalse("Wrong hashcode", key1.hashCode() == key2.hashCode());
@@ -56,7 +53,7 @@ public void test() {
@Test
public void testEquals() {
ExperimenterIdSerializerKey> key1 =
- new ExperimenterIdSerializerKey<>(EncodeConstants.OF10_VERSION_ID, null, ExperimenterMessage.class);
+ new ExperimenterIdSerializerKey<>(EncodeConstants.OF10_VERSION_ID, 41L, ExperimenterMessage.class);
Assert.assertTrue("Wrong equal to identical object.", key1.equals(key1));
MessageTypeKey>mk = new MessageTypeKey<>(EncodeConstants.OF10_VERSION_ID,ExperimenterMessage.class);
Assert.assertFalse("Wrong equal to different class.", key1.equals(mk));
diff --git a/openflow-protocol-api/src/test/java/org/opendaylight/openflowjava/protocol/api/keys/experimenter/ExperimenterIdTypeDeserializerKeyTest.java b/openflow-protocol-api/src/test/java/org/opendaylight/openflowjava/protocol/api/keys/experimenter/ExperimenterIdTypeDeserializerKeyTest.java
new file mode 100644
index 00000000..7405b773
--- /dev/null
+++ b/openflow-protocol-api/src/test/java/org/opendaylight/openflowjava/protocol/api/keys/experimenter/ExperimenterIdTypeDeserializerKeyTest.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2014 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.api.keys.experimenter;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.opendaylight.openflowjava.protocol.api.keys.ExperimenterIdSerializerKey;
+import org.opendaylight.openflowjava.protocol.api.keys.ExperimenterIdTypeDeserializerKey;
+import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ErrorMessage;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ExperimenterMessage;
+
+/**
+ * @author michal.polkorab
+ */
+public class ExperimenterIdTypeDeserializerKeyTest {
+
+ /**
+ * Test ExperimenterIdTypeDeserializerKey equals and hashCode
+ */
+ @Test
+ public void testHashCodeAndEquals() {
+ ExperimenterIdTypeDeserializerKey key1 =
+ new ExperimenterIdTypeDeserializerKey(EncodeConstants.OF10_VERSION_ID, 42L, 1L, ExperimenterMessage.class);
+ ExperimenterIdTypeDeserializerKey key2 =
+ new ExperimenterIdTypeDeserializerKey(EncodeConstants.OF10_VERSION_ID, 42L, 1L, ExperimenterMessage.class);
+ Assert.assertTrue("Wrong equals", key1.equals(key2));
+ Assert.assertTrue("Wrong hashcode", key1.hashCode() == key2.hashCode());
+ key2 = new ExperimenterIdTypeDeserializerKey(EncodeConstants.OF13_VERSION_ID, 42L, 1L, ExperimenterMessage.class);
+ Assert.assertFalse("Wrong equals", key1.equals(key2));
+ Assert.assertFalse("Wrong hashcode", key1.hashCode() == key2.hashCode());
+ key2 = new ExperimenterIdTypeDeserializerKey(EncodeConstants.OF10_VERSION_ID, 55L, 1L, ExperimenterMessage.class);
+ Assert.assertFalse("Wrong equals", key1.equals(key2));
+ Assert.assertFalse("Wrong hashcode", key1.hashCode() == key2.hashCode());
+ key2 = new ExperimenterIdTypeDeserializerKey(EncodeConstants.OF10_VERSION_ID, 55L, 1L, null);
+ Assert.assertFalse("Wrong equals", key1.equals(key2));
+ Assert.assertFalse("Wrong hashcode", key1.hashCode() == key2.hashCode());
+ key2 = new ExperimenterIdTypeDeserializerKey(EncodeConstants.OF10_VERSION_ID, 55L, 1L, ErrorMessage.class);
+ Assert.assertFalse("Wrong equals", key1.equals(key2));
+ Assert.assertFalse("Wrong hashcode", key1.hashCode() == key2.hashCode());
+
+ key2 = new ExperimenterIdTypeDeserializerKey(EncodeConstants.OF10_VERSION_ID, 42L, 2L, ExperimenterMessage.class);
+ Assert.assertFalse("Wrong equals", key1.equals(key2));
+ Assert.assertFalse("Wrong hashcode", key1.hashCode() == key2.hashCode());
+ }
+
+ /**
+ * Test ExperimenterIdTypeDeserializerKey equals - additional test
+ */
+ @Test
+ public void testEquals() {
+ ExperimenterIdTypeDeserializerKey key1 =
+ new ExperimenterIdTypeDeserializerKey(EncodeConstants.OF10_VERSION_ID, 41L, 1L, ExperimenterMessage.class);
+ Assert.assertTrue("Wrong equal to identical object.", key1.equals(key1));
+ ExperimenterIdSerializerKey> mk = new ExperimenterIdSerializerKey<>(EncodeConstants.OF10_VERSION_ID, 42L, ExperimenterMessage.class);
+ Assert.assertFalse("Wrong equal to different class.", key1.equals(mk));
+ ExperimenterIdTypeDeserializerKey key2 =
+ new ExperimenterIdTypeDeserializerKey(EncodeConstants.OF10_VERSION_ID, 42L, 1L, ExperimenterMessage.class);
+ Assert.assertFalse("Wrong equal by experimenterId.", key1.equals(key2));
+
+ ExperimenterIdTypeDeserializerKey key3 =
+ new ExperimenterIdTypeDeserializerKey(EncodeConstants.OF10_VERSION_ID, 41L, 2L, ExperimenterMessage.class);
+ Assert.assertFalse("Wrong equal by type.", key1.equals(key3));
+ }
+
+}
\ No newline at end of file
diff --git a/openflow-protocol-api/src/test/java/org/opendaylight/openflowjava/protocol/api/keys/experimenter/ExperimenterIdTypeSerializerKeyTest.java b/openflow-protocol-api/src/test/java/org/opendaylight/openflowjava/protocol/api/keys/experimenter/ExperimenterIdTypeSerializerKeyTest.java
new file mode 100644
index 00000000..a613d0d8
--- /dev/null
+++ b/openflow-protocol-api/src/test/java/org/opendaylight/openflowjava/protocol/api/keys/experimenter/ExperimenterIdTypeSerializerKeyTest.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2014 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.api.keys.experimenter;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.opendaylight.openflowjava.protocol.api.keys.ExperimenterIdSerializerKey;
+import org.opendaylight.openflowjava.protocol.api.keys.ExperimenterIdTypeSerializerKey;
+import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ErrorMessage;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ExperimenterMessage;
+
+/**
+ * @author michal.polkorab
+ */
+public class ExperimenterIdTypeSerializerKeyTest {
+
+ /**
+ * Test ExperimenterIdTypeSerializerKey equals and hashCode
+ */
+ @Test
+ public void testHashCodeAndEquals() {
+ ExperimenterIdTypeSerializerKey> key1 =
+ new ExperimenterIdTypeSerializerKey<>(EncodeConstants.OF10_VERSION_ID, 42L, 1L, ExperimenterMessage.class);
+ ExperimenterIdTypeSerializerKey> key2 =
+ new ExperimenterIdTypeSerializerKey<>(EncodeConstants.OF10_VERSION_ID, 42L, 1L, ExperimenterMessage.class);
+ Assert.assertTrue("Wrong equals", key1.equals(key2));
+ Assert.assertTrue("Wrong hashcode", key1.hashCode() == key2.hashCode());
+ key2 = new ExperimenterIdTypeSerializerKey<>(EncodeConstants.OF13_VERSION_ID, 42L, 1L, ExperimenterMessage.class);
+ Assert.assertFalse("Wrong equals", key1.equals(key2));
+ Assert.assertFalse("Wrong hashcode", key1.hashCode() == key2.hashCode());
+ key2 = new ExperimenterIdTypeSerializerKey<>(EncodeConstants.OF10_VERSION_ID, 55L, 1L, ExperimenterMessage.class);
+ Assert.assertFalse("Wrong equals", key1.equals(key2));
+ Assert.assertFalse("Wrong hashcode", key1.hashCode() == key2.hashCode());
+ key2 = new ExperimenterIdTypeSerializerKey<>(EncodeConstants.OF10_VERSION_ID, 55L, 1L, null);
+ Assert.assertFalse("Wrong equals", key1.equals(key2));
+ Assert.assertFalse("Wrong hashcode", key1.hashCode() == key2.hashCode());
+ key2 = new ExperimenterIdTypeSerializerKey<>(EncodeConstants.OF10_VERSION_ID, 55L, 1L, ErrorMessage.class);
+ Assert.assertFalse("Wrong equals", key1.equals(key2));
+ Assert.assertFalse("Wrong hashcode", key1.hashCode() == key2.hashCode());
+
+ key2 = new ExperimenterIdTypeSerializerKey<>(EncodeConstants.OF10_VERSION_ID, 42L, 2L, ExperimenterMessage.class);
+ Assert.assertFalse("Wrong equals", key1.equals(key2));
+ Assert.assertFalse("Wrong hashcode", key1.hashCode() == key2.hashCode());
+ }
+
+ /**
+ * Test ExperimenterIdTypeSerializerKey equals - additional test
+ */
+ @Test
+ public void testEquals() {
+ ExperimenterIdTypeSerializerKey> key1 =
+ new ExperimenterIdTypeSerializerKey<>(EncodeConstants.OF10_VERSION_ID, 41L, 1L, ExperimenterMessage.class);
+ Assert.assertTrue("Wrong equal to identical object.", key1.equals(key1));
+ ExperimenterIdSerializerKey> mk = new ExperimenterIdSerializerKey<>(EncodeConstants.OF10_VERSION_ID, 42L, ExperimenterMessage.class);
+ Assert.assertFalse("Wrong equal to different class.", key1.equals(mk));
+ ExperimenterIdTypeSerializerKey> key2 =
+ new ExperimenterIdTypeSerializerKey<>(EncodeConstants.OF10_VERSION_ID, 42L, 1L, ExperimenterMessage.class);
+ Assert.assertFalse("Wrong equal by experimenterId.", key1.equals(key2));
+
+ ExperimenterIdTypeSerializerKey> key3 =
+ new ExperimenterIdTypeSerializerKey<>(EncodeConstants.OF10_VERSION_ID, 41L, 2L, ExperimenterMessage.class);
+ Assert.assertFalse("Wrong equal by type.", key1.equals(key3));
+ }
+
+}
\ No newline at end of file
diff --git a/openflow-protocol-impl/pom.xml b/openflow-protocol-impl/pom.xml
index 0a4f2fe8..62c2ddd3 100644
--- a/openflow-protocol-impl/pom.xml
+++ b/openflow-protocol-impl/pom.xml
@@ -2,12 +2,15 @@
4.0.0
org.opendaylight.openflowjava
- openflow-protocol-parent
- 0.7.0-SNAPSHOT
+ openflowjava-parent
+ 0.10.0-SNAPSHOT
+ ../parent
openflow-protocol-impl
bundle
- Openflow Protocol Library - IMPL
+
+ ODL :: openflowjava :: ${project.artifactId}
https://wiki.opendaylight.org/view/Openflow_Protocol_Library:Main
HEAD
@@ -51,12 +54,12 @@
- org.opendaylight.yangtools.maven.sal.api.gen.plugin.CodeGeneratorImpl
+ org.opendaylight.mdsal.binding.maven.api.gen.plugin.CodeGeneratorImpl
${salGeneratorPath}
- org.opendaylight.yangtools.yang.unified.doc.generator.maven.DocumentationGeneratorImpl
+ org.opendaylight.mdsal.binding.yang.unified.doc.generator.maven.DocumentationGeneratorImpl
${project.build.directory}/site/models
@@ -71,9 +74,9 @@
${config.version}
- org.opendaylight.yangtools
+ org.opendaylight.mdsal
maven-sal-api-gen-plugin
- ${yangtools.version}
+ ${mdsal.model.version}
jar
@@ -103,7 +106,7 @@
org.opendaylight.openflowjava
- util
+ openflowjava-util
org.opendaylight.controller
@@ -143,11 +146,17 @@
org.mockito
- mockito-all
+ mockito-core
org.opendaylight.controller
config-api
+
+ io.netty
+ netty-transport-native-epoll
+
+ linux-x86_64
+
diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/ChannelInitializerFactory.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/ChannelInitializerFactory.java
index 042d4640..414f2c25 100644
--- a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/ChannelInitializerFactory.java
+++ b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/ChannelInitializerFactory.java
@@ -24,17 +24,19 @@ public class ChannelInitializerFactory {
private SerializationFactory serializationFactory;
private TlsConfiguration tlsConfig;
private SwitchConnectionHandler switchConnectionHandler;
+ private boolean useBarrier;
/**
* @return PublishingChannelInitializer that initializes new channels
*/
public TcpChannelInitializer createPublishingChannelInitializer() {
- TcpChannelInitializer initializer = new TcpChannelInitializer();
+ final TcpChannelInitializer initializer = new TcpChannelInitializer();
initializer.setSwitchIdleTimeout(switchIdleTimeOut);
initializer.setDeserializationFactory(deserializationFactory);
initializer.setSerializationFactory(serializationFactory);
initializer.setTlsConfiguration(tlsConfig);
initializer.setSwitchConnectionHandler(switchConnectionHandler);
+ initializer.setUseBarrier(useBarrier);
return initializer;
}
@@ -42,7 +44,7 @@ public TcpChannelInitializer createPublishingChannelInitializer() {
* @return PublishingChannelInitializer that initializes new channels
*/
public UdpChannelInitializer createUdpChannelInitializer() {
- UdpChannelInitializer initializer = new UdpChannelInitializer();
+ final UdpChannelInitializer initializer = new UdpChannelInitializer();
initializer.setSwitchIdleTimeout(switchIdleTimeOut);
initializer.setDeserializationFactory(deserializationFactory);
initializer.setSerializationFactory(serializationFactory);
@@ -53,35 +55,42 @@ public UdpChannelInitializer createUdpChannelInitializer() {
/**
* @param switchIdleTimeOut
*/
- public void setSwitchIdleTimeout(long switchIdleTimeOut) {
+ public void setSwitchIdleTimeout(final long switchIdleTimeOut) {
this.switchIdleTimeOut = switchIdleTimeOut;
}
/**
* @param deserializationFactory
*/
- public void setDeserializationFactory(DeserializationFactory deserializationFactory) {
+ public void setDeserializationFactory(final DeserializationFactory deserializationFactory) {
this.deserializationFactory = deserializationFactory;
}
/**
* @param serializationFactory
*/
- public void setSerializationFactory(SerializationFactory serializationFactory) {
+ public void setSerializationFactory(final SerializationFactory serializationFactory) {
this.serializationFactory = serializationFactory;
}
/**
* @param tlsConfig
*/
- public void setTlsConfig(TlsConfiguration tlsConfig) {
+ public void setTlsConfig(final TlsConfiguration tlsConfig) {
this.tlsConfig = tlsConfig;
}
/**
* @param switchConnectionHandler
*/
- public void setSwitchConnectionHandler(SwitchConnectionHandler switchConnectionHandler) {
+ public void setSwitchConnectionHandler(final SwitchConnectionHandler switchConnectionHandler) {
this.switchConnectionHandler = switchConnectionHandler;
}
+
+ /**
+ * @param useBarrier
+ */
+ public void setUseBarrier(final boolean useBarrier) {
+ this.useBarrier = useBarrier;
+ }
}
\ No newline at end of file
diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/ConnectionInitializer.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/ConnectionInitializer.java
index 4959edaa..1e95c65c 100644
--- a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/ConnectionInitializer.java
+++ b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/ConnectionInitializer.java
@@ -1,3 +1,11 @@
+/*
+ * Copyright (c) 2015 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.core;
/**
diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/DelegatingInboundHandler.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/DelegatingInboundHandler.java
index e0a013c1..b0fee5c3 100644
--- a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/DelegatingInboundHandler.java
+++ b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/DelegatingInboundHandler.java
@@ -8,9 +8,9 @@
package org.opendaylight.openflowjava.protocol.impl.core;
+import com.google.common.base.Preconditions;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;
-
import org.opendaylight.openflowjava.protocol.impl.core.connection.ConnectionAdapterImpl;
import org.opendaylight.openflowjava.protocol.impl.core.connection.MessageConsumer;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.system.rev130927.DisconnectEventBuilder;
@@ -18,8 +18,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.google.common.base.Preconditions;
-
/**
* Holds reference to {@link ConnectionAdapterImpl} and passes messages for further processing.
* Also informs on switch disconnection.
@@ -27,17 +25,16 @@
*/
public class DelegatingInboundHandler extends ChannelInboundHandlerAdapter {
- private static final Logger LOGGER = LoggerFactory.getLogger(DelegatingInboundHandler.class);
-
+ private static final Logger LOG = LoggerFactory.getLogger(DelegatingInboundHandler.class);
private final MessageConsumer consumer;
private boolean inactiveMessageSent = false;
/**
- * Constructs class + creates and sets MessageConsumer
+ * Constructs class + creates and sets MessageConsumer.
* @param connectionAdapter reference for adapter communicating with upper layers outside library
*/
public DelegatingInboundHandler(final MessageConsumer connectionAdapter) {
- LOGGER.trace("Creating DelegatingInboundHandler");
+ LOG.trace("Creating DelegatingInboundHandler");
consumer = Preconditions.checkNotNull(connectionAdapter);
}
@@ -48,7 +45,7 @@ public void channelRead(final ChannelHandlerContext ctx, final Object msg) {
@Override
public void channelInactive(final ChannelHandlerContext ctx) {
- LOGGER.debug("Channel inactive");
+ LOG.debug("Channel inactive");
if (!inactiveMessageSent) {
DisconnectEventBuilder builder = new DisconnectEventBuilder();
builder.setInfo("Channel inactive");
@@ -59,7 +56,7 @@ public void channelInactive(final ChannelHandlerContext ctx) {
@Override
public void channelUnregistered(final ChannelHandlerContext ctx) {
- LOGGER.debug("Channel unregistered");
+ LOG.debug("Channel unregistered");
if (!inactiveMessageSent) {
DisconnectEventBuilder builder = new DisconnectEventBuilder();
builder.setInfo("Channel unregistered");
diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/IdleHandler.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/IdleHandler.java
index 9b6e863d..5f408e6c 100644
--- a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/IdleHandler.java
+++ b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/IdleHandler.java
@@ -23,7 +23,7 @@
*/
public class IdleHandler extends ReadTimeoutHandler {
- private static final Logger LOGGER = LoggerFactory.getLogger(IdleHandler.class);
+ private static final Logger LOG = LoggerFactory.getLogger(IdleHandler.class);
private boolean first = true;
/**
@@ -43,7 +43,7 @@ public void channelRead(final ChannelHandlerContext ctx, final Object msg) throw
@Override
protected void readTimedOut(final ChannelHandlerContext ctx) throws Exception {
if (first) {
- LOGGER.debug("Switch idle");
+ LOG.debug("Switch idle");
SwitchIdleEventBuilder builder = new SwitchIdleEventBuilder();
builder.setInfo("Switch idle");
ctx.fireChannelRead(builder.build());
diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/OFDatagramPacketDecoder.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/OFDatagramPacketDecoder.java
index 3a083eea..261beb9c 100644
--- a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/OFDatagramPacketDecoder.java
+++ b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/OFDatagramPacketDecoder.java
@@ -23,27 +23,27 @@
*/
public class OFDatagramPacketDecoder extends SimpleChannelInboundHandler{
- private static final Logger LOGGER = LoggerFactory.getLogger(OFDatagramPacketDecoder.class);
+ private static final Logger LOG = LoggerFactory.getLogger(OFDatagramPacketDecoder.class);
private DeserializationFactory deserializationFactory;
@Override
public void channelRead0(final ChannelHandlerContext ctx, final VersionMessageUdpWrapper msg)
throws Exception {
- if (LOGGER.isDebugEnabled()) {
- LOGGER.debug("UdpVersionMessageWrapper received");
- LOGGER.debug("<< {}", ByteBufUtils.byteBufToHexString(msg.getMessageBuffer()));
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("UdpVersionMessageWrapper received");
+ LOG.debug("<< {}", ByteBufUtils.byteBufToHexString(msg.getMessageBuffer()));
}
try {
final DataObject dataObject = deserializationFactory.deserialize(msg.getMessageBuffer(),msg.getVersion());
if (dataObject == null) {
- LOGGER.warn("Translated POJO is null");
+ LOG.warn("Translated POJO is null");
} else {
MessageConsumer consumer = UdpConnectionMap.getMessageConsumer(msg.getAddress());
consumer.consume(dataObject);
}
} catch(Exception e) {
- LOGGER.warn("Message deserialization failed", e);
+ LOG.warn("Message deserialization failed", e);
// TODO: delegate exception to allow easier deserialization
// debugging / deserialization problem awareness
} finally {
diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/OFDatagramPacketEncoder.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/OFDatagramPacketEncoder.java
index 73a7a00e..8b1faef3 100644
--- a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/OFDatagramPacketEncoder.java
+++ b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/OFDatagramPacketEncoder.java
@@ -28,19 +28,19 @@
*/
public class OFDatagramPacketEncoder extends MessageToMessageEncoder {
- private static final Logger LOGGER = LoggerFactory.getLogger(OFDatagramPacketEncoder.class);
+ private static final Logger LOG = LoggerFactory.getLogger(OFDatagramPacketEncoder.class);
private SerializationFactory serializationFactory;
@Override
protected void encode(ChannelHandlerContext ctx,
UdpMessageListenerWrapper wrapper, List