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());
   }

Reply via email to