blob: e2f4389ddae8ceeef5dd477e34554933b0ff1dbd [file] [log] [blame]
Sean Condon06613e92017-06-09 15:14:01 +01001/*
2 * Copyright 2017-present Open Networking Laboratory
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package org.onosproject.yang;
17
18import org.apache.felix.scr.annotations.Activate;
19import org.apache.felix.scr.annotations.Deactivate;
20import org.apache.felix.scr.annotations.Reference;
21import org.apache.felix.scr.annotations.ReferenceCardinality;
22import org.onosproject.core.CoreService;
23import org.onosproject.drivers.netconf.MockCoreService;
24import org.onosproject.yang.model.ModelConverter;
25import org.onosproject.yang.model.ModelObjectData;
26import org.onosproject.yang.model.NodeKey;
27import org.onosproject.yang.model.ResourceData;
28import org.onosproject.yang.model.ResourceId;
29import org.onosproject.yang.model.SchemaContext;
30import org.onosproject.yang.model.SchemaContextProvider;
31import org.onosproject.yang.model.YangModel;
32import org.onosproject.yang.runtime.CompositeData;
33import org.onosproject.yang.runtime.CompositeStream;
34import org.onosproject.yang.runtime.ModelRegistrationParam;
35import org.onosproject.yang.runtime.RuntimeContext;
36import org.onosproject.yang.runtime.YangModelRegistry;
37import org.onosproject.yang.runtime.YangRuntimeService;
38import org.onosproject.yang.runtime.YangSerializer;
39import org.onosproject.yang.runtime.YangSerializerRegistry;
40import org.onosproject.yang.runtime.impl.DefaultModelConverter;
41import org.onosproject.yang.runtime.impl.DefaultYangModelRegistry;
42import org.onosproject.yang.runtime.impl.DefaultYangRuntimeHandler;
43import org.onosproject.yang.runtime.impl.DefaultYangSerializerRegistry;
44import org.onosproject.yang.serializers.json.JsonSerializer;
45import org.onosproject.yang.serializers.xml.XmlSerializer;
46import org.slf4j.Logger;
47import org.slf4j.LoggerFactory;
48
49import java.util.Set;
50
51import static com.google.common.base.Preconditions.checkNotNull;
52
53public class MockYangRuntimeManager implements YangModelRegistry,
54 YangSerializerRegistry, YangRuntimeService, ModelConverter,
55 SchemaContextProvider {
56
57 private static final String APP_ID = "org.onosproject.yang";
58 private final Logger log = LoggerFactory.getLogger(getClass());
59
60 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
61 protected CoreService coreService;
62
63 private DefaultYangModelRegistry modelRegistry;
64 private DefaultYangSerializerRegistry serializerRegistry;
65 private DefaultYangRuntimeHandler runtimeService;
66 private DefaultModelConverter modelConverter;
67
68 public void setModelRegistry(DefaultYangModelRegistry yReg) {
69 this.modelRegistry = yReg;
70 }
71
72 @Activate
73 public void activate() {
74 coreService = new MockCoreService();
75 coreService.registerApplication(APP_ID);
76 serializerRegistry = new DefaultYangSerializerRegistry();
77 runtimeService =
78 new DefaultYangRuntimeHandler(serializerRegistry, modelRegistry);
79 serializerRegistry.registerSerializer(new JsonSerializer());
80 serializerRegistry.registerSerializer(new XmlSerializer());
81 modelConverter = new DefaultModelConverter(modelRegistry);
82 log.info("Started");
83 }
84
85 @Deactivate
86 public void deactivate() {
87 log.info("Stopped");
88 }
89
90
91 @Override
92 public void registerModel(ModelRegistrationParam p) {
93 modelRegistry.registerModel(p);
94 }
95
96 @Override
97 public void unregisterModel(ModelRegistrationParam p) {
98 modelRegistry.unregisterModel(p);
99 }
100
101 @Override
102 public Set<YangModel> getModels() {
103 return modelRegistry.getModels();
104 }
105
106 @Override
107 public void registerSerializer(YangSerializer ys) {
108 serializerRegistry.registerSerializer(ys);
109 }
110
111 @Override
112 public void unregisterSerializer(YangSerializer ys) {
113 serializerRegistry.unregisterSerializer(ys);
114 }
115
116 @Override
117 public Set<YangSerializer> getSerializers() {
118 return serializerRegistry.getSerializers();
119 }
120
121 @Override
122 public CompositeData decode(CompositeStream cs, RuntimeContext rc) {
123 return runtimeService.decode(cs, rc);
124 }
125
126 @Override
127 public CompositeStream encode(CompositeData cd, RuntimeContext rc) {
128 return runtimeService.encode(cd, rc);
129 }
130
131 @Override
132 public ModelObjectData createModel(ResourceData resourceData) {
133 return modelConverter.createModel(resourceData);
134 }
135
136 @Override
137 public ResourceData createDataNode(ModelObjectData modelObjectData) {
138 return modelConverter.createDataNode(modelObjectData);
139 }
140
141 @Override
142 public SchemaContext getSchemaContext(ResourceId resourceId) {
143 checkNotNull(resourceId, " resource id can't be null.");
144 NodeKey key = resourceId.nodeKeys().get(0);
145 if (resourceId.nodeKeys().size() == 1 &&
146 "/".equals(key.schemaId().name())) {
147 return modelRegistry;
148 }
149 log.info("To be implemented.");
150 return null;
151 }
152}