The ControllerContext#toQname was just looking for module using the module name.
In scenarios where you have multiple revision for the same module, the method
was returning the latest schema.
This fix is to retreive the schema based on the revision date
Change-Id: Ief10dab8925bc942f446895fe7078ebcb1105a3a
Signed-off-by: adetalhouet <adetalhouet@inocybe.com>
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
targetNode = findInstanceDataChildByNameAndNamespace(parentNode, nodeName, module.getNamespace());
if (targetNode == null && parentNode instanceof Module) {
targetNode = findInstanceDataChildByNameAndNamespace(parentNode, nodeName, module.getNamespace());
if (targetNode == null && parentNode instanceof Module) {
- final RpcDefinition rpc = ControllerContext.getInstance().getRpcDefinition(head);
+ final RpcDefinition rpc = ControllerContext.getInstance().getRpcDefinition(head, module.getRevision());
if (rpc != null) {
return new InstanceIdentifierContext<RpcDefinition>(builder.build(), rpc, mountPoint,
mountPoint != null ? mountPoint.getSchemaContext() : globalSchema);
if (rpc != null) {
return new InstanceIdentifierContext<RpcDefinition>(builder.build(), rpc, mountPoint,
mountPoint != null ? mountPoint.getSchemaContext() : globalSchema);
String additionalInfo = "";
if (decoded == null) {
if ((baseType instanceof IdentityrefTypeDefinition)) {
String additionalInfo = "";
if (decoded == null) {
if ((baseType instanceof IdentityrefTypeDefinition)) {
- decoded = toQName(urlDecoded);
+ decoded = toQName(urlDecoded, null);
additionalInfo = "For key which is of type identityref it should be in format module_name:identity_name.";
}
}
additionalInfo = "For key which is of type identityref it should be in format module_name:identity_name.";
}
}
return str.substring(idx + 1);
}
return str.substring(idx + 1);
}
- private QName toQName(final String name) {
+ private QName toQName(final String name, final Date revisionDate) {
checkPreconditions();
final String module = toModuleName(name);
final String node = toNodeName(name);
checkPreconditions();
final String module = toModuleName(name);
final String node = toNodeName(name);
- final Module m = globalSchema.findModuleByName(module, null);
+ final Module m = globalSchema.findModuleByName(module, revisionDate);
return m == null ? null : QName.create(m.getQNameModule(), node);
}
return m == null ? null : QName.create(m.getQNameModule(), node);
}
return node instanceof ListSchemaNode || node instanceof ContainerSchemaNode;
}
return node instanceof ListSchemaNode || node instanceof ContainerSchemaNode;
}
- public RpcDefinition getRpcDefinition(final String name) {
- final QName validName = toQName(name);
+ public RpcDefinition getRpcDefinition(final String name, final Date revisionDate) {
+ final QName validName = toQName(name, revisionDate);
return validName == null ? null : qnameToRpc.get().get(validName);
}
return validName == null ? null : qnameToRpc.get().get(validName);
}
RpcDefinition rpc = null;
if (mountPoint == null) {
RpcDefinition rpc = null;
if (mountPoint == null) {
- rpc = controllerContext.getRpcDefinition(identifierDecoded);
+ rpc = controllerContext.getRpcDefinition(identifierDecoded, null);
} else {
rpc = findRpc(mountPoint.getSchemaContext(), identifierDecoded);
}
} else {
rpc = findRpc(mountPoint.getSchemaContext(), identifierDecoded);
}