manually cherry pick this patch https://git.opendaylight.org/gerrit/#/c/34579/
[unimgr.git] / impl / src / test / java / org / opendaylight / unimgr / command / DataTreeModificationHelper.java
1 /*
2  * Copyright (c) 2016 CableLabs 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.unimgr.command;
9
10 import java.util.Collection;
11
12 import org.opendaylight.controller.md.sal.binding.api.DataObjectModification;
13 import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier;
14 import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;
15 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
16 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri;
17 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.LinkId;
18 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
19 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
20 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId;
21 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology;
22 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyKey;
23 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Link;
24 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.LinkKey;
25 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
26 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeKey;
27 import org.opendaylight.yangtools.yang.binding.Augmentation;
28 import org.opendaylight.yangtools.yang.binding.ChildOf;
29 import org.opendaylight.yangtools.yang.binding.DataObject;
30 import org.opendaylight.yangtools.yang.binding.Identifiable;
31 import org.opendaylight.yangtools.yang.binding.Identifier;
32 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
33 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.PathArgument;
34
35 /**
36  * DataTreeModificationHelper help to get a dummy value of DataTreeModification object as DataTreeModification 
37  * class is a final class.
38  */
39 public final class DataTreeModificationHelper {
40
41     public static final DataTreeModification<Node> getUniNode(final Node node) {
42         final DataTreeIdentifier<Node> uniDataTreeIid = new DataTreeIdentifier<>(LogicalDatastoreType.CONFIGURATION, getUniIid("10.10.1.3"));
43         final DataObjectModification<Node> uniDataTreeObj = new DataObjectModification<Node>() {
44             @Override
45             public Collection<DataObjectModification<? extends DataObject>> getModifiedChildren() {
46                 // TODO Auto-generated method stub
47                 return null;
48             }
49             @Override
50             public <C extends Identifiable<K> & ChildOf<? super Node>, K extends Identifier<C>> DataObjectModification<C> getModifiedChildListItem(
51                     Class<C> arg0, K arg1) {
52                 // TODO Auto-generated method stub
53                 return null;
54             }
55             @Override
56             public <C extends ChildOf<? super Node>> DataObjectModification<C> getModifiedChildContainer(Class<C> arg0) {
57                 // TODO Auto-generated method stub
58                 return null;
59             }
60             @Override
61             public DataObjectModification<? extends DataObject> getModifiedChild(PathArgument arg0) {
62                 // TODO Auto-generated method stub
63                 return null;
64             }
65             @Override
66             public <C extends Augmentation<Node> & DataObject> DataObjectModification<C> getModifiedAugmentation(
67                     Class<C> arg0) {
68                 // TODO Auto-generated method stub
69                 return null;
70             }
71             @Override
72             public ModificationType getModificationType() {
73                 // TODO Auto-generated method stub
74                 return null;
75             }
76             @Override
77             public PathArgument getIdentifier() {
78                 // TODO Auto-generated method stub
79                 return null;
80             }
81             @Override
82             public Class<Node> getDataType() {
83                 // TODO Auto-generated method stub
84                 return null;
85             }
86             @Override
87             public Node getDataBefore() {
88                 return node;
89             }
90             @Override
91             public Node getDataAfter() {
92                 return node;
93             }
94         };
95         DataTreeModification<Node> uniNode = new DataTreeModification<Node>() {
96             @Override
97             public DataTreeIdentifier<Node> getRootPath() {
98                 return uniDataTreeIid;
99             }
100             @Override
101             public DataObjectModification<Node> getRootNode() {
102                 return uniDataTreeObj;
103             }
104         };
105         return uniNode;
106     }
107
108     private static final InstanceIdentifier<Node> getUniIid(String nodeId) {
109         NodeId uniNodeId = new NodeId(new NodeId(nodeId));
110         InstanceIdentifier<Node> uniNodeIid = InstanceIdentifier
111                 .create(NetworkTopology.class)
112                 .child(Topology.class, new TopologyKey(new TopologyId(new Uri("unimgr:uni"))))
113                 .child(Node.class, new NodeKey(uniNodeId));
114         return uniNodeIid;
115     }
116
117     public static final DataTreeModification<Link> getEvcLink(final Link link) {
118         final DataTreeIdentifier<Link> evcDataTreeIid = new DataTreeIdentifier<>(LogicalDatastoreType.CONFIGURATION, getEvcLinkIid("1"));
119         final DataObjectModification<Link> evcDataTreeObj = new DataObjectModification<Link>() {
120             @Override
121             public Collection<DataObjectModification<? extends DataObject>> getModifiedChildren() {
122                 // TODO Auto-generated method stub
123                 return null;
124             }
125             @Override
126             public <C extends Identifiable<K> & ChildOf<? super Link>, K extends Identifier<C>> DataObjectModification<C> getModifiedChildListItem(
127                     Class<C> arg0, K arg1) {
128                 // TODO Auto-generated method stub
129                 return null;
130             }
131             @Override
132             public <C extends ChildOf<? super Link>> DataObjectModification<C> getModifiedChildContainer(Class<C> arg0) {
133                 // TODO Auto-generated method stub
134                 return null;
135             }
136             @Override
137             public DataObjectModification<? extends DataObject> getModifiedChild(PathArgument arg0) {
138                 // TODO Auto-generated method stub
139                 return null;
140             }
141             @Override
142             public <C extends Augmentation<Link> & DataObject> DataObjectModification<C> getModifiedAugmentation(
143                     Class<C> arg0) {
144                 // TODO Auto-generated method stub
145                 return null;
146             }
147             @Override
148             public ModificationType getModificationType() {
149                 // TODO Auto-generated method stub
150                 return null;
151             }
152             @Override
153             public PathArgument getIdentifier() {
154                 // TODO Auto-generated method stub
155                 return null;
156             }
157             @Override
158             public Class<Link> getDataType() {
159                 // TODO Auto-generated method stub
160                 return null;
161             }
162             @Override
163             public Link getDataBefore() {
164                 return link;
165             }
166             @Override
167             public Link getDataAfter() {
168                 return link;
169             }
170         };
171         DataTreeModification<Link> evcLink = new DataTreeModification<Link>() {
172             
173             @Override
174             public DataTreeIdentifier<Link> getRootPath() {
175                 return evcDataTreeIid;
176             }
177             
178             @Override
179             public DataObjectModification<Link> getRootNode() {
180                 return evcDataTreeObj;
181             }
182         };
183         return evcLink;
184     }
185
186     private static InstanceIdentifier<Link> getEvcLinkIid(String linkId) {
187         LinkId evcLinkId = new LinkId(new LinkId("evc://" + linkId));
188         InstanceIdentifier<Link> linkPath = InstanceIdentifier
189                 .create(NetworkTopology.class)
190                 .child(Topology.class,new TopologyKey(new TopologyId(new Uri("unimgr:evc"))))
191                 .child(Link.class, new LinkKey(evcLinkId));
192         return linkPath;
193     }
194 }