This is an automated email from the ASF dual-hosted git repository.
riemer pushed a commit to branch 3632-opc-ua-adapter-could-not-guess-shchema
in repository https://gitbox.apache.org/repos/asf/streampipes.git
The following commit(s) were added to
refs/heads/3632-opc-ua-adapter-could-not-guess-shchema by this push:
new eb4cdb455f fix(#3632): Allow more general OPC-UA variable nodes
eb4cdb455f is described below
commit eb4cdb455fd296568a22c2bf3b60fb665834fa84
Author: Dominik Riemer <[email protected]>
AuthorDate: Thu Oct 23 19:50:09 2025 +0200
fix(#3632): Allow more general OPC-UA variable nodes
---
.../connectors/opcua/adapter/OpcUaNodeBrowser.java | 15 +++++++++------
.../opcua/model/node/BasicVariableNodeInfo.java | 8 ++++----
.../opcua/model/nodename/NamingStrategyResolver.java | 4 ++--
.../opcua/model/nodename/ParsedNodeIdResolver.java | 4 ++--
.../opcua/model/nodename/SimpleNameResolver.java | 8 ++++----
.../connectors/opcua/utils/OpcUaNamingStrategy.java | 8 ++++----
.../extensions/connectors/opcua/utils/OpcUaTypes.java | 4 ++--
7 files changed, 27 insertions(+), 24 deletions(-)
diff --git
a/streampipes-extensions/streampipes-connectors-opcua/src/main/java/org/apache/streampipes/extensions/connectors/opcua/adapter/OpcUaNodeBrowser.java
b/streampipes-extensions/streampipes-connectors-opcua/src/main/java/org/apache/streampipes/extensions/connectors/opcua/adapter/OpcUaNodeBrowser.java
index 5166f6ff48..df520031e6 100644
---
a/streampipes-extensions/streampipes-connectors-opcua/src/main/java/org/apache/streampipes/extensions/connectors/opcua/adapter/OpcUaNodeBrowser.java
+++
b/streampipes-extensions/streampipes-connectors-opcua/src/main/java/org/apache/streampipes/extensions/connectors/opcua/adapter/OpcUaNodeBrowser.java
@@ -19,17 +19,17 @@
package org.apache.streampipes.extensions.connectors.opcua.adapter;
import
org.apache.streampipes.extensions.connectors.opcua.config.OpcUaAdapterConfig;
+import
org.apache.streampipes.extensions.connectors.opcua.model.OpcUaNodeFactory;
import
org.apache.streampipes.extensions.connectors.opcua.model.node.BasicVariableNodeInfo;
import org.apache.streampipes.extensions.connectors.opcua.model.node.OpcUaNode;
-import
org.apache.streampipes.extensions.connectors.opcua.model.OpcUaNodeFactory;
import org.apache.streampipes.model.staticproperty.TreeInputNode;
import org.eclipse.milo.opcua.sdk.client.AddressSpace;
import org.eclipse.milo.opcua.sdk.client.OpcUaClient;
import org.eclipse.milo.opcua.sdk.client.api.UaClient;
-import
org.eclipse.milo.opcua.sdk.client.model.nodes.variables.BaseDataVariableTypeNode;
import org.eclipse.milo.opcua.sdk.client.nodes.UaNode;
import org.eclipse.milo.opcua.sdk.client.nodes.UaVariableNode;
+import org.eclipse.milo.opcua.sdk.core.nodes.VariableNode;
import org.eclipse.milo.opcua.stack.core.Identifiers;
import org.eclipse.milo.opcua.stack.core.UaException;
import org.eclipse.milo.opcua.stack.core.UaRuntimeException;
@@ -108,14 +108,17 @@ public class OpcUaNodeBrowser {
.toString()
);
- if (node instanceof BaseDataVariableTypeNode) {
- var nodeInfo = new BasicVariableNodeInfo((BaseDataVariableTypeNode)
node, spOpcConfig.getNamingStrategy());
+ if (node instanceof VariableNode) {
+ var nodeInfo = new BasicVariableNodeInfo((VariableNode) node,
spOpcConfig.getNamingStrategy());
return OpcUaNodeFactory.createOpcUaNode(nodeInfo, runtimeNamesToDelete);
}
- LOG.warn("Node {} not of type UaVariableNode", node.getDisplayName());
+ LOG.warn("Node {} not of type VariableNode", node.getDisplayName());
- throw new UaException(StatusCode.BAD, "Node is not of type
BaseDataVariableTypeNode");
+ throw new UaException(
+ StatusCode.BAD,
+ String.format("Node of type %S is not of type VariableNode",
node.getClass().getName()
+ ));
}
private List<TreeInputNode> findChildren(
diff --git
a/streampipes-extensions/streampipes-connectors-opcua/src/main/java/org/apache/streampipes/extensions/connectors/opcua/model/node/BasicVariableNodeInfo.java
b/streampipes-extensions/streampipes-connectors-opcua/src/main/java/org/apache/streampipes/extensions/connectors/opcua/model/node/BasicVariableNodeInfo.java
index adab2eeebf..69f75922d3 100644
---
a/streampipes-extensions/streampipes-connectors-opcua/src/main/java/org/apache/streampipes/extensions/connectors/opcua/model/node/BasicVariableNodeInfo.java
+++
b/streampipes-extensions/streampipes-connectors-opcua/src/main/java/org/apache/streampipes/extensions/connectors/opcua/model/node/BasicVariableNodeInfo.java
@@ -20,23 +20,23 @@ package
org.apache.streampipes.extensions.connectors.opcua.model.node;
import
org.apache.streampipes.extensions.connectors.opcua.utils.OpcUaNamingStrategy;
-import
org.eclipse.milo.opcua.sdk.client.model.nodes.variables.BaseDataVariableTypeNode;
+import org.eclipse.milo.opcua.sdk.core.nodes.VariableNode;
import org.eclipse.milo.opcua.stack.core.types.builtin.NodeId;
public class BasicVariableNodeInfo {
- private final BaseDataVariableTypeNode node;
+ private final VariableNode node;
private final OpcUaNamingStrategy namingStrategy;
private final String baseNodeName;
- public BasicVariableNodeInfo(BaseDataVariableTypeNode node,
+ public BasicVariableNodeInfo(VariableNode node,
OpcUaNamingStrategy namingStrategy) {
this.node = node;
this.namingStrategy = namingStrategy;
this.baseNodeName = namingStrategy.getDesiredName(node, "");
}
- public BaseDataVariableTypeNode getNode() {
+ public VariableNode getNode() {
return node;
}
diff --git
a/streampipes-extensions/streampipes-connectors-opcua/src/main/java/org/apache/streampipes/extensions/connectors/opcua/model/nodename/NamingStrategyResolver.java
b/streampipes-extensions/streampipes-connectors-opcua/src/main/java/org/apache/streampipes/extensions/connectors/opcua/model/nodename/NamingStrategyResolver.java
index 8f1e0f7602..a5647ddb30 100644
---
a/streampipes-extensions/streampipes-connectors-opcua/src/main/java/org/apache/streampipes/extensions/connectors/opcua/model/nodename/NamingStrategyResolver.java
+++
b/streampipes-extensions/streampipes-connectors-opcua/src/main/java/org/apache/streampipes/extensions/connectors/opcua/model/nodename/NamingStrategyResolver.java
@@ -18,10 +18,10 @@
package org.apache.streampipes.extensions.connectors.opcua.model.nodename;
-import
org.eclipse.milo.opcua.sdk.client.model.nodes.variables.BaseDataVariableTypeNode;
+import org.eclipse.milo.opcua.sdk.core.nodes.VariableNode;
public interface NamingStrategyResolver {
- String resolveName(BaseDataVariableTypeNode node,
+ String resolveName(VariableNode node,
String fieldAppendix);
}
diff --git
a/streampipes-extensions/streampipes-connectors-opcua/src/main/java/org/apache/streampipes/extensions/connectors/opcua/model/nodename/ParsedNodeIdResolver.java
b/streampipes-extensions/streampipes-connectors-opcua/src/main/java/org/apache/streampipes/extensions/connectors/opcua/model/nodename/ParsedNodeIdResolver.java
index 3354efa5d2..4869bad897 100644
---
a/streampipes-extensions/streampipes-connectors-opcua/src/main/java/org/apache/streampipes/extensions/connectors/opcua/model/nodename/ParsedNodeIdResolver.java
+++
b/streampipes-extensions/streampipes-connectors-opcua/src/main/java/org/apache/streampipes/extensions/connectors/opcua/model/nodename/ParsedNodeIdResolver.java
@@ -18,12 +18,12 @@
package org.apache.streampipes.extensions.connectors.opcua.model.nodename;
-import
org.eclipse.milo.opcua.sdk.client.model.nodes.variables.BaseDataVariableTypeNode;
+import org.eclipse.milo.opcua.sdk.core.nodes.VariableNode;
public class ParsedNodeIdResolver implements NamingStrategyResolver {
@Override
- public String resolveName(BaseDataVariableTypeNode node,
+ public String resolveName(VariableNode node,
String fieldAppendix) {
var nodeIdStr = node.getNodeId().toParseableString();
var sanitizedNodeIdStr = removeSpecialChars(nodeIdStr);
diff --git
a/streampipes-extensions/streampipes-connectors-opcua/src/main/java/org/apache/streampipes/extensions/connectors/opcua/model/nodename/SimpleNameResolver.java
b/streampipes-extensions/streampipes-connectors-opcua/src/main/java/org/apache/streampipes/extensions/connectors/opcua/model/nodename/SimpleNameResolver.java
index 4c23d34654..9f88ac91e8 100644
---
a/streampipes-extensions/streampipes-connectors-opcua/src/main/java/org/apache/streampipes/extensions/connectors/opcua/model/nodename/SimpleNameResolver.java
+++
b/streampipes-extensions/streampipes-connectors-opcua/src/main/java/org/apache/streampipes/extensions/connectors/opcua/model/nodename/SimpleNameResolver.java
@@ -18,20 +18,20 @@
package org.apache.streampipes.extensions.connectors.opcua.model.nodename;
-import
org.eclipse.milo.opcua.sdk.client.model.nodes.variables.BaseDataVariableTypeNode;
+import org.eclipse.milo.opcua.sdk.core.nodes.VariableNode;
import java.util.function.Function;
public class SimpleNameResolver implements NamingStrategyResolver {
- private final Function<BaseDataVariableTypeNode, String> nameFn;
+ private final Function<VariableNode, String> nameFn;
- public SimpleNameResolver(Function<BaseDataVariableTypeNode, String> nameFn)
{
+ public SimpleNameResolver(Function<VariableNode, String> nameFn) {
this.nameFn = nameFn;
}
@Override
- public String resolveName(BaseDataVariableTypeNode node, String
fieldAppendix) {
+ public String resolveName(VariableNode node, String fieldAppendix) {
return nameFn.apply(node) + (!fieldAppendix.isEmpty() ? "_" +
fieldAppendix : "");
}
}
diff --git
a/streampipes-extensions/streampipes-connectors-opcua/src/main/java/org/apache/streampipes/extensions/connectors/opcua/utils/OpcUaNamingStrategy.java
b/streampipes-extensions/streampipes-connectors-opcua/src/main/java/org/apache/streampipes/extensions/connectors/opcua/utils/OpcUaNamingStrategy.java
index 6e56f0b2b2..29925bb737 100644
---
a/streampipes-extensions/streampipes-connectors-opcua/src/main/java/org/apache/streampipes/extensions/connectors/opcua/utils/OpcUaNamingStrategy.java
+++
b/streampipes-extensions/streampipes-connectors-opcua/src/main/java/org/apache/streampipes/extensions/connectors/opcua/utils/OpcUaNamingStrategy.java
@@ -23,13 +23,13 @@ import
org.apache.streampipes.extensions.connectors.opcua.model.nodename.ParsedN
import
org.apache.streampipes.extensions.connectors.opcua.model.nodename.SimpleNameResolver;
import org.apache.streampipes.model.staticproperty.Option;
-import
org.eclipse.milo.opcua.sdk.client.model.nodes.variables.BaseDataVariableTypeNode;
+import org.eclipse.milo.opcua.sdk.core.nodes.VariableNode;
public enum OpcUaNamingStrategy {
DISPLAY_NAME("Display Name",
- new SimpleNameResolver((BaseDataVariableTypeNode node) ->
node.getDisplayName().getText())),
+ new SimpleNameResolver((VariableNode node) ->
node.getDisplayName().getText())),
BROWSE_NAME("Browse Name",
- new SimpleNameResolver((BaseDataVariableTypeNode node) -> "_" +
node.getBrowseName().toParseableString())),
+ new SimpleNameResolver((VariableNode node) -> "_" +
node.getBrowseName().toParseableString())),
PARSED_NODE_ID("Parsed Node ID",
new ParsedNodeIdResolver());
@@ -46,7 +46,7 @@ public enum OpcUaNamingStrategy {
return new Option(optionLabel, this.name());
}
- public String getDesiredName(BaseDataVariableTypeNode node,
+ public String getDesiredName(VariableNode node,
String fieldAppendix) {
return resolver.resolveName(node, fieldAppendix);
}
diff --git
a/streampipes-extensions/streampipes-connectors-opcua/src/main/java/org/apache/streampipes/extensions/connectors/opcua/utils/OpcUaTypes.java
b/streampipes-extensions/streampipes-connectors-opcua/src/main/java/org/apache/streampipes/extensions/connectors/opcua/utils/OpcUaTypes.java
index 3288770619..4fed5b4ecf 100644
---
a/streampipes-extensions/streampipes-connectors-opcua/src/main/java/org/apache/streampipes/extensions/connectors/opcua/utils/OpcUaTypes.java
+++
b/streampipes-extensions/streampipes-connectors-opcua/src/main/java/org/apache/streampipes/extensions/connectors/opcua/utils/OpcUaTypes.java
@@ -20,7 +20,7 @@ package
org.apache.streampipes.extensions.connectors.opcua.utils;
import org.apache.streampipes.sdk.utils.Datatypes;
-import
org.eclipse.milo.opcua.sdk.client.model.nodes.variables.BaseDataVariableTypeNode;
+import org.eclipse.milo.opcua.sdk.core.nodes.VariableNode;
import org.eclipse.milo.opcua.stack.core.BuiltinDataType;
import org.eclipse.milo.opcua.stack.core.types.builtin.unsigned.UInteger;
@@ -82,7 +82,7 @@ public class OpcUaTypes {
* @param node a data variable node
* @return true if the node is an ExtensionObject or custom data type
*/
- public static boolean isExtensionOrCustom(BaseDataVariableTypeNode node) {
+ public static boolean isExtensionOrCustom(VariableNode node) {
return !BuiltinDataType.isBuiltin(node.getDataType())
|| Objects.equals(node.getDataType(),
BuiltinDataType.ExtensionObject.getNodeId());
}