75ada6fbd287b3e15cab6f32199fc6b9f5130c8b
[openflowjava.git] / openflowjava-util / src / main / java / org / opendaylight / openflowjava / util / ExperimenterDeserializerKeyFactory.java
1 /*
2  * Copyright (c) 2014 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.openflowjava.util;
10
11 import org.opendaylight.openflowjava.protocol.api.keys.ExperimenterIdDeserializerKey;
12 import org.opendaylight.openflowjava.protocol.api.keys.ExperimenterIdTypeDeserializerKey;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.approved.extensions.rev160802.bundle.properties.bundle.property.bundle.property.entry.bundle.experimenter.property.BundleExperimenterPropertyData;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ErrorMessage;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.experimenter.core.ExperimenterDataOfChoice;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandExperimenterCase;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.queue.property.header.QueueProperty;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.table.features.properties.grouping.TableFeatureProperties;
19
20 /**
21  * @author michal.polkorab
22  */
23 public abstract class ExperimenterDeserializerKeyFactory {
24
25     private ExperimenterDeserializerKeyFactory() {
26         //not called
27     }
28
29     /**
30      * @param version openflow wire version
31      * @param experimenterId experimenter / vendor ID
32      * @return key instance
33      */
34     public static ExperimenterIdDeserializerKey createExperimenterErrorDeserializerKey(
35             short version, Long experimenterId) {
36         return new ExperimenterIdDeserializerKey(version, experimenterId, ErrorMessage.class);
37     }
38
39     /**
40      * @param version openflow wire version
41      * @param experimenterId experimenter / vendor ID
42      * @param type experimenter type according to vendor implementation
43      * @return key instance
44      */
45     public static ExperimenterIdTypeDeserializerKey createExperimenterMessageDeserializerKey(
46             short version, long experimenterId, long type) {
47         return new ExperimenterIdTypeDeserializerKey(version, experimenterId, type, ExperimenterDataOfChoice.class);
48     }
49
50     /**
51      * @param version        openflow wire version
52      * @param experimenterId experimenter / vendor ID
53      * @return key instance
54      */
55     public static ExperimenterIdDeserializerKey createVendorMessageDeserializerKey(
56             short version, long experimenterId) {
57         return new ExperimenterIdDeserializerKey(version, experimenterId, ExperimenterDataOfChoice.class);
58     }
59
60     /**
61      * @param version openflow wire version
62      * @param experimenterId experimenter / vendor ID
63      * @param type
64      * @return key instance
65      */
66     public static ExperimenterIdTypeDeserializerKey createMultipartReplyMessageDeserializerKey(
67             short version, long experimenterId, long type) {
68         return new ExperimenterIdTypeDeserializerKey(version, experimenterId, type, ExperimenterDataOfChoice.class);
69     }
70
71     /**
72      * @param version        openflow wire version
73      * @param experimenterId experimenter / vendor ID
74      * @return key instance
75      */
76     public static ExperimenterIdDeserializerKey createMultipartReplyVendorMessageDeserializerKey(
77             short version, long experimenterId) {
78         return new ExperimenterIdDeserializerKey(version, experimenterId, ExperimenterDataOfChoice.class);
79     }
80
81     /**
82      * @param version openflow wire version
83      * @param experimenterId experimenter / vendor ID
84      * @return key instance
85      */
86     public static ExperimenterIdDeserializerKey createMultipartReplyTFDeserializerKey(
87             short version, Long experimenterId) {
88         return new ExperimenterIdDeserializerKey(version, experimenterId, TableFeatureProperties.class);
89     }
90
91     /**
92      * @param version openflow wire version
93      * @param experimenterId experimenter / vendor ID
94      * @return key instance
95      */
96     public static ExperimenterIdDeserializerKey createQueuePropertyDeserializerKey(
97             short version, Long experimenterId) {
98         return new ExperimenterIdDeserializerKey(version, experimenterId, QueueProperty.class);
99     }
100
101     /**
102      * @param version openflow wire version
103      * @param experimenterId experimenter / vendor ID
104      * @return key instance
105      */
106     public static ExperimenterIdDeserializerKey createMeterBandDeserializerKey(
107             short version, Long experimenterId) {
108         return new ExperimenterIdDeserializerKey(version, experimenterId, MeterBandExperimenterCase.class);
109     }
110
111     /**
112      * @param version openflow wire version
113      * @param experimenterId experimenter ID
114      * @param type experimenter type according to vendor implementation
115      * @return key instance
116      */
117     public static ExperimenterIdTypeDeserializerKey createBundlePropertyDeserializerKey(
118             short version, long experimenterId, long type) {
119         return new ExperimenterIdTypeDeserializerKey(version, experimenterId, type, BundleExperimenterPropertyData.class);
120     }
121 }