X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-binding-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fbinding%2Fimpl%2Fconnect%2Fdom%2FBindingIndependentDataServiceConnector.java;h=9eff29f8cc4e256f6d9c3163cb551650e226b02f;hb=616a88111ea9603f0d6f93c7462e6dab39644fcf;hp=7a72afc88550b3871ea72286f5b791b4a90f568c;hpb=b2d4575c4425e3b3d5aeaf1190e01e5d5a5286aa;p=controller.git diff --git a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/impl/connect/dom/BindingIndependentDataServiceConnector.java b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/impl/connect/dom/BindingIndependentDataServiceConnector.java index 7a72afc885..9eff29f8cc 100644 --- a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/impl/connect/dom/BindingIndependentDataServiceConnector.java +++ b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/impl/connect/dom/BindingIndependentDataServiceConnector.java @@ -22,6 +22,8 @@ import org.opendaylight.controller.sal.core.api.Provider; import org.opendaylight.controller.sal.core.api.Broker.ProviderSession; import org.opendaylight.controller.sal.core.api.data.DataModificationTransaction; import org.opendaylight.yangtools.concepts.Registration; +import org.opendaylight.yangtools.yang.binding.Augmentable; +import org.opendaylight.yangtools.yang.binding.Augmentation; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.RpcError; @@ -61,8 +63,22 @@ public class BindingIndependentDataServiceConnector implements // public DataObject readOperationalData(InstanceIdentifier path) { try { org.opendaylight.yangtools.yang.data.api.InstanceIdentifier biPath = mappingService.toDataDom(path); + + CompositeNode result = biDataService.readOperationalData(biPath); + Class targetType = path.getTargetType(); + + if(Augmentation.class.isAssignableFrom(targetType)) { + path = mappingService.fromDataDom(biPath); + Class> augmentType = (Class>) targetType; + DataObject parentTo = mappingService.dataObjectFromDataDom(path, result); + if(parentTo instanceof Augmentable) { + return (DataObject) ((Augmentable) parentTo).getAugmentation(augmentType); + } + + } return mappingService.dataObjectFromDataDom(path, result); + } catch (DeserializationException e) { throw new IllegalStateException(e); } @@ -116,7 +132,7 @@ public class BindingIndependentDataServiceConnector implements // DataObject baData = mappingService.dataObjectFromDataDom(baKey, entry.getValue()); target.putConfigurationData(baKey, baData); } catch (DeserializationException e) { - LOG.error("Ommiting from BA transaction: {}. Reason{}.", entry.getKey(), e); + LOG.error("Ommiting from BA transaction: {}.", entry.getKey(), e); } } for (Entry entry : source @@ -127,7 +143,7 @@ public class BindingIndependentDataServiceConnector implements // DataObject baData = mappingService.dataObjectFromDataDom(baKey, entry.getValue()); target.putOperationalData(baKey, baData); } catch (DeserializationException e) { - LOG.error("Ommiting from BA transaction: {}. Reason{}.", entry.getKey(), e); + LOG.error("Ommiting from BA transaction: {}.", entry.getKey(), e); } } for (org.opendaylight.yangtools.yang.data.api.InstanceIdentifier entry : source.getRemovedConfigurationData()) { @@ -136,7 +152,7 @@ public class BindingIndependentDataServiceConnector implements // InstanceIdentifier baEntry = mappingService.fromDataDom(entry); target.removeConfigurationData(baEntry); } catch (DeserializationException e) { - LOG.error("Ommiting from BA transaction: {}. Reason{}.", entry, e); + LOG.error("Ommiting from BA transaction: {}.", entry, e); } } for (org.opendaylight.yangtools.yang.data.api.InstanceIdentifier entry : source.getRemovedOperationalData()) { @@ -145,7 +161,7 @@ public class BindingIndependentDataServiceConnector implements // InstanceIdentifier baEntry = mappingService.fromDataDom(entry); target.removeOperationalData(baEntry); } catch (DeserializationException e) { - LOG.error("Ommiting from BA transaction: {}. Reason{}.", entry, e); + LOG.error("Ommiting from BA transaction: {}.", entry, e); } } return target; @@ -191,7 +207,6 @@ public class BindingIndependentDataServiceConnector implements // @Override public void close() throws Exception { - if (baCommitHandlerRegistration != null) { baCommitHandlerRegistration.close(); } @@ -313,7 +328,6 @@ public class BindingIndependentDataServiceConnector implements // org.opendaylight.yangtools.yang.data.api.InstanceIdentifier domPath = mappingService.toDataDom(registration .getPath()); - // FIXME: do registration based on only active commit handlers. }