Test case added for code coverage
[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.ConnectionAttachmentTopologyOperationInputBuilder;
30 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.ConnectionAttachmentTopologyOperationOutputBuilder;
31 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.ContrailRouteTopologyOperationInputBuilder;
32 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.ContrailRouteTopologyOperationOutputBuilder;
33 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.NetworkTopologyOperationInputBuilder;
34 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.NetworkTopologyOperationOutputBuilder;
35 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.PreloadNetworkTopologyOperationInputBuilder;
36 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.PreloadNetworkTopologyOperationOutputBuilder;
37 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.PreloadVfModuleTopologyOperationInputBuilder;
38 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.PreloadVfModuleTopologyOperationOutputBuilder;
39
40 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.GenericConfigurationTopologyOperationInputBuilder;
41 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.GenericConfigurationTopologyOperationOutputBuilder;
42
43 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.GenericConfigurationNotificationInputBuilder;
44 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.GenericConfigurationNotificationOutputBuilder;
45
46 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.GetpathsegmentTopologyOperationInputBuilder;
47 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.GetpathsegmentTopologyOperationOutputBuilder;
48
49 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.PolicyUpdateNotifyOperationInputBuilder;
50 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.PolicyUpdateNotifyOperationOutputBuilder;
51
52 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.PortMirrorTopologyOperationInputBuilder;
53 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.PortMirrorTopologyOperationOutputBuilder;
54
55 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.SecurityZoneTopologyOperationInputBuilder;
56 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.SecurityZoneTopologyOperationOutputBuilder;
57 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.ServiceTopologyOperationInputBuilder;
58 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.ServiceTopologyOperationOutputBuilder;
59 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.TunnelxconnTopologyOperationInputBuilder;
60 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.TunnelxconnTopologyOperationOutputBuilder;
61 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.VfModuleTopologyOperationInputBuilder;
62 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.VfModuleTopologyOperationOutputBuilder;
63 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.VnfTopologyOperationInputBuilder;
64 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.VnfTopologyOperationOutputBuilder;
65 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.PnfTopologyOperationInputBuilder;
66 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.PnfTopologyOperationOutputBuilder;
67 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.brg.response.information.BrgResponseInformationBuilder;
68 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.connection.attachment.response.information.ConnectionAttachmentResponseInformationBuilder;
69 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.contrail.route.response.information.ContrailRouteResponseInformationBuilder;
70 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.network.information.NetworkInformationBuilder;
71 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.network.response.information.NetworkResponseInformationBuilder;
72 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.network.topology.identifier.structure.NetworkTopologyIdentifierStructureBuilder;
73 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.preload.network.topology.information.PreloadNetworkTopologyInformationBuilder;
74 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.preload.vf.module.topology.information.PreloadVfModuleTopologyInformationBuilder;
75 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.request.information.RequestInformationBuilder;
76 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.sdnc.request.header.SdncRequestHeaderBuilder;
77 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.security.zone.response.information.SecurityZoneResponseInformationBuilder;
78 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.service.data.ServiceDataBuilder;
79 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.service.information.ServiceInformationBuilder;
80 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.service.level.oper.status.ServiceLevelOperStatusBuilder;
81 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.service.model.infrastructure.ServiceBuilder;
82 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.service.response.information.ServiceResponseInformationBuilder;
83 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.service.status.ServiceStatusBuilder;
84 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.tunnelxconn.response.information.TunnelxconnResponseInformationBuilder;
85 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.vf.module.information.VfModuleInformationBuilder;
86 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.vf.module.response.information.VfModuleResponseInformationBuilder;
87 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.vf.module.topology.VfModuleTopologyBuilder;
88 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.vf.module.topology.identifier.VfModuleTopologyIdentifierBuilder;
89 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.vnf.information.VnfInformationBuilder;
90 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.vnf.response.information.VnfResponseInformationBuilder;
91 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.vnf.topology.identifier.structure.VnfTopologyIdentifierStructureBuilder;
92 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.pnf.details.PnfDetailsBuilder;
93 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.pnf.response.information.PnfResponseInformationBuilder;
94 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.pnf.topology.identifier.structure.PnfTopologyIdentifierStructureBuilder;
95 import org.opendaylight.yangtools.concepts.Builder;
96 import org.opendaylight.yangtools.yang.common.RpcResult;
97
98
99 /**
100  * This uill class provides utility to build yang objects using a recursive syntax that resembles the tree structure
101  * when defining the same yang object in json format.
102  *
103  * For Example
104  * <pre>
105  * {@code
106  * import static org.onap.sdnc.northbound.util.MDSALUtil.*;
107  * ServiceTopologyOperationInput input = build(
108  *         serviceTopologyOperationInput()
109  *                 .setSdncRequestHeader(build(sdncRequestHeader()
110  *                         .setSvcRequestId("svc-request-id: xyz")
111  *                         .setSvcAction(SvcAction.Assign)
112  *                 ))
113  *                 .setRequestInformation(build(requestInformation()
114  *                         .setRequestId("request-id: xyz")
115  *                        .setRequestAction(RequestInformation.RequestAction.CreateServiceInstance)
116  *                 ))
117  *                .setServiceInformation(build(serviceInformationBuilder()
118  *                         .setServiceInstanceId("service-instance-id: xyz")
119  *                ))
120  * );
121  * }
122  * </pre>
123  */
124 public class MDSALUtil {
125
126     public static PreloadVfModuleTopologyOperationInputBuilder preloadVfModuleTopologyOperationInput() {
127         return new PreloadVfModuleTopologyOperationInputBuilder();
128     }
129
130     public static GenericConfigurationTopologyOperationInputBuilder GenericConfigurationTopologyOperationInput() {
131         return new GenericConfigurationTopologyOperationInputBuilder();
132     }
133
134     public static GenericConfigurationNotificationInputBuilder GenericConfigurationNotificationInput() {
135         return new GenericConfigurationNotificationInputBuilder();
136     }
137
138     public static GetpathsegmentTopologyOperationInputBuilder GetpathsegmentTopologyOperationInput() {
139         return new GetpathsegmentTopologyOperationInputBuilder();
140     }
141
142     public static PolicyUpdateNotifyOperationInputBuilder PolicyUpdateNotifyOperationInput() {
143         return new PolicyUpdateNotifyOperationInputBuilder();
144     }
145
146     public static PortMirrorTopologyOperationInputBuilder PortMirrorTopologyOperationInput() {
147         return new PortMirrorTopologyOperationInputBuilder();
148     }
149
150     public static PreloadVfModuleTopologyOperationOutputBuilder preloadVfModuleTopologyOperationOutput() {
151         return new PreloadVfModuleTopologyOperationOutputBuilder();
152     }
153
154     public static PreloadNetworkTopologyOperationInputBuilder preloadNetworkTopologyOperationInput() {
155         return new PreloadNetworkTopologyOperationInputBuilder();
156     }
157
158     public static PreloadNetworkTopologyOperationOutputBuilder preloadNetworkTopologyOperationOutput() {
159         return new PreloadNetworkTopologyOperationOutputBuilder();
160     }
161
162     public static BrgTopologyOperationInputBuilder brgTopologyOperationInput() {
163         return new BrgTopologyOperationInputBuilder();
164     }
165
166     public static BrgTopologyOperationOutputBuilder brgTopologyOperationOutput() {
167         return new BrgTopologyOperationOutputBuilder();
168     }
169
170     public static TunnelxconnTopologyOperationInputBuilder tunnelxconnTopologyOperationInput() {
171         return new TunnelxconnTopologyOperationInputBuilder();
172     }
173
174     public static TunnelxconnTopologyOperationOutputBuilder tunnelxconnTopologyOperationOutput() {
175         return new TunnelxconnTopologyOperationOutputBuilder();
176     }
177
178     public static SecurityZoneTopologyOperationInputBuilder securityZoneTopologyOperationInput() {
179         return new SecurityZoneTopologyOperationInputBuilder();
180     }
181
182     public static SecurityZoneTopologyOperationOutputBuilder securityZoneTopologyOperationOutput() {
183         return new SecurityZoneTopologyOperationOutputBuilder();
184     }
185
186     public static ContrailRouteTopologyOperationInputBuilder contrailRouteTopologyOperationInput() {
187         return new ContrailRouteTopologyOperationInputBuilder();
188     }
189
190     public static ContrailRouteTopologyOperationOutputBuilder contrailRouteTopologyOperationOutput() {
191         return new ContrailRouteTopologyOperationOutputBuilder();
192     }
193
194     public static VfModuleTopologyOperationInputBuilder vfModuleTopologyOperationInput() {
195         return new VfModuleTopologyOperationInputBuilder();
196     }
197
198     public static VfModuleTopologyOperationOutputBuilder vfModuleTopologyOperationOutput() {
199         return new VfModuleTopologyOperationOutputBuilder();
200     }
201
202     public static PnfTopologyOperationInputBuilder pnfTopologyOperationInput() {
203         return new PnfTopologyOperationInputBuilder();
204     }
205
206     public static PnfTopologyOperationOutputBuilder pnfTopologyOperationOutput() {
207         return new PnfTopologyOperationOutputBuilder();
208     }
209
210     public static VnfTopologyOperationInputBuilder vnfTopologyOperationInput() {
211         return new VnfTopologyOperationInputBuilder();
212     }
213
214     public static VnfTopologyOperationOutputBuilder vnfTopologyOperationOutput() {
215         return new VnfTopologyOperationOutputBuilder();
216     }
217
218     public static ServiceTopologyOperationInputBuilder serviceTopologyOperationInput() {
219         return new ServiceTopologyOperationInputBuilder();
220     }
221
222     public static ServiceTopologyOperationOutputBuilder serviceTopologyOperationOutput() {
223         return new ServiceTopologyOperationOutputBuilder();
224     }
225
226
227     public static SdncRequestHeaderBuilder sdncRequestHeader() {
228         return new SdncRequestHeaderBuilder();
229     }
230
231
232     public static RequestInformationBuilder requestInformation() {
233         return new RequestInformationBuilder();
234     }
235
236     public static ServiceResponseInformationBuilder serviceResponseInformation() {
237         return new ServiceResponseInformationBuilder();
238     }
239     
240     public static SecurityZoneResponseInformationBuilder securityZoneResponseInformation() {
241         return new SecurityZoneResponseInformationBuilder();
242     }
243
244     public static TunnelxconnResponseInformationBuilder tunnelxconnResponseInformation() {
245         return new TunnelxconnResponseInformationBuilder();
246     }
247
248     public static BrgResponseInformationBuilder brgResponseInformation() {
249         return new BrgResponseInformationBuilder();
250     }
251
252     public static ContrailRouteResponseInformationBuilder contrailRouteResponseInformation() {
253         return new ContrailRouteResponseInformationBuilder();
254     }
255
256     public static PnfResponseInformationBuilder pnfResponseInformation() {
257         return new PnfResponseInformationBuilder();
258     }
259
260     public static VnfResponseInformationBuilder vnfResponseInformation() {
261         return new VnfResponseInformationBuilder();
262     }
263
264     public static VfModuleResponseInformationBuilder vfModuleResponseInformation() {
265         return new VfModuleResponseInformationBuilder();
266     }
267
268     public static ServiceInformationBuilder serviceInformationBuilder() {
269         return new ServiceInformationBuilder();
270     }
271
272     public static PreloadNetworkTopologyInformationBuilder preloadNetworkTopologyInformationBuilder() {
273         return new PreloadNetworkTopologyInformationBuilder();
274     }
275
276     public static NetworkTopologyIdentifierStructureBuilder networkTopologyIdentifierStructureBuilder(){
277         return new NetworkTopologyIdentifierStructureBuilder();
278     }
279
280     public static PnfDetailsBuilder pnfDetailsBuilder() {
281         return new PnfDetailsBuilder();
282     }
283
284     public static VnfInformationBuilder vnfInformationBuilder() {
285         return new VnfInformationBuilder();
286     }
287
288     public static VfModuleInformationBuilder vfModuleInformationBuilder() {
289         return new VfModuleInformationBuilder();
290     }
291
292     public static ServiceBuilder service() {
293         return new ServiceBuilder();
294     }
295
296     public static ServiceDataBuilder serviceData() {
297         return new ServiceDataBuilder();
298     }
299
300     public static ServiceStatusBuilder serviceStatus() {
301         return new ServiceStatusBuilder();
302     }
303
304     public static NetworkInformationBuilder networkInformation() {
305         return new NetworkInformationBuilder();
306     }
307
308     public static NetworkTopologyOperationInputBuilder networkTopologyOperationInput() {
309         return new NetworkTopologyOperationInputBuilder();
310     }
311
312     public static NetworkTopologyOperationOutputBuilder networkTopologyOperationOutput() {
313         return new NetworkTopologyOperationOutputBuilder();
314     }
315
316     public static PnfTopologyIdentifierStructureBuilder pnfTopologyIdentifierStructureBuilder() {
317         return new PnfTopologyIdentifierStructureBuilder();
318     }
319
320     public static VnfTopologyIdentifierStructureBuilder vnfTopologyIdentifierStructureBuilder() {
321         return new VnfTopologyIdentifierStructureBuilder();
322     }
323
324     public static PreloadVfModuleTopologyInformationBuilder preloadVfModuleTopologyInformationBuilder() {
325         return new PreloadVfModuleTopologyInformationBuilder();
326     }
327
328     public static VfModuleTopologyBuilder vfModuleTopologyBuilder() {
329         return new VfModuleTopologyBuilder();
330     }
331     
332     public static VfModuleTopologyIdentifierBuilder vfModuleTopologyIdentifierBuilder() {
333         return new VfModuleTopologyIdentifierBuilder();
334     }
335     
336     public static NetworkResponseInformationBuilder networkResponseInformation() {
337         return new NetworkResponseInformationBuilder();
338     }
339
340     public static ConnectionAttachmentTopologyOperationInputBuilder connectionAttachmentTopologyOperationInput() {
341         return new ConnectionAttachmentTopologyOperationInputBuilder();
342     }
343
344     public static ConnectionAttachmentTopologyOperationOutputBuilder connectionAttachmentTopologyOperationOutput() {
345         return new ConnectionAttachmentTopologyOperationOutputBuilder();
346     }
347
348     public static ConnectionAttachmentResponseInformationBuilder connectionAttachmentResponseInformation() {
349         return new ConnectionAttachmentResponseInformationBuilder();
350     }
351
352     public static ServiceLevelOperStatusBuilder serviceLevelOperStatus() {
353         return new ServiceLevelOperStatusBuilder();
354     }
355
356     public static <P> P build(Builder<P> b) {
357         return b == null ? null : b.build();
358     }
359
360     public static <P, B extends Builder<P>> P build(Function<P, B> builderConstructor, P sourceDataObject) {
361         if (sourceDataObject == null) {
362             return null;
363         }
364         B bp = builderConstructor.apply(sourceDataObject);
365         return bp.build();
366     }
367
368     public static <P, B extends Builder<P>> P build(Function<P, B> builderConstructor, P sourceDataObject,
369         Consumer<B> builder) {
370         if (sourceDataObject == null) {
371             return null;
372         }
373         B bp = builderConstructor.apply(sourceDataObject);
374         builder.accept(bp);
375         return bp.build();
376     }
377
378     public static <I, O> O exec(Function<I, Future<RpcResult<O>>> rpc, I rpcParameter,
379         Function<RpcResult<O>, O> rpcResult) throws Exception {
380         Future<RpcResult<O>> future = rpc.apply(rpcParameter);
381         return rpcResult.apply(future.get());
382     }
383
384 }