Opc.Ua.ServerTest.TestBase.SetAttributeValue C# (CSharp) Method

SetAttributeValue() protected method

Stores the attribute value in the object.
protected SetAttributeValue ( Node node, uint attributeId, object attributeValue ) : bool
node Node
attributeId uint
attributeValue object
return bool
        protected bool SetAttributeValue(
            Node node, 
            uint attributeId, 
            object attributeValue)
        {
            switch (attributeId)
            {
                case Attributes.NodeId: 
                { 
                    if (node.NodeId != (NodeId)attributeValue)
                    {
                        Log(
                            "Invalid NodeId attribute value for Node '{0}'. NodeId = {1}, Expected = {2}, Actual = {3}",
                            node,
                            node.NodeId,
                            node.NodeId,
                            new Variant(attributeValue));

                        return false;
                    }

                    break;
                }
                    
                case Attributes.NodeClass: 
                { 
                    if (node.NodeClass != (NodeClass)(int)attributeValue)
                    {
                        Log(
                            "Invalid NodeClass attribute value for Node '{0}'. NodeId = {1}, Expected = {2}, Actual = {3}",
                            node,
                            node.NodeId,
                            node.NodeClass,
                            new Variant(attributeValue));

                        return false;
                    }

                    break;
                }

                case Attributes.BrowseName:
                {
                    node.BrowseName = (QualifiedName)attributeValue;
                    break;
                }

                case Attributes.DisplayName:
                {
                    node.DisplayName = (LocalizedText)attributeValue;
                    break;
                }

                case Attributes.Description:
                {
                    node.Description = (LocalizedText)attributeValue;
                    break;
                }

                case Attributes.WriteMask:
                {
                    node.WriteMask = (uint)attributeValue;
                    break;
                }

                case Attributes.UserWriteMask:
                {
                    node.UserWriteMask = (uint)attributeValue;
                    break;
                }

                case Attributes.ContainsNoLoops:
                {
                    ((IView)node).ContainsNoLoops = (bool)attributeValue;
                    break;
                }

                case Attributes.EventNotifier:
                {
                    if (node.NodeClass == NodeClass.View)
                    {
                        ((IView)node).EventNotifier = (byte)attributeValue;
                    }
                    else
                    {
                        ((IObject)node).EventNotifier = (byte)attributeValue;
                    }

                    break;
                }           
                    
                case Attributes.Executable:
                {
                    ((IMethod)node).Executable = (bool)attributeValue;
                    break;
                }
                    
                case Attributes.UserExecutable:
                {
                    ((IMethod)node).UserExecutable = (bool)attributeValue;
                    break;
                }
                    
                case Attributes.DataType:
                {
                    ((IVariableBase)node).DataType = (NodeId)attributeValue;
                    break;
                }                    
                    
                case Attributes.ValueRank:
                {
                    ((IVariableBase)node).ValueRank = (int)attributeValue;
                    break;
                }

                case Attributes.ArrayDimensions:
                {
                    ((IVariableBase)node).ArrayDimensions = (uint[])attributeValue;
                    break;
                }

                case Attributes.AccessLevel:
                {
                    ((IVariable)node).AccessLevel = (byte)attributeValue;
                    break;
                }

                case Attributes.UserAccessLevel:
                {
                    ((IVariable)node).UserAccessLevel = (byte)attributeValue;
                    break;
                }
                    
                case Attributes.MinimumSamplingInterval:
                {
                    ((IVariable)node).MinimumSamplingInterval = (double)attributeValue;
                    break;
                }
                    
                case Attributes.Historizing:
                {
                    ((IVariable)node).Historizing = (bool)attributeValue;
                    break;
                }
                    
                case Attributes.IsAbstract:
                {
                    switch (node.NodeClass)
                    {
                        case NodeClass.ObjectType: { ((IObjectType)node).IsAbstract = (bool)attributeValue; break; }
                        case NodeClass.VariableType: { ((IVariableType)node).IsAbstract = (bool)attributeValue; break; }
                        case NodeClass.ReferenceType: { ((IReferenceType)node).IsAbstract = (bool)attributeValue; break; }
                        case NodeClass.DataType: { ((IDataType)node).IsAbstract = (bool)attributeValue; break; }
                    }

                    break;
                }
                    
                case Attributes.InverseName:
                {
                    ((IReferenceType)node).InverseName = (LocalizedText)attributeValue;
                    break;
                }

                case Attributes.Symmetric:
                {
                    ((IReferenceType)node).Symmetric = (bool)attributeValue;
                    break;
                }     

                case Attributes.Value:
                {
                    ((IVariableBase)node).Value = attributeValue;
                    break;
                }              
            }

            return true;
        }