protected SPDocumentParser GetCurrentObject(SPFarm farm, DocumentParserDefinition definition)
        {
            var currentExtension = definition.FileExtension;

            var service = SPWebService.ContentService;
            var parsers = service.PluggableParsers;

            if (parsers.ContainsKey(currentExtension))
                return parsers[currentExtension];

            return null;
        }
        private void DeployDefinition(object modelHost, SPFarm farm, DocumentParserDefinition definition)
        {
            var service = SPWebService.ContentService;
            var parsers = service.PluggableParsers;

            var currentExtension = definition.FileExtension;
            var currentParser = GetCurrentObject(farm, definition);

            InvokeOnModelEvent(this, new ModelEventArgs
            {
                CurrentModelNode = null,
                Model = null,
                EventType = ModelEventType.OnProvisioning,
                Object = currentParser,
                ObjectType = typeof(SPDocumentParser),
                ObjectDefinition = definition,
                ModelHost = modelHost
            });

            if (currentParser != null)
            {
                parsers.Remove(currentExtension);
                service.Update();
            }

            currentParser = new SPDocumentParser(definition.ProgId, currentExtension);
            service.PluggableParsers.Add(currentExtension, currentParser);

            InvokeOnModelEvent(this, new ModelEventArgs
            {
                CurrentModelNode = null,
                Model = null,
                EventType = ModelEventType.OnProvisioned,
                Object = currentParser,
                ObjectType = typeof(SPDocumentParser),
                ObjectDefinition = definition,
                ModelHost = modelHost
            });

            service.Update();
        }