1 package org.opendaylight.controller.sal.binding.impl.connect.dom
3 import org.opendaylight.controller.sal.core.api.model.SchemaServiceListener
4 import org.opendaylight.yangtools.yang.model.api.SchemaContext
5 import org.opendaylight.yangtools.sal.binding.model.api.CodeGenerator
6 import org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl
7 import org.opendaylight.yangtools.sal.binding.generator.api.BindingGenerator
8 import org.opendaylight.yangtools.yang.data.api.CompositeNode
9 import org.opendaylight.yangtools.yang.binding.DataObject
10 import org.opendaylight.yangtools.yang.data.impl.CompositeNodeTOImpl
11 import java.util.Collections
12 import java.util.Map.Entry
13 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier
14 import java.util.AbstractMap.SimpleEntry
15 import org.opendaylight.controller.sal.core.api.model.SchemaService
17 class MappingServiceImpl implements SchemaServiceListener, BindingIndependentMappingService {
19 var extension BindingMapping mapping = new BindingMapping;
22 BindingGeneratorImpl binding;
25 SchemaService schemaService;
27 override onGlobalContextUpdated(SchemaContext arg0) {
28 recreateBindingContext(arg0);
31 def recreateBindingContext(SchemaContext schemaContext) {
32 val newBinding = new BindingGeneratorImpl();
33 newBinding.generateTypes(schemaContext);
34 val newMapping = new BindingMapping();
35 for (entry : newBinding.moduleContexts.entrySet) {
36 val module = entry.key;
37 val context = entry.value;
39 newMapping.updateBinding(schemaContext, context);
44 override CompositeNode toDataDom(DataObject data) {
45 mapping.toCompositeNode(data);
48 override Entry<org.opendaylight.yangtools.yang.data.api.InstanceIdentifier, CompositeNode> toDataDom(
49 Entry<InstanceIdentifier<? extends DataObject>, DataObject> entry) {
50 val key = mapping.toDataDom(entry.key);
51 val data = mapping.toCompositeNode(entry.value);
52 return new SimpleEntry(key, data);
55 override org.opendaylight.yangtools.yang.data.api.InstanceIdentifier toDataDom(
56 InstanceIdentifier<? extends DataObject> path) {
57 return mapping.toDataDom(path);
60 override dataObjectFromDataDom(InstanceIdentifier<? extends DataObject> path, CompositeNode result) {
61 return mapping.dataObjectFromDataDom(path,result);
64 public def void start() {
65 schemaService.registerSchemaServiceListener(this);
66 recreateBindingContext(schemaService.globalContext);