Rework OpenFlowPluginProviderImpl connection provider tracking
[openflowplugin.git] / extension / openflowplugin-extension-api / src / main / java / org / opendaylight / openflowplugin / extension / api / core / extension / ExtensionConverterProvider.java
1 /*
2  * Copyright (c) 2014 Cisco Systems, Inc. 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 package org.opendaylight.openflowplugin.extension.api.core.extension;
9
10 import org.opendaylight.openflowjava.protocol.api.keys.MessageTypeKey;
11 import org.opendaylight.openflowplugin.extension.api.ConverterExtensionKey;
12 import org.opendaylight.openflowplugin.extension.api.ConverterMessageToOFJava;
13 import org.opendaylight.openflowplugin.extension.api.ConvertorActionFromOFJava;
14 import org.opendaylight.openflowplugin.extension.api.ConvertorActionToOFJava;
15 import org.opendaylight.openflowplugin.extension.api.ConvertorData;
16 import org.opendaylight.openflowplugin.extension.api.ConvertorFromOFJava;
17 import org.opendaylight.openflowplugin.extension.api.ConvertorMessageFromOFJava;
18 import org.opendaylight.openflowplugin.extension.api.ConvertorToOFJava;
19 import org.opendaylight.openflowplugin.extension.api.TypeVersionKey;
20 import org.opendaylight.openflowplugin.extension.api.path.AugmentationPath;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.experimenter.types.rev151020.experimenter.core.message.ExperimenterMessageOfChoice;
23 import org.opendaylight.yangtools.yang.binding.DataContainer;
24
25 public interface ExtensionConverterProvider {
26
27     /**
28      * Lookup converter.
29      *
30      * @param <F> type of parameter for getConverter
31      * @param <P> augmentationPath
32      * @param key the message type key
33      * @return found converter
34      */
35     <F extends DataContainer, P extends AugmentationPath> ConvertorFromOFJava<F, P> getConverter(MessageTypeKey<?> key);
36
37     /**
38      * Lookup converter.
39      *
40      * @param <T> type of parameter
41      * @param key the converter extension key
42      * @return found converter
43      */
44     <T extends DataContainer> ConvertorToOFJava<T> getConverter(ConverterExtensionKey<?> key);
45
46     /**
47      * Lookup converter.
48      *
49      * @param <F> Actiontype
50      * @param <T> datacontainer
51      * @param key the type version key
52      * @return found converter
53      */
54     <F extends Action, T extends DataContainer> ConvertorActionToOFJava<F, T> getConverter(TypeVersionKey<F> key);
55
56     /**
57      * Lookup converter.
58      * TODO: this method should be compatible with {@link #getConverter(MessageTypeKey)} after matches are migrated
59      * to similar structure
60      *  @param <F> DataContainer
61      *  @param <P> AugmentationPath
62      * @param key the message type key
63      * @return found converter
64      */
65     <F extends DataContainer, P extends AugmentationPath> ConvertorActionFromOFJava<F, P> getActionConverter(
66             MessageTypeKey<?> key);
67
68     /**
69      * Lookup converter for experimenter message.
70      *
71      * @param <F> ExperimenterMessageOfChoice
72      * @param <T> DataContainer
73      * @param <D> DataConvertor
74      * @param key the type version key
75      * @return found converter
76      */
77     <F extends ExperimenterMessageOfChoice, T extends DataContainer,
78         D extends ConvertorData> ConverterMessageToOFJava<F, T, D> getMessageConverter(TypeVersionKey<F> key);
79
80     /**
81      * Lookup converter for experimenter message.
82      *
83      * @param <F> DataContainer
84      * @param <P> AugmentationPath
85      * @param key the message type key
86      * @return found converter
87      */
88     <F extends DataContainer, P extends AugmentationPath> ConvertorMessageFromOFJava<F, P> getMessageConverter(
89             MessageTypeKey<?> key);
90 }