예제 #1
0
        /// <summary>
        /// Метод проверки данных запроса.
        /// Вызывается Ядром перед передачей объекта в прикладной код.
        /// </summary>
        /// <remarks>
        /// Метод проверяет, чтобы наименование описания структуры иерархии в
        /// метаданных было задано (явно или в результате разбора XML-запроса).
        /// </remarks>
        public override void Validate()
        {
            // Вызываем базовую реализацию - проверка свойств базового класса
            base.Validate();

            // Наименование описания структуры иерархии в метаданных должно
            // быть задано (явно или в результате разбора XML-запроса):
            XRequest.ValidateRequiredArgument(MetaName, "MetaName");
        }
예제 #2
0
        /// <summary>
        /// Метод выполнения операции, типизированная реализация
        /// </summary>
        ///	<param name="oRequest">Объект-запрос на выполнение операции</param>
        /// <param name="oContext">Представление контекста выполнения операции</param>
        /// <returns>
        /// Экземпляр объекта-результата выполнения операции
        /// </returns>
        public XResponse Execute(XDeleteObjectRequest oRequest, IXExecutionContext oContext)
        {
            // Проверка параметров запроса
            XRequest.ValidateRequiredArgument(oRequest.TypeName, "XDeleteObjectRequest.TypeName");
            XRequest.ValidateRequiredArgument(oRequest.ObjectID, "XDeleteObjectRequest.ObjectID");

            DomainObjectData objData = DomainObjectData.CreateStubLoaded(oContext.Connection, oRequest.TypeName, oRequest.ObjectID);
            XObjectRights    rights  = XSecurityManager.Instance.GetObjectRights(objData);

            if (!rights.AllowDelete)
            {
                throw new XSecurityException(String.Format(
                                                 "Выполнение операции невозможно: нет прав на удаление объекта \"{0}\" ({1}[oid='{2}'])",
                                                 objData.TypeInfo.Description,
                                                 oRequest.TypeName,
                                                 oRequest.ObjectID
                                                 ));
            }

            // Вызываем метод подсистемы Storage (уровень Level-2); экземпляр
            // Storage представлен в рамках контекста выполнения опеарции
            return(new XDeleteObjectResponse(XStorageGateway.Delete(oContext, oRequest.TypeName, oRequest.ObjectID)));
        }