@@ -24,6 +24,7 @@ def __init__(self, server):
24
24
self .server = server
25
25
self .namespaces = {}
26
26
self .aliases = {}
27
+ self .refs = None
27
28
28
29
def _map_namespaces (self , namespaces_uris ):
29
30
"""
@@ -38,7 +39,7 @@ def _map_namespaces(self, namespaces_uris):
38
39
39
40
def _map_aliases (self , aliases ):
40
41
"""
41
- maps the import aliases to the correct namespaces
42
+ maps the import aliases to the correct namespaces
42
43
"""
43
44
aliases_mapped = {}
44
45
for alias , node_id in aliases .items ():
@@ -54,6 +55,7 @@ def import_xml(self, xmlpath):
54
55
55
56
self .namespaces = self ._map_namespaces (self .parser .get_used_namespaces ())
56
57
self .aliases = self ._map_aliases (self .parser .get_aliases ())
58
+ self .refs = []
57
59
58
60
dnodes = self .parser .get_node_datas ()
59
61
dnodes = self .make_objects (dnodes )
@@ -67,6 +69,11 @@ def import_xml(self, xmlpath):
67
69
self .logger .warning ("failure adding node %s" , nodedata )
68
70
raise
69
71
nodes .append (node )
72
+
73
+ self .refs , remaining_refs = [], self .refs
74
+ self ._add_references (remaining_refs )
75
+ assert len (self .refs ) == 0 , self .refs
76
+
70
77
return nodes
71
78
72
79
def _add_node_data (self , nodedata ):
@@ -96,9 +103,13 @@ def _add_node(self, node):
96
103
97
104
def _add_references (self , refs ):
98
105
if isinstance (self .server , opcua .server .server .Server ):
99
- return self .server .iserver .isession .add_references (refs )
106
+ res = self .server .iserver .isession .add_references (refs )
100
107
else :
101
- return self .server .uaclient .add_references (refs )
108
+ res = self .server .uaclient .add_references (refs )
109
+
110
+ for sc , ref in zip (res , refs ):
111
+ if not sc .is_good ():
112
+ self .refs .append (ref )
102
113
103
114
def make_objects (self , node_datas ):
104
115
new_nodes = []
0 commit comments