onModelContextUpdated(schemas);
}
- public InstanceIdentifierContext<?> toInstanceIdentifier(final String restconfInstance) {
+ public InstanceIdentifierContext toInstanceIdentifier(final String restconfInstance) {
return toIdentifier(restconfInstance, false);
}
return globalSchema;
}
- public InstanceIdentifierContext<?> toMountPointIdentifier(final String restconfInstance) {
+ public InstanceIdentifierContext toMountPointIdentifier(final String restconfInstance) {
return toIdentifier(restconfInstance, true);
}
- private InstanceIdentifierContext<?> toIdentifier(final String restconfInstance,
- final boolean toMountPointIdentifier) {
+ private InstanceIdentifierContext toIdentifier(final String restconfInstance,
+ final boolean toMountPointIdentifier) {
checkPreconditions();
if (restconfInstance == null) {
- return new InstanceIdentifierContext<>(YangInstanceIdentifier.empty(), globalSchema, null,
- globalSchema);
+ return InstanceIdentifierContext.ofLocalRoot(globalSchema);
}
final List<String> pathArgs = urlPathArgsDecode(SLASH_SPLITTER.split(restconfInstance));
ErrorType.PROTOCOL, ErrorTag.UNKNOWN_ELEMENT);
}
- final InstanceIdentifierContext<?> iiWithSchemaNode =
+ final InstanceIdentifierContext iiWithSchemaNode =
collectPathArguments(builder, pathArgs, latestModule.iterator().next(), null, toMountPointIdentifier);
if (iiWithSchemaNode == null) {
}
@SuppressFBWarnings(value = "RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE", justification = "Unrecognised NullableDecl")
- private InstanceIdentifierContext<?> collectPathArguments(final InstanceIdentifierBuilder builder,
+ private InstanceIdentifierContext collectPathArguments(final InstanceIdentifierBuilder builder,
final List<String> strings, final DataNodeContainer parentNode, final DOMMountPoint mountPoint,
final boolean returnJustMountPoint) {
requireNonNull(strings);
return null;
}
- final EffectiveModelContext modelContext = mountPoint != null ? getModelContext(mountPoint) : globalSchema;
-
if (strings.isEmpty()) {
- return createContext(builder.build(), (DataSchemaNode) parentNode, mountPoint, modelContext);
+ return createContext(builder.build(), (DataSchemaNode) parentNode, mountPoint,
+ mountPoint != null ? getModelContext(mountPoint) : globalSchema);
}
final String head = strings.iterator().next();
}
if (returnJustMountPoint || strings.size() == 1) {
- return new InstanceIdentifierContext<>(YangInstanceIdentifier.empty(), mountPointSchema, mount,
- mountPointSchema);
+ return InstanceIdentifierContext.ofMountPointRoot(mount, mountPointSchema);
}
final String moduleNameBehindMountPoint = toModuleName(strings.get(1));
rpc = getRpcDefinition(module, rpcName);
}
if (rpc != null) {
- return new InstanceIdentifierContext<>(builder.build(), rpc, mountPoint, modelContext);
+ return new InstanceIdentifierContext(builder.build(), rpc, mountPoint,
+ mountPoint != null ? getModelContext(mountPoint) : globalSchema);
}
}
ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE);
}
- final SchemaInferenceStack stack = SchemaInferenceStack.of(modelContext);
- final YangInstanceIdentifier identifier = builder.build();
- identifier.getPathArguments().forEach(p -> stack.enterSchemaTree(p.getNodeType()));
- stack.enterSchemaTree(targetNode.getQName());
- stack.enterSchemaTree(key);
- addKeyValue(keyValues, listNode.getDataChildByName(key), uriKeyValue, mountPoint, stack);
+ addKeyValue(keyValues, listNode.getDataChildByName(key), uriKeyValue, mountPoint);
index++;
}
}
returnJustMountPoint);
}
- return createContext(builder.build(), targetNode, mountPoint, modelContext);
+ return createContext(builder.build(), targetNode, mountPoint,
+ mountPoint != null ? getModelContext(mountPoint) : globalSchema);
}
- private static InstanceIdentifierContext<?> createContext(final YangInstanceIdentifier instance,
+ private static InstanceIdentifierContext createContext(final YangInstanceIdentifier instance,
final DataSchemaNode dataSchemaNode, final DOMMountPoint mountPoint,
final EffectiveModelContext schemaContext) {
final YangInstanceIdentifier instanceIdentifier = new DataNormalizer(schemaContext).toNormalized(instance);
- return new InstanceIdentifierContext<>(instanceIdentifier, dataSchemaNode, mountPoint, schemaContext);
+ return new InstanceIdentifierContext(instanceIdentifier, dataSchemaNode, mountPoint, schemaContext);
}
public static DataSchemaNode findInstanceDataChildByNameAndNamespace(final DataNodeContainer container,
}
private void addKeyValue(final HashMap<QName, Object> map, final DataSchemaNode node, final String uriValue,
- final DOMMountPoint mountPoint, final SchemaInferenceStack stack) {
+ final DOMMountPoint mountPoint) {
checkArgument(node instanceof LeafSchemaNode);
+ final EffectiveModelContext schemaContext = mountPoint == null ? globalSchema : getModelContext(mountPoint);
final String urlDecoded = urlPathArgDecode(requireNonNull(uriValue));
TypeDefinition<?> typedef = ((LeafSchemaNode) node).getType();
final TypeDefinition<?> baseType = RestUtil.resolveBaseTypeFrom(typedef);
if (baseType instanceof LeafrefTypeDefinition) {
- typedef = stack.resolveLeafref((LeafrefTypeDefinition) baseType);
+ typedef = SchemaInferenceStack.ofInstantiatedPath(schemaContext, node.getPath())
+ .resolveLeafref((LeafrefTypeDefinition) baseType);
}
final IllegalArgumentCodec<Object, Object> codec = RestCodec.from(typedef, mountPoint, this);
Object decoded = codec.deserialize(urlDecoded);
String additionalInfo = "";
if (decoded == null) {
if (typedef instanceof IdentityrefTypeDefinition) {
- decoded = toQName(stack.getEffectiveModelContext(), urlDecoded);
+ decoded = toQName(schemaContext, urlDecoded);
additionalInfo =
"For key which is of type identityref it should be in format module_name:identity_name.";
}