Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
import org.eclipse.milo.opcua.sdk.server.api.MonitoredItem;
import org.eclipse.milo.opcua.sdk.server.model.nodes.objects.BaseEventTypeNode;
import org.eclipse.milo.opcua.sdk.server.nodes.UaFolderNode;
import org.eclipse.milo.opcua.sdk.server.nodes.UaNode;
import org.eclipse.milo.opcua.sdk.server.nodes.UaVariableNode;
import org.eclipse.milo.opcua.sdk.server.util.SubscriptionModel;
import org.eclipse.milo.opcua.stack.core.Identifiers;
Expand Down Expand Up @@ -108,10 +109,10 @@ private void transferTabletForClientServerModel(final Tablet tablet) {
throw new PipeRuntimeCriticalException("The segments of tablets must exist");
}
final StringBuilder currentStr = new StringBuilder();
UaFolderNode folderNode = null;
UaNode folderNode = null;
NodeId folderNodeId;
for (final String segment : segments) {
final UaFolderNode nextFolderNode;
final UaNode nextFolderNode;

currentStr.append(segment);
folderNodeId = newNodeId(currentStr.toString());
Expand All @@ -126,7 +127,12 @@ private void transferTabletForClientServerModel(final Tablet tablet) {
LocalizedText.english(segment));
getNodeManager().addNode(nextFolderNode);
if (Objects.nonNull(folderNode)) {
folderNode.addOrganizes(nextFolderNode);
folderNode.addReference(
new Reference(
folderNode.getNodeId(),
Identifiers.Organizes,
nextFolderNode.getNodeId().expanded(),
true));
} else {
nextFolderNode.addReference(
new Reference(
Expand All @@ -138,14 +144,13 @@ private void transferTabletForClientServerModel(final Tablet tablet) {
folderNode = nextFolderNode;
} else {
folderNode =
(UaFolderNode)
getNodeManager()
.getNode(folderNodeId)
.orElseThrow(
() ->
new PipeRuntimeCriticalException(
String.format(
"The folder node for %s does not exist.", tablet.deviceId)));
getNodeManager()
.getNode(folderNodeId)
.orElseThrow(
() ->
new PipeRuntimeCriticalException(
String.format(
"The folder node for %s does not exist.", tablet.deviceId)));
}
}

Expand Down Expand Up @@ -189,7 +194,15 @@ private void transferTabletForClientServerModel(final Tablet tablet) {
.setValue(value)
.build();
getNodeManager().addNode(measurementNode);
folderNode.addOrganizes(measurementNode);
if (Objects.nonNull(folderNode)) {
folderNode.addReference(
new Reference(
folderNode.getNodeId(), Identifiers.Organizes, nodeId.expanded(), true));
} else {
measurementNode.addReference(
new Reference(
nodeId, Identifiers.Organizes, Identifiers.ObjectsFolder.expanded(), false));
}
} else {
// This must exist
measurementNode =
Expand Down
Loading