Merge "Spec: OFPGC_ADD_OR_MOD support in openflowplugin"
[openflowplugin.git] / openflowplugin-impl / src / test / java / org / opendaylight / openflowplugin / impl / protocol / serialization / AbstractSerializerTest.java
1 /*
2  * Copyright (c) 2016 Pantheon Technologies s.r.o. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8
9 package org.opendaylight.openflowplugin.impl.protocol.serialization;
10
11 import org.junit.Before;
12 import org.opendaylight.openflowjava.protocol.api.extensibility.OFGeneralSerializer;
13 import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
14 import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerExtensionProvider;
15 import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;
16 import org.opendaylight.openflowjava.protocol.api.keys.ActionSerializerKey;
17 import org.opendaylight.openflowjava.protocol.api.keys.ExperimenterIdMeterSubTypeSerializerKey;
18 import org.opendaylight.openflowjava.protocol.api.keys.ExperimenterIdSerializerKey;
19 import org.opendaylight.openflowjava.protocol.api.keys.ExperimenterSerializerKey;
20 import org.opendaylight.openflowjava.protocol.api.keys.InstructionSerializerKey;
21 import org.opendaylight.openflowjava.protocol.api.keys.MatchEntrySerializerKey;
22 import org.opendaylight.openflowjava.protocol.api.keys.MessageTypeKey;
23 import org.opendaylight.openflowjava.protocol.impl.serialization.SerializerRegistryImpl;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MatchField;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.OxmClassBase;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.experimenter.core.ExperimenterDataOfChoice;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandExperimenterCase;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.table.features.properties.grouping.TableFeatureProperties;
29
30 public abstract class AbstractSerializerTest {
31     private SerializerExtensionProvider provider;
32     private SerializerRegistry registry;
33
34     @Before
35     public void setUp() throws Exception {
36         registry = new SerializerRegistryImpl();
37         registry.init();
38         provider = new SerializerExtensionProviderImpl(registry);
39         SerializerInjector.injectSerializers(provider, false);
40         init();
41     }
42
43     protected SerializerRegistry getRegistry() {
44         return registry;
45     }
46
47     protected SerializerExtensionProvider getProvider() {
48         return provider;
49     }
50
51     protected abstract void init();
52
53     private static class SerializerExtensionProviderImpl implements SerializerExtensionProvider {
54
55         private final SerializerRegistry registry;
56
57         SerializerExtensionProviderImpl(final SerializerRegistry registry) {
58             this.registry = registry;
59         }
60
61         @Override
62         public <K> void registerSerializer(MessageTypeKey<K> messageTypeKey, OFGeneralSerializer ofGeneralSerializer) {
63             registry.registerSerializer(messageTypeKey, ofGeneralSerializer);
64         }
65
66         @Override
67         public boolean unregisterSerializer(ExperimenterSerializerKey key) {
68             return false;
69         }
70
71         @Override
72         public void registerActionSerializer(ActionSerializerKey<?> key, OFGeneralSerializer serializer) {
73         }
74
75         @Override
76         public void registerInstructionSerializer(InstructionSerializerKey<?> key, OFGeneralSerializer serializer) {
77         }
78
79         @Override
80         public <C extends OxmClassBase, F extends MatchField> void registerMatchEntrySerializer(
81                 MatchEntrySerializerKey<C, F> key, OFGeneralSerializer serializer) {
82         }
83
84         @Override
85         public void registerExperimenterMessageSerializer(ExperimenterIdSerializerKey<? extends
86                 ExperimenterDataOfChoice> key, OFSerializer<? extends ExperimenterDataOfChoice> serializer) {
87         }
88
89         @Override
90         public void registerMultipartRequestSerializer(ExperimenterIdSerializerKey<? extends
91                 ExperimenterDataOfChoice> key, OFSerializer<? extends ExperimenterDataOfChoice> serializer) {
92         }
93
94         @Override
95         public void registerMultipartRequestTFSerializer(ExperimenterIdSerializerKey<TableFeatureProperties> key,
96                                                          OFGeneralSerializer serializer) {
97         }
98
99         @Override
100         public void registerMeterBandSerializer(ExperimenterIdSerializerKey<MeterBandExperimenterCase> key,
101                                                 OFSerializer<MeterBandExperimenterCase> serializer) {
102
103         }
104
105         @Override
106         public void registerMeterBandSerializer(ExperimenterIdMeterSubTypeSerializerKey<MeterBandExperimenterCase>
107                                                             key, OFSerializer<MeterBandExperimenterCase> serializer) {
108         }
109     }
110 }