2 * Copyright (c) 2016 CableLabs and others. All rights reserved.
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
8 package org.opendaylight.unimgr.command;
10 import java.util.Collection;
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;
36 * DataTreeModificationHelper help to get a dummy value of DataTreeModification object as DataTreeModification
37 * class is a final class.
39 public final class DataTreeModificationHelper {
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>() {
45 public Collection<DataObjectModification<? extends DataObject>> getModifiedChildren() {
46 // TODO Auto-generated method stub
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
56 public <C extends ChildOf<? super Node>> DataObjectModification<C> getModifiedChildContainer(Class<C> arg0) {
57 // TODO Auto-generated method stub
61 public DataObjectModification<? extends DataObject> getModifiedChild(PathArgument arg0) {
62 // TODO Auto-generated method stub
66 public <C extends Augmentation<Node> & DataObject> DataObjectModification<C> getModifiedAugmentation(
68 // TODO Auto-generated method stub
72 public ModificationType getModificationType() {
73 // TODO Auto-generated method stub
77 public PathArgument getIdentifier() {
78 // TODO Auto-generated method stub
82 public Class<Node> getDataType() {
83 // TODO Auto-generated method stub
87 public Node getDataBefore() {
91 public Node getDataAfter() {
95 DataTreeModification<Node> uniNode = new DataTreeModification<Node>() {
97 public DataTreeIdentifier<Node> getRootPath() {
98 return uniDataTreeIid;
101 public DataObjectModification<Node> getRootNode() {
102 return uniDataTreeObj;
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));
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>() {
121 public Collection<DataObjectModification<? extends DataObject>> getModifiedChildren() {
122 // TODO Auto-generated method stub
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
132 public <C extends ChildOf<? super Link>> DataObjectModification<C> getModifiedChildContainer(Class<C> arg0) {
133 // TODO Auto-generated method stub
137 public DataObjectModification<? extends DataObject> getModifiedChild(PathArgument arg0) {
138 // TODO Auto-generated method stub
142 public <C extends Augmentation<Link> & DataObject> DataObjectModification<C> getModifiedAugmentation(
144 // TODO Auto-generated method stub
148 public ModificationType getModificationType() {
149 // TODO Auto-generated method stub
153 public PathArgument getIdentifier() {
154 // TODO Auto-generated method stub
158 public Class<Link> getDataType() {
159 // TODO Auto-generated method stub
163 public Link getDataBefore() {
167 public Link getDataAfter() {
171 DataTreeModification<Link> evcLink = new DataTreeModification<Link>() {
174 public DataTreeIdentifier<Link> getRootPath() {
175 return evcDataTreeIid;
179 public DataObjectModification<Link> getRootNode() {
180 return evcDataTreeObj;
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));