Skip to content
Merged
Show file tree
Hide file tree
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
50 changes: 9 additions & 41 deletions NodeSetToAML.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2438,19 +2438,6 @@ private string GetExistingCreatedPathName(UANode node)
return createdPathName;
}

private string EqualizeParentNodeId(UAInstance node, string parentNodeId)
{
string[] parentSplit = parentNodeId.Split(";");
if ( parentSplit.Length > 1)
{
ModelInfo modelInfo = m_modelManager.FindModel(node.DecodedNodeId);
parentNodeId = String.Format("ns={0};{1}",
modelInfo.NamespaceIndex, parentSplit[1]);
}

return parentNodeId;
}

private string GetCreatedPathName(UANode node)
{
string pathName = GetExistingCreatedPathName(node);
Expand All @@ -2460,40 +2447,21 @@ private string GetCreatedPathName(UANode node)
UAInstance uaInstance = node as UAInstance;
if (uaInstance != null )
{
string parentNodeIdString = string.Empty;

if ( uaInstance.ParentNodeId != null )
{
parentNodeIdString = uaInstance.ParentNodeId;
}
else
var refList = m_modelManager.FindReferences( node.DecodedNodeId );
foreach( var reference in refList )
{
var refList = m_modelManager.FindReferences( node.DecodedNodeId );
int reversePropertyCount = 0;
foreach( var reference in refList )
if( reference.IsForward == false &&
( reference.ReferenceTypeId.Equals(HasPropertyNodeId) ||
reference.ReferenceTypeId.Equals( Opc.Ua.ReferenceTypeIds.HasComponent ) ) )
{
if( reference.IsForward == false &&
( reference.ReferenceTypeId.Equals(HasPropertyNodeId) ||
reference.ReferenceTypeId.Equals( Opc.Ua.ReferenceTypeIds.HasComponent ) ) )
UANode parentNodeId = m_modelManager.FindNode<UANode>( reference.TargetId );
if ( parentNodeId != null )
{
UANode parentNodeId = m_modelManager.FindNode<UANode>( reference.TargetId );
if ( parentNodeId != null )
{
parentNodeIdString = parentNodeId.NodeId;
break;
}

reversePropertyCount++;
pathName = GetCreatedPathName(parentNodeId);
break;
}
}
}

if ( parentNodeIdString.Length > 0)
{
string parentNodeId = EqualizeParentNodeId(uaInstance, parentNodeIdString);
UANode parentNode = FindNode<NodeSet.UANode>(new NodeId(parentNodeId));
pathName = GetCreatedPathName(parentNode);
}
}

if (pathName.Length > 0)
Expand Down
6 changes: 6 additions & 0 deletions SystemTest/TestNonHierarchical.cs
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,12 @@ public class TestNonHierarchical
TestHelper.Uris.AmlFxTest, 5008u,
DisplayName = "Instance Hosts")]

[DataRow("", TestHelper.Uris.Root, 14156u,
"HasCondition",
TestHelper.Uris.Root, Opc.Ua.ObjectTypes.CertificateExpirationAlarmType,
DisplayName = "DefaultApplication Group to Audit Event Issue 139")]


public void TestReference(string prefix, TestHelper.Uris testUri, uint testNodeId, string referenceName,
TestHelper.Uris targetUri, uint targetNodeId)
{
Expand Down