use of org.eclipse.milo.opcua.sdk.client.nodes.UaVariableTypeNode in project milo by eclipse.
the class UaVariableNodeTest method getTypeDefinition.
@Test
public void getTypeDefinition() throws UaException {
UaVariableNode variableNode = client.getAddressSpace().getVariableNode(Identifiers.Server_ServerStatus);
UaVariableTypeNode variableTypeNode = variableNode.getTypeDefinition();
assertEquals(Identifiers.ServerStatusType, variableTypeNode.getNodeId());
}
use of org.eclipse.milo.opcua.sdk.client.nodes.UaVariableTypeNode in project milo by eclipse.
the class AddressSpace method createVariableTypeNodeFromBaseAttributes.
private CompletableFuture<UaVariableTypeNode> createVariableTypeNodeFromBaseAttributes(NodeId nodeId, List<DataValue> baseAttributeValues) {
Set<AttributeId> remainingAttributes = Sets.difference(AttributeId.VARIABLE_TYPE_ATTRIBUTES, AttributeId.BASE_ATTRIBUTES);
CompletableFuture<ReadResponse> attributesFuture = readAttributes(nodeId, remainingAttributes);
return attributesFuture.thenCompose(response -> {
List<DataValue> attributeValues = new ArrayList<>(baseAttributeValues);
Collections.addAll(attributeValues, response.getResults());
try {
UaVariableTypeNode node = newVariableTypeNode(nodeId, attributeValues);
nodeCache.put(node.getNodeId(), node);
return completedFuture(node);
} catch (UaException e) {
return failedFuture(e);
}
});
}
use of org.eclipse.milo.opcua.sdk.client.nodes.UaVariableTypeNode in project milo by eclipse.
the class AddressSpace method newVariableTypeNode.
private UaVariableTypeNode newVariableTypeNode(NodeId nodeId, List<DataValue> attributeValues) throws UaException {
DataValue nodeIdDataValue = attributeValues.get(0);
StatusCode nodeIdStatusCode = nodeIdDataValue.getStatusCode();
if (nodeIdStatusCode != null && nodeIdStatusCode.isBad()) {
throw new UaException(nodeIdStatusCode);
}
try {
NodeClass nodeClass = NodeClass.from((Integer) attributeValues.get(1).getValue().getValue());
Preconditions.checkArgument(nodeClass == NodeClass.VariableType, "expected NodeClass.VariableType, got NodeClass." + nodeClass);
QualifiedName browseName = (QualifiedName) attributeValues.get(2).getValue().getValue();
LocalizedText displayName = (LocalizedText) attributeValues.get(3).getValue().getValue();
LocalizedText description = getAttributeOrNull(attributeValues.get(4), LocalizedText.class);
UInteger writeMask = getAttributeOrNull(attributeValues.get(5), UInteger.class);
UInteger userWriteMask = getAttributeOrNull(attributeValues.get(6), UInteger.class);
DataValue value = attributeValues.get(7);
NodeId dataType = (NodeId) attributeValues.get(8).getValue().getValue();
Integer valueRank = (Integer) attributeValues.get(9).getValue().getValue();
UInteger[] arrayDimensions = getAttributeOrNull(attributeValues.get(10), UInteger[].class);
Boolean isAbstract = (Boolean) attributeValues.get(11).getValue().getValue();
return new UaVariableTypeNode(client, nodeId, nodeClass, browseName, displayName, description, writeMask, userWriteMask, value, dataType, valueRank, arrayDimensions, isAbstract);
} catch (Throwable t) {
throw UaException.extract(t).orElse(new UaException(StatusCodes.Bad_UnexpectedError, t));
}
}
Aggregations