fd9a7f32ffdf8792fc081a1848319330c1526bcd
[sdnc/northbound.git] / generic-resource-api / provider / src / test / java / org / onap / sdnc / northbound / util / MDSALUtil.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * openECOMP : SDN-C
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights
6  *                             reserved.
7  * ================================================================================
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  *      http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  * ============LICENSE_END=========================================================
20  */
21
22 package org.onap.sdnc.northbound.util;
23
24 import java.util.concurrent.Future;
25 import java.util.function.Consumer;
26 import java.util.function.Function;
27 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.BrgTopologyOperationInputBuilder;
28 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.BrgTopologyOperationOutputBuilder;
29 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.ContrailRouteTopologyOperationInputBuilder;
30 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.ContrailRouteTopologyOperationOutputBuilder;
31 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.NetworkTopologyOperationInputBuilder;
32 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.NetworkTopologyOperationOutputBuilder;
33 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.PreloadNetworkTopologyOperationInputBuilder;
34 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.PreloadNetworkTopologyOperationOutputBuilder;
35 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.PreloadVnfTopologyOperationInputBuilder;
36 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.PreloadVnfTopologyOperationOutputBuilder;
37 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.SecurityZoneTopologyOperationInputBuilder;
38 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.SecurityZoneTopologyOperationOutputBuilder;
39 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.ServiceTopologyOperationInputBuilder;
40 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.ServiceTopologyOperationOutputBuilder;
41 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.TunnelxconnTopologyOperationInputBuilder;
42 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.TunnelxconnTopologyOperationOutputBuilder;
43 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.VfModuleTopologyOperationInputBuilder;
44 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.VfModuleTopologyOperationOutputBuilder;
45 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.VnfTopologyOperationInputBuilder;
46 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.VnfTopologyOperationOutputBuilder;
47 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.brg.response.information.BrgResponseInformationBuilder;
48 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.contrail.route.response.information.ContrailRouteResponseInformationBuilder;
49 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.network.information.NetworkInformationBuilder;
50 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.network.response.information.NetworkResponseInformationBuilder;
51 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.network.topology.identifier.NetworkTopologyIdentifierBuilder;
52 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.network.topology.information.NetworkTopologyInformationBuilder;
53 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.request.information.RequestInformationBuilder;
54 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.sdnc.request.header.SdncRequestHeaderBuilder;
55 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.security.zone.response.information.SecurityZoneResponseInformationBuilder;
56 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.service.data.ServiceDataBuilder;
57 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.service.information.ServiceInformationBuilder;
58 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.service.level.oper.status.ServiceLevelOperStatusBuilder;
59 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.service.model.infrastructure.ServiceBuilder;
60 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.service.response.information.ServiceResponseInformationBuilder;
61 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.service.status.ServiceStatusBuilder;
62 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.tunnelxconn.response.information.TunnelxconnResponseInformationBuilder;
63 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.vf.module.information.VfModuleInformationBuilder;
64 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.vnf.information.VnfInformationBuilder;
65 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.vnf.response.information.VnfResponseInformationBuilder;
66 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.vnf.topology.identifier.VnfTopologyIdentifierBuilder;
67 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.vnf.topology.information.VnfTopologyInformationBuilder;
68 import org.opendaylight.yangtools.concepts.Builder;
69 import org.opendaylight.yangtools.yang.common.RpcResult;
70
71
72 /**
73  * This uill class provides utility to build yang objects using a recursive syntax that resembles the tree structure
74  * when defining the same yang object in json format.
75  *
76  * For Example
77  * <pre>
78  * {@code
79  * import static org.onap.sdnc.northbound.util.MDSALUtil.*;
80  * ServiceTopologyOperationInput input = build(
81  *         serviceTopologyOperationInput()
82  *                 .setSdncRequestHeader(build(sdncRequestHeader()
83  *                         .setSvcRequestId("svc-request-id: xyz")
84  *                         .setSvcAction(SvcAction.Assign)
85  *                 ))
86  *                 .setRequestInformation(build(requestInformation()
87  *                         .setRequestId("request-id: xyz")
88  *                        .setRequestAction(RequestInformation.RequestAction.CreateServiceInstance)
89  *                 ))
90  *                .setServiceInformation(build(serviceInformationBuilder()
91  *                         .setServiceInstanceId("service-instance-id: xyz")
92  *                ))
93  * );
94  * }
95  * </pre>
96  */
97 public class MDSALUtil {
98
99     public static PreloadVnfTopologyOperationInputBuilder preloadVnfTopologyOperationInput() {
100         return new PreloadVnfTopologyOperationInputBuilder();
101     }
102
103     public static PreloadVnfTopologyOperationOutputBuilder preloadVnfTopologyOperationOutput() {
104         return new PreloadVnfTopologyOperationOutputBuilder();
105     }
106
107     public static PreloadNetworkTopologyOperationInputBuilder preloadNetworkTopologyOperationInput() {
108         return new PreloadNetworkTopologyOperationInputBuilder();
109     }
110
111     public static PreloadNetworkTopologyOperationOutputBuilder preloadNetworkTopologyOperationOutput() {
112         return new PreloadNetworkTopologyOperationOutputBuilder();
113     }
114
115     public static BrgTopologyOperationInputBuilder brgTopologyOperationInput() {
116         return new BrgTopologyOperationInputBuilder();
117     }
118
119     public static BrgTopologyOperationOutputBuilder brgTopologyOperationOutput() {
120         return new BrgTopologyOperationOutputBuilder();
121     }
122
123     public static TunnelxconnTopologyOperationInputBuilder tunnelxconnTopologyOperationInput() {
124         return new TunnelxconnTopologyOperationInputBuilder();
125     }
126
127     public static TunnelxconnTopologyOperationOutputBuilder tunnelxconnTopologyOperationOutput() {
128         return new TunnelxconnTopologyOperationOutputBuilder();
129     }
130
131     public static SecurityZoneTopologyOperationInputBuilder securityZoneTopologyOperationInput() {
132         return new SecurityZoneTopologyOperationInputBuilder();
133     }
134
135     public static SecurityZoneTopologyOperationOutputBuilder securityZoneTopologyOperationOutput() {
136         return new SecurityZoneTopologyOperationOutputBuilder();
137     }
138
139     public static ContrailRouteTopologyOperationInputBuilder contrailRouteTopologyOperationInput() {
140         return new ContrailRouteTopologyOperationInputBuilder();
141     }
142
143     public static ContrailRouteTopologyOperationOutputBuilder contrailRouteTopologyOperationOutput() {
144         return new ContrailRouteTopologyOperationOutputBuilder();
145     }
146
147     public static VfModuleTopologyOperationInputBuilder vfModuleTopologyOperationInput() {
148         return new VfModuleTopologyOperationInputBuilder();
149     }
150
151     public static VfModuleTopologyOperationOutputBuilder vfModuleTopologyOperationOutput() {
152         return new VfModuleTopologyOperationOutputBuilder();
153     }
154
155     public static VnfTopologyOperationInputBuilder vnfTopologyOperationInput() {
156         return new VnfTopologyOperationInputBuilder();
157     }
158
159     public static VnfTopologyOperationOutputBuilder vnfTopologyOperationOutput() {
160         return new VnfTopologyOperationOutputBuilder();
161     }
162
163     public static ServiceTopologyOperationInputBuilder serviceTopologyOperationInput() {
164         return new ServiceTopologyOperationInputBuilder();
165     }
166
167     public static ServiceTopologyOperationOutputBuilder serviceTopologyOperationOutput() {
168         return new ServiceTopologyOperationOutputBuilder();
169     }
170
171
172     public static SdncRequestHeaderBuilder sdncRequestHeader() {
173         return new SdncRequestHeaderBuilder();
174     }
175
176
177     public static RequestInformationBuilder requestInformation() {
178         return new RequestInformationBuilder();
179     }
180
181     public static ServiceResponseInformationBuilder serviceResponseInformation() {
182         return new ServiceResponseInformationBuilder();
183     }
184
185     public static SecurityZoneResponseInformationBuilder securityZoneResponseInformation() {
186         return new SecurityZoneResponseInformationBuilder();
187     }
188
189     public static TunnelxconnResponseInformationBuilder tunnelxconnResponseInformation() {
190         return new TunnelxconnResponseInformationBuilder();
191     }
192
193     public static BrgResponseInformationBuilder brgResponseInformation() {
194         return new BrgResponseInformationBuilder();
195     }
196
197     public static ContrailRouteResponseInformationBuilder contrailRouteResponseInformation() {
198         return new ContrailRouteResponseInformationBuilder();
199     }
200
201     public static VnfResponseInformationBuilder vnfResponseInformation() {
202         return new VnfResponseInformationBuilder();
203     }
204
205     public static ServiceInformationBuilder serviceInformationBuilder() {
206         return new ServiceInformationBuilder();
207     }
208
209     public static VnfTopologyInformationBuilder vnfTopologyInformationBuilder() {
210         return new VnfTopologyInformationBuilder();
211     }
212
213     public static NetworkTopologyInformationBuilder networkTopologyInformationBuilder() {
214         return new NetworkTopologyInformationBuilder();
215     }
216
217     public static NetworkTopologyIdentifierBuilder networkTopologyIdentifierBuilder(){
218         return new NetworkTopologyIdentifierBuilder();
219     }
220
221     public static VnfTopologyIdentifierBuilder vnfTopologyIdentifierBuilder() {
222         return new VnfTopologyIdentifierBuilder();
223     }
224
225     public static VnfInformationBuilder vnfInformationBuilder() {
226         return new VnfInformationBuilder();
227     }
228
229     public static VfModuleInformationBuilder vfModuleInformationBuilder() {
230         return new VfModuleInformationBuilder();
231     }
232
233     public static ServiceBuilder service() {
234         return new ServiceBuilder();
235     }
236
237
238     public static ServiceDataBuilder serviceData() {
239         return new ServiceDataBuilder();
240     }
241
242
243     public static ServiceStatusBuilder serviceStatus() {
244         return new ServiceStatusBuilder();
245     }
246
247     public static NetworkInformationBuilder networkInformation() {
248         return new NetworkInformationBuilder();
249     }
250
251     public static NetworkTopologyOperationInputBuilder networkTopologyOperationInput() {
252         return new NetworkTopologyOperationInputBuilder();
253     }
254
255     public static NetworkTopologyOperationOutputBuilder networkTopologyOperationOutput() {
256         return new NetworkTopologyOperationOutputBuilder();
257     }
258
259     public static NetworkResponseInformationBuilder networkResponseInformation() {
260         return new NetworkResponseInformationBuilder();
261     }
262
263     public static ServiceLevelOperStatusBuilder serviceLevelOperStatus() {
264         return new ServiceLevelOperStatusBuilder();
265     }
266
267     public static <P> P build(Builder<P> b) {
268         return b == null ? null : b.build();
269     }
270
271     public static <P, B extends Builder<P>> P build(Function<P, B> builderConstructor, P sourceDataObject) {
272         if (sourceDataObject == null) {
273             return null;
274         }
275         B bp = builderConstructor.apply(sourceDataObject);
276         return bp.build();
277     }
278
279     public static <P, B extends Builder<P>> P build(Function<P, B> builderConstructor, P sourceDataObject,
280         Consumer<B> builder) {
281         if (sourceDataObject == null) {
282             return null;
283         }
284         B bp = builderConstructor.apply(sourceDataObject);
285         builder.accept(bp);
286         return bp.build();
287     }
288
289     public static <I, O> O exec(Function<I, Future<RpcResult<O>>> rpc, I rpcParameter,
290         Function<RpcResult<O>, O> rpcResult) throws Exception {
291         Future<RpcResult<O>> future = rpc.apply(rpcParameter);
292         return rpcResult.apply(future.get());
293     }
294
295 }