3a901cc82e9b8f0e371a5572b8477e8978880162
[groupbasedpolicy.git] / groupbasedpolicy / src / main / java / org / opendaylight / groupbasedpolicy / api / EndpointAugmentor.java
1 /*
2  * Copyright (c) 2016 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
9 package org.opendaylight.groupbasedpolicy.api;
10
11 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.BaseEndpointService;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.endpoints.address.endpoints.AddressEndpoint;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.endpoints.containment.endpoints.ContainmentEndpoint;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.register.endpoint.input.AddressEndpointReg;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.register.endpoint.input.ContainmentEndpointReg;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.endpoints.AddressEndpointWithLocation;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.endpoints.ContainmentEndpointWithLocation;
18 import org.opendaylight.yangtools.yang.binding.Augmentation;
19
20 import javax.annotation.Nullable;
21 import java.util.Map;
22
23 /**
24  * Provides translation for endpoint augmentation
25  */
26 public interface EndpointAugmentor {
27
28     /**
29      * Creates pair of {@link AddressEndpoint} augmentation. Augmentation is domain specific. Result
30      * is used for translation from {@link AddressEndpointReg} to {@link AddressEndpoint}
31      *
32      * @param input {@link AddressEndpointReg} as part of RPC input
33      *        {@link BaseEndpointService#registerEndpoint(org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.RegisterEndpointInput)}
34      * @return translated <i>input</i> to {@link AddressEndpoint}
35      */
36     @Nullable
37     Map.Entry<Class<? extends Augmentation<AddressEndpoint>>, Augmentation<AddressEndpoint>> buildAddressEndpointAugmentation(
38             AddressEndpointReg input);
39
40     /**
41      * Creates pair of {@link ContainmentEndpoint} augmentation. Augmentation is domain specific.
42      * Result is used for translation from {@link ContainmentEndpointReg} to
43      * {@link ContainmentEndpoint}
44      *
45      * @param input {@link ContainmentEndpointReg} as part of RPC input
46      *        {@link BaseEndpointService#registerEndpoint(org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.RegisterEndpointInput)}
47      * @return translated <i>input</i> to {@link ContainmentEndpoint}
48      */
49     @Nullable
50     Map.Entry<Class<? extends Augmentation<ContainmentEndpoint>>, Augmentation<ContainmentEndpoint>> buildContainmentEndpointAugmentation(
51             ContainmentEndpointReg input);
52
53     /**
54      * Creates pair of {@link AddressEndpointWithLocation} augmentation. Augmentation is domain
55      * specific. Result is used for translation from {@link AddressEndpoint} to
56      * {@link AddressEndpointWithLocation}
57      *
58      * @param input {@link AddressEndpoint}
59      * @return translated <i>input</i> to {@link AddressEndpointWithLocation}
60      */
61     @Nullable
62     Map.Entry<Class<? extends Augmentation<AddressEndpointWithLocation>>, Augmentation<AddressEndpointWithLocation>> buildAddressEndpointWithLocationAugmentation(
63             AddressEndpoint input);
64
65     /**
66      * Creates pair of {@link ContainmentEndpointWithLocation} augmentation. Augmentation is domain
67      * specific. Result is used for translation from {@link ContainmentEndpoint} to
68      * {@link ContainmentEndpointWithLocation}
69      *
70      * @param input {@link ContainmentEndpoint}
71      * @return translated <i>input</i> to {@link ContainmentEndpointWithLocation}
72      */
73     @Nullable
74     Map.Entry<Class<? extends Augmentation<ContainmentEndpointWithLocation>>, Augmentation<ContainmentEndpointWithLocation>> buildContainmentEndpointWithLocationAugmentation(
75             ContainmentEndpoint input);
76 }