X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-rest-connector%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Frestconf%2Fimpl%2FControllerContext.java;h=a0b05150a84344a8c0cff9ca08472ac3067f2498;hb=refs%2Fchanges%2F48%2F15948%2F13;hp=8bdf401300e91d4e3a67c7e0e58970e432a1283b;hpb=40c2487f8068ee8ba045798d3be716899c77a6e6;p=controller.git diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/ControllerContext.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/ControllerContext.java index 8bdf401300..a0b05150a8 100644 --- a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/ControllerContext.java +++ b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/ControllerContext.java @@ -31,6 +31,7 @@ import java.util.Map.Entry; import java.util.Set; import java.util.concurrent.atomic.AtomicReference; import javax.ws.rs.core.Response.Status; +import org.opendaylight.controller.md.sal.common.impl.util.compat.DataNormalizationException; import org.opendaylight.controller.md.sal.common.impl.util.compat.DataNormalizationOperation; import org.opendaylight.controller.md.sal.common.impl.util.compat.DataNormalizer; import org.opendaylight.controller.md.sal.dom.api.DOMMountPoint; @@ -587,6 +588,15 @@ public class ControllerContext implements SchemaContextListener { } targetNode = findInstanceDataChildByNameAndNamespace(parentNode, nodeName, module.getNamespace()); + + if (targetNode == null && parentNode instanceof Module) { + final RpcDefinition rpc = ControllerContext.getInstance().getRpcDefinition(head); + if (rpc != null) { + return new InstanceIdentifierContext(builder.build(), rpc, mountPoint, + mountPoint != null ? mountPoint.getSchemaContext() : globalSchema); + } + } + if (targetNode == null) { throw new RestconfDocumentedException("URI has bad format. Possible reasons:\n" + " 1. \"" + head + "\" was not found in parent data node.\n" + " 2. \"" + head @@ -946,6 +956,26 @@ public class ControllerContext implements SchemaContextListener { } } + public YangInstanceIdentifier toXpathRepresentation(final YangInstanceIdentifier instanceIdentifier) { + try { + return dataNormalizer.toLegacy(instanceIdentifier); + } catch (NullPointerException e) { + throw new RestconfDocumentedException("Data normalizer isn't set. Normalization isn't possible", e); + } catch (DataNormalizationException e) { + throw new RestconfDocumentedException("Data normalizer failed. Normalization isn't possible", e); + } + } + + public boolean isNodeMixin(YangInstanceIdentifier path) { + final DataNormalizationOperation operation; + try { + operation = dataNormalizer.getOperation(path); + } catch (DataNormalizationException e) { + throw new RestconfDocumentedException("Data normalizer failed. Normalization isn't possible", e); + } + return operation.isMixin(); + } + public DataNormalizationOperation getRootOperation() { return dataNormalizer.getRootOperation(); }