4141import org .eclipse .milo .opcua .sdk .server .api .MonitoredItem ;
4242import org .eclipse .milo .opcua .sdk .server .model .nodes .objects .BaseEventTypeNode ;
4343import org .eclipse .milo .opcua .sdk .server .nodes .UaFolderNode ;
44+ import org .eclipse .milo .opcua .sdk .server .nodes .UaNode ;
4445import org .eclipse .milo .opcua .sdk .server .nodes .UaVariableNode ;
4546import org .eclipse .milo .opcua .sdk .server .util .SubscriptionModel ;
4647import org .eclipse .milo .opcua .stack .core .Identifiers ;
@@ -108,10 +109,10 @@ private void transferTabletForClientServerModel(final Tablet tablet) {
108109 throw new PipeRuntimeCriticalException ("The segments of tablets must exist" );
109110 }
110111 final StringBuilder currentStr = new StringBuilder ();
111- UaFolderNode folderNode = null ;
112+ UaNode folderNode = null ;
112113 NodeId folderNodeId ;
113114 for (final String segment : segments ) {
114- final UaFolderNode nextFolderNode ;
115+ final UaNode nextFolderNode ;
115116
116117 currentStr .append (segment );
117118 folderNodeId = newNodeId (currentStr .toString ());
@@ -126,7 +127,12 @@ private void transferTabletForClientServerModel(final Tablet tablet) {
126127 LocalizedText .english (segment ));
127128 getNodeManager ().addNode (nextFolderNode );
128129 if (Objects .nonNull (folderNode )) {
129- folderNode .addOrganizes (nextFolderNode );
130+ folderNode .addReference (
131+ new Reference (
132+ folderNode .getNodeId (),
133+ Identifiers .Organizes ,
134+ nextFolderNode .getNodeId ().expanded (),
135+ true ));
130136 } else {
131137 nextFolderNode .addReference (
132138 new Reference (
@@ -138,14 +144,13 @@ private void transferTabletForClientServerModel(final Tablet tablet) {
138144 folderNode = nextFolderNode ;
139145 } else {
140146 folderNode =
141- (UaFolderNode )
142- getNodeManager ()
143- .getNode (folderNodeId )
144- .orElseThrow (
145- () ->
146- new PipeRuntimeCriticalException (
147- String .format (
148- "The folder node for %s does not exist." , tablet .deviceId )));
147+ getNodeManager ()
148+ .getNode (folderNodeId )
149+ .orElseThrow (
150+ () ->
151+ new PipeRuntimeCriticalException (
152+ String .format (
153+ "The folder node for %s does not exist." , tablet .deviceId )));
149154 }
150155 }
151156
@@ -189,7 +194,15 @@ private void transferTabletForClientServerModel(final Tablet tablet) {
189194 .setValue (value )
190195 .build ();
191196 getNodeManager ().addNode (measurementNode );
192- folderNode .addOrganizes (measurementNode );
197+ if (Objects .nonNull (folderNode )) {
198+ folderNode .addReference (
199+ new Reference (
200+ folderNode .getNodeId (), Identifiers .Organizes , nodeId .expanded (), true ));
201+ } else {
202+ measurementNode .addReference (
203+ new Reference (
204+ nodeId , Identifiers .Organizes , Identifiers .ObjectsFolder .expanded (), false ));
205+ }
193206 } else {
194207 // This must exist
195208 measurementNode =
0 commit comments