/// <summary>
 /// Imports a part of the OPC UA Address Space contained in the <see cref="UANodeSet" /> object model.
 /// </summary>
 /// <param name="model">The model to be imported.</param>
 /// <exception cref="System.ArgumentNullException">model;the model cannot be null</exception>
 void IAddressSpaceContext.ImportUANodeSet(UANodeSet model)
 {
     m_TraceEvent(TraceMessage.DiagnosticTraceMessage("Entering AddressSpaceContextService.ImportUANodeSet - importing from object model."));
       if (model == null)
     throw new ArgumentNullException("model", "the model cannot be null");
       ImportNodeSet(model);
 }
Example #2
0
 public static UANodeSet CreateNodeSetModel()
 {
     UANodeSet _ns = new UANodeSet()
       {
     NamespaceUris = new string[] { @"http://cas.eu/UA/Demo/" },
     Aliases = new NodeIdAlias[] {
                               new NodeIdAlias() { Alias = "Boolean", Value = "i=1" },
                               new NodeIdAlias() { Alias = "HasSubtype", Value = "i=45" }
                             },
     Items = new UANode[]
     {
       new UAReferenceType() {  NodeId = "ns=1;i=985", BrowseName="1:FlowTo", DisplayName = new LocalizedText[]{ new LocalizedText()  { Value = "FlowTo"}}, Symmetric = true,
                            References = new Reference[] { new Reference() {ReferenceType="HasSubtype", IsForward=false, Value = "i=32"}  }
                         }
     }
       };
       return _ns;
 }
 //methods
 private void ImportNodeSet(UANodeSet model)
 {
     if (model.ServerUris != null)
     m_TraceEvent(TraceMessage.BuildErrorTraceMessage(BuildError.NotSupportedFeature, "ServerUris is omitted during the import"));
       if (model.Extensions != null)
     m_TraceEvent(TraceMessage.BuildErrorTraceMessage(BuildError.NotSupportedFeature, "Extensions is omitted during the import"));
       string _namespace = model.NamespaceUris == null ? m_NamespaceTable.GetString(0) : model.NamespaceUris[0];
       m_TraceEvent(TraceMessage.DiagnosticTraceMessage(String.Format("Entering AddressSpaceContext.ImportNodeSet - starting import {0}.", _namespace)));
       UAModelContext _modelContext = new UAModelContext(model.Aliases, model.NamespaceUris, this);
       m_TraceEvent(TraceMessage.DiagnosticTraceMessage("AddressSpaceContext.ImportNodeSet - context for imported model is created and starting import nodes."));
       foreach (UANode _nd in model.Items)
     this.ImportUANode(_nd, _modelContext, m_TraceEvent);
       m_TraceEvent(TraceMessage.DiagnosticTraceMessage(String.Format("Finishing AddressSpaceContext.ImportNodeSet - imported {0} nodes.", model.Items.Length)));
 }
 //Helpers
 private static void ValidateAndExportModelPreparation(out UANodeSet _ns, out IAddressSpaceContext _as)
 {
     _ns = TestData.CreateNodeSetModel();
       List<TraceMessage> _trace = new List<TraceMessage>();
       int _diagnosticCounter = 0;
       Assert.AreEqual<int>(0, _trace.Where<TraceMessage>(x => x.BuildError.Focus != Focus.Diagnostic).Count<TraceMessage>());
       Assert.IsTrue(_ns.NamespaceUris.Length >= 1, "Wrong test data - NamespaceUris must contain more then 2 items");
       _as = new AddressSpaceContext(x => { Helpers.TraceHelper.TraceDiagnostic(x, _trace, ref _diagnosticCounter); });
       Assert.IsNotNull(_as);
       Assert.AreEqual<int>(0, _trace.Where<TraceMessage>(x => x.BuildError.Focus != Focus.Diagnostic).Count<TraceMessage>());
       _as.ImportUANodeSet(_ns);
       Assert.AreEqual<int>(0, _trace.Where<TraceMessage>(x => x.BuildError.Focus != Focus.Diagnostic).Count<TraceMessage>());
 }
Example #5
0
        public void RecalculateNodeIdsUANodeSetTest()
        {
            UANodeSet _toTest = new UANodeSet()
            {
                NamespaceUris = new string[] { @"http://cas.eu/UA/Demo/" },
                Aliases       = new NodeIdAlias[] { },
                Items         = new UANode[] { new UAObject()
                                               {
                                                   NodeId      = "ns=1;i=1",
                                                   BrowseName  = "1:NewUAObject",
                                                   DisplayName = new LocalizedText[] { new LocalizedText()
                                                                                       {
                                                                                           Value = "New UA Object"
                                                                                       } },
                                                   References = new Reference[]
                                                   {
                                                       new Reference()
                                                       {
                                                           ReferenceType = ReferenceTypeIds.HasTypeDefinition.ToString(), Value = ObjectTypeIds.BaseObjectType.ToString()
                                                       },
                                                       new Reference()
                                                       {
                                                           ReferenceType = ReferenceTypeIds.Organizes.ToString(), IsForward = false, Value = "i=85"
                                                       }
                                                   },
                                                   // UAInstance
                                                   ParentNodeId = string.Empty,
                                                   // UAObject
                                                   EventNotifier = 0x01,
                                               },
                                               new UAVariableType()
                                               {
                                                   NodeId      = "ns=1;i=1",
                                                   BrowseName  = "1:NewUAObject",
                                                   DisplayName = new LocalizedText[] { new LocalizedText()
                                                                                       {
                                                                                           Value = "New UA Object"
                                                                                       } },
                                                   References = new Reference[] {},
                                                   // UAObject
                                                   DataType = "ns=1;i=2",
                                               } }
            };
            Mock <IUAModelContext> _uAModelContext = new Mock <IUAModelContext>();

            _uAModelContext.Setup <string>(x => x.ImportNodeId(It.IsAny <string>())).Returns <string>
                (x =>
            {
                NodeId nodeId = NodeId.Parse(x);
                if (nodeId.NamespaceIndex == 1)
                {
                    nodeId.SetNamespaceIndex(10);
                }
                return(nodeId.ToString());
            });
            _uAModelContext.Setup <string>(x => x.ImportQualifiedName(It.IsAny <string>())).Returns <string>
                (x =>
            {
                QualifiedName nodeId = QualifiedName.Parse(x);
                if (nodeId.NamespaceIndex == 1)
                {
                    nodeId.NamespaceIndex = 10;
                }
                return(nodeId.ToString());
            });
            _toTest.Aliases = new NodeIdAlias[] { new NodeIdAlias()
                                                  {
                                                      Alias = "Alias name", Value = "ns=1;i=24"
                                                  } };
            _toTest.RecalculateNodeIds(_uAModelContext.Object);
            Assert.AreEqual <string>("ns=10;i=24", _toTest.Aliases[0].Value);
            Assert.AreEqual <string>("Alias name", _toTest.Aliases[0].Alias);
            Assert.AreEqual <string>("ns=10;i=1", _toTest.Items[0].NodeId);
            Assert.AreEqual <string>("ns=10;i=2", ((UAVariableType)_toTest.Items[1]).DataType);
        }