1 package org.openecomp.mso.yangDecoder.transform.impl;
3 //import org.opendaylight.mdsal.binding.dom.adapter.BindingToNormalizedNodeCodec;
5 import org.opendaylight.netconf.sal.restconf.impl.ControllerContext;
6 import org.opendaylight.netconf.sal.restconf.impl.InstanceIdentifierContext;
7 import org.opendaylight.netconf.sal.restconf.impl.NormalizedNodeContext;
8 import org.opendaylight.netconf.sal.restconf.impl.WriterParameters;
9 import org.opendaylight.yangtools.binding.data.codec.api.BindingNormalizedNodeSerializer;
10 import org.opendaylight.yangtools.yang.binding.DataContainer;
11 import org.opendaylight.yangtools.yang.binding.DataObject;
12 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
13 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
14 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
15 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
16 import org.opendaylight.yangtools.yang.model.api.*;
21 * Created by Administrator on 2017/3/17.
23 public class YangDataTransformJava2NNServiceImpl {
24 BindingNormalizedNodeSerializer mappingService;
25 public YangDataTransformJava2NNServiceImpl(BindingNormalizedNodeSerializer mappingService)
27 this.mappingService=mappingService;
29 public <T extends DataObject> NormalizedNodeContext yangDataObjecttoNNC(InstanceIdentifier<T> identifier, String uri, T dobj)
31 final InstanceIdentifierContext<?> iiContext = ControllerContext.getInstance().toInstanceIdentifier(uri);
32 Map.Entry<YangInstanceIdentifier, NormalizedNode<?, ?>> temp = mappingService.toNormalizedNode(identifier, dobj);
33 WriterParameters.WriterParametersBuilder aa=new WriterParameters.WriterParametersBuilder();
34 aa.setPrettyPrint(true);
35 return new NormalizedNodeContext( iiContext, temp.getValue() ,aa.build());
37 public <T extends DataObject> NormalizedNode yangDataObjecttoNN( InstanceIdentifier<T> identifier,T dobj) {
38 Map.Entry<YangInstanceIdentifier, NormalizedNode<?, ?>> temp = mappingService.toNormalizedNode(identifier, dobj);
42 return temp.getValue();
45 public NormalizedNodeContext yangNNtoNNC(NormalizedNode nn, String uri){
46 final InstanceIdentifierContext<?> iiContext = ControllerContext.getInstance().toInstanceIdentifier(uri);
47 WriterParameters.WriterParametersBuilder aa=new WriterParameters.WriterParametersBuilder();
48 aa.setPrettyPrint(true);
49 return new NormalizedNodeContext(iiContext, nn,aa.build());
51 public <T extends DataObject> T yangDataObjectfromNN(YangInstanceIdentifier identifier,NormalizedNode node) {
52 Map.Entry<InstanceIdentifier<?>, DataObject> temp = mappingService.fromNormalizedNode(identifier, node);
56 return (T) temp.getValue();
59 public <T extends DataObject> T yangDataObjectfromNNC(NormalizedNodeContext nnc)
61 return yangDataObjectfromNN(nnc.getInstanceIdentifierContext().getInstanceIdentifier(),nnc.getData());
63 public ContainerNode yangRpcDatatoNN(final DataContainer rpcdata){
64 return mappingService.toNormalizedNodeRpcData(rpcdata);
66 public DataObject yangRpcDatafromNN(SchemaPath path, final ContainerNode data)
68 return mappingService.fromNormalizedNodeRpcData(path,data);
70 public static DataSchemaNode findDataSchemaNode(String uriPath,String inputoroutput)
72 final InstanceIdentifierContext<?> iicontext = ControllerContext.getInstance().toInstanceIdentifier(uriPath);
73 DataSchemaNode dsn=JsonParserStream.getWrapSchemaNode( iicontext.getSchemaNode());
76 public static SchemaNode findSchemaNode(final InstanceIdentifierContext<?> iicontext ,String inputoroutput)
78 SchemaNode schemaNode;
80 final SchemaNode schemaNode0 = iicontext.getSchemaNode();
81 if (schemaNode0 instanceof RpcDefinition) {
82 if (inputoroutput.contains("output")) {
83 schemaNode = ((RpcDefinition) schemaNode0).getOutput();
85 schemaNode = ((RpcDefinition) schemaNode0).getInput();
88 } else if(schemaNode0 instanceof NotificationDefinition)
90 schemaNode=schemaNode0;
92 else if (schemaNode0 instanceof DataSchemaNode) {
93 schemaNode = schemaNode0;
95 throw new IllegalStateException("Unknow SchemaNode");
100 public static DataSchemaNode findRpcSchemaNode(final InstanceIdentifierContext<?> iicontext,String inputoroutput)
102 DataSchemaNode schemaNode;
103 final SchemaNode schemaNode0 = iicontext.getSchemaNode();
104 boolean isInput = false;
105 if (schemaNode0 instanceof RpcDefinition) {
106 if (inputoroutput.contains("output")) {
107 schemaNode = ((RpcDefinition) schemaNode0).getOutput();
110 schemaNode = ((RpcDefinition) schemaNode0).getInput();
114 } else if (schemaNode0 instanceof DataSchemaNode) {
115 schemaNode = (DataSchemaNode) schemaNode0;
117 throw new IllegalStateException("Unknow SchemaNode");
121 public DataObject yangRpcDatafromNN(final InstanceIdentifierContext<?> iicontext , final NormalizedNode data) {
122 // final InstanceIdentifierContext<?> iicontext = ControllerContext.getInstance().toInstanceIdentifier(uriPath);
123 ContainerNode contn= (ContainerNode)data;
124 DataSchemaNode schemaNode= findRpcSchemaNode(iicontext,contn.getNodeType().getLocalName());;
125 /* final SchemaNode schemaNode0 = iicontext.getSchemaNode();
126 boolean isInput = false;
127 if (schemaNode0 instanceof RpcDefinition) {
128 if (contn.getNodeType().getLocalName().contains("output")) {
129 schemaNode = ((RpcDefinition) schemaNode0).getOutput();
132 schemaNode = ((RpcDefinition) schemaNode0).getInput();
136 } else if (schemaNode0 instanceof DataSchemaNode) {
137 schemaNode = (DataSchemaNode) schemaNode0;
139 throw new IllegalStateException("Unknow SchemaNode");
141 SchemaPath path=schemaNode.getPath();
142 return mappingService.fromNormalizedNodeRpcData(path,contn);