Search in sources :

Example 1 with Argument

use of org.eclipse.milo.opcua.stack.core.types.structured.Argument in project FAAAST-Service by FraunhoferIOSB.

the class OpcUaAssetConnection method registerOperationProvider.

/**
 * {@inheritdoc}
 *
 * @throws AssetConnectionException if nodeId could not be parsed
 * @throws AssetConnectionException if nodeId does not refer to a method
 *             node
 * @throws AssetConnectionException if parent node of nodeId could not be
 *             resolved
 * @throws AssetConnectionException if output variables are null or do
 *             contain any other type than
 *             {@link de.fraunhofer.iosb.ilt.faaast.service.model.value.PropertyValue}
 */
@Override
public void registerOperationProvider(Reference reference, OpcUaOperationProviderConfig operationProvider) throws AssetConnectionException {
    String baseErrorMessage = "error registering operation provider";
    final NodeId nodeId = parseNodeId(operationProvider.getNodeId());
    final UaNode node;
    try {
        node = client.getAddressSpace().getNode(nodeId);
    } catch (UaException ex) {
        throw new AssetConnectionException(String.format("%s - could not resolve nodeId (nodeId: %s)", baseErrorMessage, operationProvider.getNodeId()), ex);
    }
    if (!UaMethodNode.class.isAssignableFrom(node.getClass())) {
        throw new AssetConnectionException(String.format("%s - provided node must be a method (nodeId: %s", baseErrorMessage, operationProvider.getNodeId()));
    }
    final UaMethodNode methodNode = (UaMethodNode) node;
    final NodeId parentNodeId;
    try {
        parentNodeId = client.getAddressSpace().getNode(nodeId).browseNodes(AddressSpace.BrowseOptions.builder().setBrowseDirection(BrowseDirection.Inverse).build()).get(0).getNodeId();
    } catch (UaException ex) {
        throw new AssetConnectionException(String.format("%s - could not resolve parent node (nodeId: %s)", baseErrorMessage, operationProvider.getNodeId()), ex);
    }
    final Argument[] methodArguments;
    try {
        methodArguments = methodNode.readInputArgumentsAsync().get() != null ? methodNode.readInputArgumentsAsync().get() : new Argument[0];
    } catch (InterruptedException | ExecutionException ex) {
        throw new AssetConnectionException(String.format("%s - could not read input arguments (nodeId: %s)", baseErrorMessage, operationProvider.getNodeId()), ex);
    }
    final Argument[] methodOutputArguments;
    try {
        methodOutputArguments = methodNode.readOutputArgumentsAsync().get() != null ? methodNode.readOutputArgumentsAsync().get() : new Argument[0];
    } catch (InterruptedException | ExecutionException ex) {
        throw new AssetConnectionException(String.format("%s - could not read ouput arguments (nodeId: %s)", baseErrorMessage, operationProvider.getNodeId()), ex);
    }
    final OperationVariable[] outputVariables = serviceContext.getOperationOutputVariables(reference) != null ? serviceContext.getOperationOutputVariables(reference) : new OperationVariable[0];
    for (var outputVariable : outputVariables) {
        if (outputVariable == null) {
            throw new AssetConnectionException(String.format("%s - output variable must be non-null (nodeId: %s)", baseErrorMessage, operationProvider.getNodeId()));
        }
        SubmodelElement submodelElement = outputVariable.getValue();
        if (submodelElement == null) {
            throw new AssetConnectionException(String.format("%s - output variable must contain non-null submodel element (nodeId: %s)", baseErrorMessage, operationProvider.getNodeId()));
        }
        if (!Property.class.isAssignableFrom(submodelElement.getClass())) {
            throw new AssetConnectionException(String.format("%s - unsupported element type (nodeId: %s, element type: %s)", baseErrorMessage, submodelElement.getClass(), operationProvider.getNodeId()));
        }
    }
    this.operationProviders.put(reference, new AssetOperationProvider() {

        @Override
        public OperationVariable[] invoke(OperationVariable[] input, OperationVariable[] inoutput) throws AssetConnectionException {
            String baseErrorMessage = "error invoking operation on asset connection";
            Map<String, ElementValue> inputParameter = input == null ? new HashMap<>() : Stream.of(input).collect(Collectors.toMap(x -> x.getValue().getIdShort(), x -> ElementValueMapper.toValue(x.getValue())));
            Map<String, ElementValue> inoutputParameter = inoutput == null ? new HashMap<>() : Stream.of(inoutput).collect(Collectors.toMap(x -> x.getValue().getIdShort(), x -> ElementValueMapper.toValue(x.getValue())));
            if (methodArguments.length != (inputParameter.size() + inoutputParameter.size())) {
                throw new AssetConnectionException(String.format("%s - argument count mismatch (expected: %d, provided input arguments: %d, provided inoutput arguments: %d)", baseErrorMessage, methodArguments.length, inputParameter.size(), inoutputParameter.size()));
            }
            Variant[] actualParameters = new Variant[methodArguments.length];
            for (int i = 0; i < methodArguments.length; i++) {
                String argumentName = methodArguments[i].getName();
                ElementValue parameterValue;
                if (inputParameter.containsKey(argumentName)) {
                    parameterValue = inputParameter.get(argumentName);
                } else if (inoutputParameter.containsKey(argumentName)) {
                    parameterValue = inoutputParameter.get(argumentName);
                } else {
                    throw new AssetConnectionException(String.format("%s - missing argument (argument name: %s)", baseErrorMessage, argumentName));
                }
                if (parameterValue == null) {
                    throw new AssetConnectionException(String.format("%s - parameter value must be non-null (argument name: %s)", baseErrorMessage, argumentName));
                }
                if (!PropertyValue.class.isAssignableFrom(parameterValue.getClass())) {
                    throw new AssetConnectionException(String.format("%s - currently only parameters of the Property are supported (argument name: %s, provided type: %s)", baseErrorMessage, argumentName, parameterValue.getClass()));
                }
                actualParameters[i] = valueConverter.convert(((PropertyValue) parameterValue).getValue(), methodArguments[i].getDataType());
            }
            CallMethodResult methodResult;
            try {
                methodResult = client.call(new CallMethodRequest(parentNodeId, nodeId, actualParameters)).get();
            } catch (InterruptedException | ExecutionException ex) {
                throw new AssetConnectionException(String.format("%s - executing OPC UA method failed (nodeId: %s)", baseErrorMessage, operationProvider.getNodeId()));
            }
            OperationVariable[] result = new OperationVariable[outputVariables.length];
            for (int i = 0; i < methodOutputArguments.length; i++) {
                String argumentName = methodArguments[i].getName();
                for (int j = 0; j < outputVariables.length; j++) {
                    if (Objects.equals(argumentName, outputVariables[j].getValue().getIdShort())) {
                        SubmodelElement element = outputVariables[j].getValue();
                        Datatype targetType = ((PropertyValue) ElementValueMapper.toValue(element)).getValue().getDataType();
                        TypedValue<?> newValue = valueConverter.convert(methodResult.getOutputArguments()[i], targetType);
                        // TODO better use deep copy?
                        DefaultProperty newProperty = new DefaultProperty.Builder().idShort(element.getIdShort()).build();
                        ElementValueMapper.setValue(newProperty, PropertyValue.builder().value(newValue).build());
                        result[j] = new DefaultOperationVariable.Builder().value(newProperty).build();
                    }
                }
                // update inoutput variable values
                if (inoutputParameter.containsKey(argumentName)) {
                    // find in original array and set there
                    for (int j = 0; j < inoutput.length; j++) {
                        if (Objects.equals(argumentName, inoutput[j].getValue().getIdShort())) {
                            ElementValueMapper.setValue(inoutput[j].getValue(), new PropertyValue(valueConverter.convert(methodResult.getOutputArguments()[i], ((PropertyValue) inoutputParameter.get(argumentName)).getValue().getDataType())));
                        }
                    }
                }
            }
            return result;
        }
    });
}
Also used : SubmodelElement(io.adminshell.aas.v3.model.SubmodelElement) ValueConversionException(de.fraunhofer.iosb.ilt.faaast.service.assetconnection.opcua.conversion.ValueConversionException) DataElementValue(de.fraunhofer.iosb.ilt.faaast.service.model.value.DataElementValue) VariableNode(org.eclipse.milo.opcua.sdk.core.nodes.VariableNode) LoggerFactory(org.slf4j.LoggerFactory) CallMethodResult(org.eclipse.milo.opcua.stack.core.types.structured.CallMethodResult) AddressSpace(org.eclipse.milo.opcua.sdk.client.AddressSpace) DefaultProperty(io.adminshell.aas.v3.model.impl.DefaultProperty) NewDataListener(de.fraunhofer.iosb.ilt.faaast.service.assetconnection.NewDataListener) Argument(org.eclipse.milo.opcua.stack.core.types.structured.Argument) ManagedDataItem(org.eclipse.milo.opcua.sdk.client.subscriptions.ManagedDataItem) Unsigned.uint(org.eclipse.milo.opcua.stack.core.types.builtin.unsigned.Unsigned.uint) Property(io.adminshell.aas.v3.model.Property) Map(java.util.Map) AssetConnection(de.fraunhofer.iosb.ilt.faaast.service.assetconnection.AssetConnection) UaMethodNode(org.eclipse.milo.opcua.sdk.client.nodes.UaMethodNode) ManagedSubscription(org.eclipse.milo.opcua.sdk.client.subscriptions.ManagedSubscription) AnonymousProvider(org.eclipse.milo.opcua.sdk.client.api.identity.AnonymousProvider) TimestampsToReturn(org.eclipse.milo.opcua.stack.core.types.enumerated.TimestampsToReturn) NodeId(org.eclipse.milo.opcua.stack.core.types.builtin.NodeId) BrowseDirection(org.eclipse.milo.opcua.stack.core.types.enumerated.BrowseDirection) Reference(io.adminshell.aas.v3.model.Reference) Collectors(java.util.stream.Collectors) AssetConnectionException(de.fraunhofer.iosb.ilt.faaast.service.assetconnection.AssetConnectionException) AasUtils(io.adminshell.aas.v3.dataformat.core.util.AasUtils) TypedValue(de.fraunhofer.iosb.ilt.faaast.service.model.value.primitive.TypedValue) Objects(java.util.Objects) List(java.util.List) Stream(java.util.stream.Stream) Variant(org.eclipse.milo.opcua.stack.core.types.builtin.Variant) CoreConfig(de.fraunhofer.iosb.ilt.faaast.service.config.CoreConfig) ElementValue(de.fraunhofer.iosb.ilt.faaast.service.model.value.ElementValue) UaNode(org.eclipse.milo.opcua.sdk.client.nodes.UaNode) StatusCode(org.eclipse.milo.opcua.stack.core.types.builtin.StatusCode) TypeInfo(de.fraunhofer.iosb.ilt.faaast.service.typing.TypeInfo) Optional(java.util.Optional) ElementValueTypeInfo(de.fraunhofer.iosb.ilt.faaast.service.typing.ElementValueTypeInfo) CallMethodRequest(org.eclipse.milo.opcua.stack.core.types.structured.CallMethodRequest) DefaultOperationVariable(io.adminshell.aas.v3.model.impl.DefaultOperationVariable) DataValue(org.eclipse.milo.opcua.stack.core.types.builtin.DataValue) OpcUaClient(org.eclipse.milo.opcua.sdk.client.OpcUaClient) OperationVariable(io.adminshell.aas.v3.model.OperationVariable) ServiceContext(de.fraunhofer.iosb.ilt.faaast.service.ServiceContext) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) UShort(org.eclipse.milo.opcua.stack.core.types.builtin.unsigned.UShort) SecurityPolicy(org.eclipse.milo.opcua.stack.core.security.SecurityPolicy) AssetOperationProvider(de.fraunhofer.iosb.ilt.faaast.service.assetconnection.AssetOperationProvider) StatusCodes(org.eclipse.milo.opcua.stack.core.StatusCodes) Logger(org.slf4j.Logger) ElementValueMapper(de.fraunhofer.iosb.ilt.faaast.service.model.value.mapper.ElementValueMapper) Datatype(de.fraunhofer.iosb.ilt.faaast.service.model.value.primitive.Datatype) LocalizedText(org.eclipse.milo.opcua.stack.core.types.builtin.LocalizedText) ValueConverter(de.fraunhofer.iosb.ilt.faaast.service.assetconnection.opcua.conversion.ValueConverter) AssetSubscriptionProvider(de.fraunhofer.iosb.ilt.faaast.service.assetconnection.AssetSubscriptionProvider) ExecutionException(java.util.concurrent.ExecutionException) UaException(org.eclipse.milo.opcua.stack.core.UaException) LambdaExceptionHelper(de.fraunhofer.iosb.ilt.faaast.service.util.LambdaExceptionHelper) AssetValueProvider(de.fraunhofer.iosb.ilt.faaast.service.assetconnection.AssetValueProvider) PropertyValue(de.fraunhofer.iosb.ilt.faaast.service.model.value.PropertyValue) DefaultOperationVariable(io.adminshell.aas.v3.model.impl.DefaultOperationVariable) OperationVariable(io.adminshell.aas.v3.model.OperationVariable) Argument(org.eclipse.milo.opcua.stack.core.types.structured.Argument) HashMap(java.util.HashMap) UaException(org.eclipse.milo.opcua.stack.core.UaException) UaNode(org.eclipse.milo.opcua.sdk.client.nodes.UaNode) Datatype(de.fraunhofer.iosb.ilt.faaast.service.model.value.primitive.Datatype) UaMethodNode(org.eclipse.milo.opcua.sdk.client.nodes.UaMethodNode) CallMethodResult(org.eclipse.milo.opcua.stack.core.types.structured.CallMethodResult) AssetConnectionException(de.fraunhofer.iosb.ilt.faaast.service.assetconnection.AssetConnectionException) ExecutionException(java.util.concurrent.ExecutionException) DefaultProperty(io.adminshell.aas.v3.model.impl.DefaultProperty) Property(io.adminshell.aas.v3.model.Property) TypedValue(de.fraunhofer.iosb.ilt.faaast.service.model.value.primitive.TypedValue) PropertyValue(de.fraunhofer.iosb.ilt.faaast.service.model.value.PropertyValue) CallMethodRequest(org.eclipse.milo.opcua.stack.core.types.structured.CallMethodRequest) DataElementValue(de.fraunhofer.iosb.ilt.faaast.service.model.value.DataElementValue) ElementValue(de.fraunhofer.iosb.ilt.faaast.service.model.value.ElementValue) DefaultProperty(io.adminshell.aas.v3.model.impl.DefaultProperty) SubmodelElement(io.adminshell.aas.v3.model.SubmodelElement) NodeId(org.eclipse.milo.opcua.stack.core.types.builtin.NodeId) AssetOperationProvider(de.fraunhofer.iosb.ilt.faaast.service.assetconnection.AssetOperationProvider) Map(java.util.Map) HashMap(java.util.HashMap)

Example 2 with Argument

use of org.eclipse.milo.opcua.stack.core.types.structured.Argument in project milo by eclipse.

the class MethodExample2 method logArguments.

private void logArguments(OpcUaClient client, UaMethod method) throws UaException {
    DataTypeTree dataTypeTree = DataTypeTreeBuilder.build(client);
    Argument[] inputArguments = method.getInputArguments();
    Argument[] outputArguments = method.getOutputArguments();
    logArguments(inputArguments, dataTypeTree, true);
    logArguments(outputArguments, dataTypeTree, false);
}
Also used : Argument(org.eclipse.milo.opcua.stack.core.types.structured.Argument) DataTypeTree(org.eclipse.milo.opcua.sdk.core.DataTypeTree)

Example 3 with Argument

use of org.eclipse.milo.opcua.stack.core.types.structured.Argument in project milo by eclipse.

the class BinaryDecoderTest method testDecodeNullArray.

@Test(description = "a null array, once encoded, should decode to a null array")
public void testDecodeNullArray() {
    Argument argument = new Argument("test", Identifiers.Int16, 1, null, LocalizedText.NULL_VALUE);
    @SuppressWarnings("unchecked") OpcUaBinaryDataTypeCodec<Argument> codec = (OpcUaBinaryDataTypeCodec<Argument>) OpcUaDataTypeManager.getInstance().getCodec(OpcUaDefaultBinaryEncoding.ENCODING_NAME, Argument.TYPE_ID.toNodeId(new NamespaceTable()).get());
    assertNotNull(codec);
    codec.encode(new TestSerializationContext(), writer, argument);
    Argument decoded = codec.decode(new TestSerializationContext(), reader);
    assertEquals(decoded.getName(), argument.getName());
    assertNull(decoded.getArrayDimensions());
}
Also used : Argument(org.eclipse.milo.opcua.stack.core.types.structured.Argument) NamespaceTable(org.eclipse.milo.opcua.stack.core.NamespaceTable) TestSerializationContext(org.eclipse.milo.opcua.stack.core.serialization.TestSerializationContext) OpcUaBinaryDataTypeCodec(org.eclipse.milo.opcua.stack.core.serialization.codecs.OpcUaBinaryDataTypeCodec) Test(org.testng.annotations.Test)

Example 4 with Argument

use of org.eclipse.milo.opcua.stack.core.types.structured.Argument in project milo by eclipse.

the class UaMethodTest method findMethod.

@Test
public void findMethod() throws UaException {
    ManagedSubscription subscription = ManagedSubscription.create(client);
    ManagedDataItem dataItem = subscription.createDataItem(Identifiers.Server_ServerStatus_CurrentTime);
    AddressSpace addressSpace = client.getAddressSpace();
    UaObjectNode serverNode = addressSpace.getObjectNode(Identifiers.Server);
    UaMethod getMonitoredItems = serverNode.getMethod("GetMonitoredItems");
    assertNotNull(getMonitoredItems);
    Argument[] inputArguments = getMonitoredItems.getInputArguments();
    Argument[] outputArguments = getMonitoredItems.getOutputArguments();
    assertEquals(1, inputArguments.length);
    assertEquals("SubscriptionId", inputArguments[0].getName());
    assertEquals(2, outputArguments.length);
    assertEquals("ServerHandles", outputArguments[0].getName());
    assertEquals("ClientHandles", outputArguments[1].getName());
    Variant[] outputs = getMonitoredItems.call(new Variant[] { new Variant(subscription.getSubscription().getSubscriptionId()) });
    UInteger[] expected0 = { dataItem.getMonitoredItem().getMonitoredItemId() };
    UInteger[] expected1 = { dataItem.getMonitoredItem().getClientHandle() };
    assertArrayEquals(expected0, (UInteger[]) outputs[0].getValue());
    assertArrayEquals(expected1, (UInteger[]) outputs[1].getValue());
}
Also used : Variant(org.eclipse.milo.opcua.stack.core.types.builtin.Variant) AddressSpace(org.eclipse.milo.opcua.sdk.client.AddressSpace) UaObjectNode(org.eclipse.milo.opcua.sdk.client.nodes.UaObjectNode) Argument(org.eclipse.milo.opcua.stack.core.types.structured.Argument) UInteger(org.eclipse.milo.opcua.stack.core.types.builtin.unsigned.UInteger) ManagedDataItem(org.eclipse.milo.opcua.sdk.client.subscriptions.ManagedDataItem) ManagedSubscription(org.eclipse.milo.opcua.sdk.client.subscriptions.ManagedSubscription) Test(org.junit.jupiter.api.Test) AbstractClientServerTest(org.eclipse.milo.opcua.sdk.test.AbstractClientServerTest)

Example 5 with Argument

use of org.eclipse.milo.opcua.stack.core.types.structured.Argument in project milo by eclipse.

the class AbstractMethodInvocationHandler method invoke.

@Override
public final CallMethodResult invoke(AccessContext accessContext, CallMethodRequest request) {
    try {
        checkExecutableAttributes(accessContext);
        Variant[] inputArgumentValues = request.getInputArguments();
        if (inputArgumentValues == null)
            inputArgumentValues = new Variant[0];
        if (inputArgumentValues.length != getInputArguments().length) {
            throw new UaException(StatusCodes.Bad_ArgumentsMissing);
        }
        StatusCode[] inputDataTypeCheckResults = new StatusCode[inputArgumentValues.length];
        for (int i = 0; i < inputArgumentValues.length; i++) {
            Argument argument = getInputArguments()[i];
            Variant variant = inputArgumentValues[i];
            Object value = variant.getValue();
            // TODO this needs to be able to match when argument DataType is an alias type
            // extract subtype logic from AttributeWriter...
            boolean dataTypeMatch = value == null || variant.getDataType().flatMap(xni -> xni.toNodeId(node.getNodeContext().getNamespaceTable())).map(type -> {
                if (type.equals(argument.getDataType())) {
                    return true;
                } else {
                    if (Identifiers.Structure.equals(type) && value instanceof ExtensionObject) {
                        SerializationContext serializationContext = getNode().getNodeContext().getServer().getSerializationContext();
                        try {
                            Object decoded = ((ExtensionObject) value).decode(serializationContext);
                            if (decoded instanceof UaStructure) {
                                return ((UaStructure) decoded).getTypeId().toNodeId(node.getNodeContext().getNamespaceTable()).map(argument.getDataType()::equals).orElse(false);
                            }
                        } catch (UaSerializationException e) {
                            LoggerFactory.getLogger(getClass()).warn("Error decoding argument value", e);
                        }
                    }
                    return false;
                }
            }).orElse(false);
            switch(argument.getValueRank()) {
                case ValueRanks.Scalar:
                    if (value != null && value.getClass().isArray()) {
                        dataTypeMatch = false;
                    }
                    break;
                case ValueRanks.OneDimension:
                case ValueRanks.OneOrMoreDimensions:
                    if (value != null && !value.getClass().isArray()) {
                        dataTypeMatch = false;
                    }
                    break;
                default:
                    break;
            }
            if (dataTypeMatch) {
                inputDataTypeCheckResults[i] = StatusCode.GOOD;
            } else {
                inputDataTypeCheckResults[i] = new StatusCode(StatusCodes.Bad_TypeMismatch);
            }
        }
        if (Arrays.stream(inputDataTypeCheckResults).anyMatch(StatusCode::isBad)) {
            throw new InvalidArgumentException(inputDataTypeCheckResults);
        }
        validateInputArgumentValues(inputArgumentValues);
        InvocationContext invocationContext = new InvocationContext() {

            @Override
            public OpcUaServer getServer() {
                return node.getNodeContext().getServer();
            }

            @Override
            public NodeId getObjectId() {
                return request.getObjectId();
            }

            @Override
            public UaMethodNode getMethodNode() {
                return node;
            }

            @Override
            public Optional<Session> getSession() {
                return accessContext.getSession();
            }
        };
        Variant[] outputValues = invoke(invocationContext, inputArgumentValues);
        return new CallMethodResult(StatusCode.GOOD, new StatusCode[0], new DiagnosticInfo[0], outputValues);
    } catch (InvalidArgumentException e) {
        return new CallMethodResult(e.getStatusCode(), e.getInputArgumentResults(), e.getInputArgumentDiagnosticInfos(), new Variant[0]);
    } catch (UaException e) {
        return new CallMethodResult(e.getStatusCode(), new StatusCode[0], new DiagnosticInfo[0], new Variant[0]);
    }
}
Also used : Arrays(java.util.Arrays) ValueRanks(org.eclipse.milo.opcua.sdk.core.ValueRanks) CallMethodRequest(org.eclipse.milo.opcua.stack.core.types.structured.CallMethodRequest) UaStructure(org.eclipse.milo.opcua.stack.core.serialization.UaStructure) LoggerFactory(org.slf4j.LoggerFactory) ExtensionObject(org.eclipse.milo.opcua.stack.core.types.builtin.ExtensionObject) Session(org.eclipse.milo.opcua.sdk.server.Session) CallMethodResult(org.eclipse.milo.opcua.stack.core.types.structured.CallMethodResult) Argument(org.eclipse.milo.opcua.stack.core.types.structured.Argument) SerializationContext(org.eclipse.milo.opcua.stack.core.serialization.SerializationContext) AttributeId(org.eclipse.milo.opcua.stack.core.AttributeId) UaMethodNode(org.eclipse.milo.opcua.sdk.server.nodes.UaMethodNode) AttributeUtil(org.eclipse.milo.opcua.sdk.server.util.AttributeUtil) StatusCodes(org.eclipse.milo.opcua.stack.core.StatusCodes) NodeId(org.eclipse.milo.opcua.stack.core.types.builtin.NodeId) UaSerializationException(org.eclipse.milo.opcua.stack.core.UaSerializationException) OpcUaServer(org.eclipse.milo.opcua.sdk.server.OpcUaServer) DiagnosticInfo(org.eclipse.milo.opcua.stack.core.types.builtin.DiagnosticInfo) AccessContext(org.eclipse.milo.opcua.sdk.server.api.AccessContext) AttributeContext(org.eclipse.milo.opcua.sdk.server.nodes.AttributeContext) Variant(org.eclipse.milo.opcua.stack.core.types.builtin.Variant) StatusCode(org.eclipse.milo.opcua.stack.core.types.builtin.StatusCode) UaException(org.eclipse.milo.opcua.stack.core.UaException) Optional(java.util.Optional) Identifiers(org.eclipse.milo.opcua.stack.core.Identifiers) SerializationContext(org.eclipse.milo.opcua.stack.core.serialization.SerializationContext) UaSerializationException(org.eclipse.milo.opcua.stack.core.UaSerializationException) Argument(org.eclipse.milo.opcua.stack.core.types.structured.Argument) UaException(org.eclipse.milo.opcua.stack.core.UaException) ExtensionObject(org.eclipse.milo.opcua.stack.core.types.builtin.ExtensionObject) DiagnosticInfo(org.eclipse.milo.opcua.stack.core.types.builtin.DiagnosticInfo) StatusCode(org.eclipse.milo.opcua.stack.core.types.builtin.StatusCode) Variant(org.eclipse.milo.opcua.stack.core.types.builtin.Variant) UaStructure(org.eclipse.milo.opcua.stack.core.serialization.UaStructure) CallMethodResult(org.eclipse.milo.opcua.stack.core.types.structured.CallMethodResult) ExtensionObject(org.eclipse.milo.opcua.stack.core.types.builtin.ExtensionObject) Session(org.eclipse.milo.opcua.sdk.server.Session)

Aggregations

Argument (org.eclipse.milo.opcua.stack.core.types.structured.Argument)7 Optional (java.util.Optional)3 AddressSpace (org.eclipse.milo.opcua.sdk.client.AddressSpace)3 NodeId (org.eclipse.milo.opcua.stack.core.types.builtin.NodeId)3 Variant (org.eclipse.milo.opcua.stack.core.types.builtin.Variant)3 List (java.util.List)2 Objects (java.util.Objects)2 ExecutionException (java.util.concurrent.ExecutionException)2 OpcUaClient (org.eclipse.milo.opcua.sdk.client.OpcUaClient)2 AttributeId (org.eclipse.milo.opcua.stack.core.AttributeId)2 Identifiers (org.eclipse.milo.opcua.stack.core.Identifiers)2 StatusCodes (org.eclipse.milo.opcua.stack.core.StatusCodes)2 UaException (org.eclipse.milo.opcua.stack.core.UaException)2 StatusCode (org.eclipse.milo.opcua.stack.core.types.builtin.StatusCode)2 UInteger (org.eclipse.milo.opcua.stack.core.types.builtin.unsigned.UInteger)2 ServiceContext (de.fraunhofer.iosb.ilt.faaast.service.ServiceContext)1 AssetConnection (de.fraunhofer.iosb.ilt.faaast.service.assetconnection.AssetConnection)1 AssetConnectionException (de.fraunhofer.iosb.ilt.faaast.service.assetconnection.AssetConnectionException)1 AssetOperationProvider (de.fraunhofer.iosb.ilt.faaast.service.assetconnection.AssetOperationProvider)1 AssetSubscriptionProvider (de.fraunhofer.iosb.ilt.faaast.service.assetconnection.AssetSubscriptionProvider)1