import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
+import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public final static String MOUNT = "yang-ext:mount";
- private final static String URI_ENCODING_CHAR_SET = "ISO-8859-1";
+ private final static String URI_ENCODING_CHAR_SET = "UTF-8";
private static final Splitter SLASH_SPLITTER = Splitter.on('/');
targetNode = findInstanceDataChildByNameAndNamespace(parentNode, nodeName, module.getNamespace());
if (targetNode == null && parentNode instanceof Module) {
- final RpcDefinition rpc = ControllerContext.getInstance().getRpcDefinition(head);
+ final RpcDefinition rpc;
+ if (mountPoint == null) {
+ rpc = ControllerContext.getInstance().getRpcDefinition(head, module.getRevision());
+ } else {
+ final String rpcName = toNodeName(head);
+ rpc = ControllerContext.getInstance().getRpcDefinition(module, rpcName);
+ }
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)) {
- decoded = toQName(urlDecoded);
+ decoded = toQName(urlDecoded, null);
additionalInfo = "For key which is of type identityref it should be in format module_name:identity_name.";
}
}
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);
- final Module m = globalSchema.findModuleByName(module, null);
+ final Module m = globalSchema.findModuleByName(module, revisionDate);
return m == null ? null : QName.create(m.getQNameModule(), node);
}
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);
}
+ private RpcDefinition getRpcDefinition(final Module module, final String rpcName) {
+ QName rpcQName = QName.create(module.getQNameModule(), rpcName);
+ for (RpcDefinition rpcDefinition : module.getRpcs()) {
+ if (rpcQName.equals(rpcDefinition.getQName())) {
+ return rpcDefinition;
+ }
+ }
+ return null;
+ }
+
@Override
public void onGlobalContextUpdated(final SchemaContext context) {
if (context != null) {