Ejemplo n.º 1
0
        private static void LoadFormatDataHelper(
            ExtendedTypeDefinition formatData,
            PSPropertyExpressionFactory expressionFactory, List <XmlLoaderLoggerEntry> logEntries, ref bool success,
            PSSnapInTypeAndFormatErrors file, TypeInfoDataBase db,
            bool isBuiltInFormatData,
            bool isForHelp)
        {
            using (TypeInfoDataBaseLoader loader = new TypeInfoDataBaseLoader())
            {
                if (!loader.LoadFormattingData(formatData, db, expressionFactory, isBuiltInFormatData, isForHelp))
                {
                    success = false;
                }

                foreach (XmlLoaderLoggerEntry entry in loader.LogEntries)
                {
                    // filter in only errors from the current file...
                    if (entry.entryType == XmlLoaderLoggerEntry.EntryType.Error)
                    {
                        string mshsnapinMessage = StringUtil.Format(FormatAndOutXmlLoadingStrings.MshSnapinQualifiedError,
                                                                    file.PSSnapinName, entry.message);
                        file.Errors.Add(mshsnapinMessage);
                    }
                }
                // now aggregate the entries...
                logEntries.AddRange(loader.LogEntries);
            }
        }
Ejemplo n.º 2
0
        private static TypeInfoDataBase LoadFromFileHelper(Collection <PSSnapInTypeAndFormatErrors> files, MshExpressionFactory expressionFactory, AuthorizationManager authorizationManager, PSHost host, bool preValidated, out List <XmlLoaderLoggerEntry> logEntries, out bool success)
        {
            success    = true;
            logEntries = new List <XmlLoaderLoggerEntry>();
            TypeInfoDataBase db = new TypeInfoDataBase();

            AddPreLoadInstrinsics(db);
            foreach (PSSnapInTypeAndFormatErrors errors in files)
            {
                if (errors.FormatData != null)
                {
                    using (TypeInfoDataBaseLoader loader = new TypeInfoDataBaseLoader())
                    {
                        if (!loader.LoadFormattingData(errors.FormatData, db, expressionFactory))
                        {
                            success = false;
                        }
                        foreach (XmlLoaderLoggerEntry entry in loader.LogEntries)
                        {
                            if (entry.entryType == XmlLoaderLoggerEntry.EntryType.Error)
                            {
                                string item = StringUtil.Format(FormatAndOutXmlLoadingStrings.MshSnapinQualifiedError, errors.PSSnapinName, entry.message);
                                errors.Errors.Add(item);
                            }
                        }
                        logEntries.AddRange(loader.LogEntries);
                        continue;
                    }
                }
                XmlFileLoadInfo info = new XmlFileLoadInfo(Path.GetPathRoot(errors.FullPath), errors.FullPath, errors.Errors, errors.PSSnapinName);
                using (TypeInfoDataBaseLoader loader2 = new TypeInfoDataBaseLoader())
                {
                    if (!loader2.LoadXmlFile(info, db, expressionFactory, authorizationManager, host, preValidated))
                    {
                        success = false;
                    }
                    foreach (XmlLoaderLoggerEntry entry2 in loader2.LogEntries)
                    {
                        if (entry2.entryType == XmlLoaderLoggerEntry.EntryType.Error)
                        {
                            string str2 = StringUtil.Format(FormatAndOutXmlLoadingStrings.MshSnapinQualifiedError, info.psSnapinName, entry2.message);
                            info.errors.Add(str2);
                            if (entry2.failToLoadFile)
                            {
                                errors.FailToLoadFile = true;
                            }
                        }
                    }
                    logEntries.AddRange(loader2.LogEntries);
                }
            }
            AddPostLoadInstrinsics(db);
            return(db);
        }
        private static TypeInfoDataBase LoadFromFileHelper(
            Collection <PSSnapInTypeAndFormatErrors> files,
            MshExpressionFactory expressionFactory,
            AuthorizationManager authorizationManager,
            PSHost host,
            out List <XmlLoaderLoggerEntry> logEntries,
            out bool success)
        {
            success    = true;
            logEntries = new List <XmlLoaderLoggerEntry>();
            List <XmlFileLoadInfo> xmlFileLoadInfoList = new List <XmlFileLoadInfo>();

            foreach (PSSnapInTypeAndFormatErrors file in files)
            {
                xmlFileLoadInfoList.Add(new XmlFileLoadInfo(Path.GetPathRoot(file.FullPath), file.FullPath, file.Errors, file.PSSnapinName));
            }
            TypeInfoDataBase db = new TypeInfoDataBase();

            TypeInfoDataBaseManager.AddPreLoadInstrinsics(db);
            foreach (XmlFileLoadInfo info in xmlFileLoadInfoList)
            {
                using (TypeInfoDataBaseLoader infoDataBaseLoader = new TypeInfoDataBaseLoader())
                {
                    if (!infoDataBaseLoader.LoadXmlFile(info, db, expressionFactory, authorizationManager, host))
                    {
                        success = false;
                    }
                    foreach (XmlLoaderLoggerEntry logEntry in infoDataBaseLoader.LogEntries)
                    {
                        if (logEntry.entryType == XmlLoaderLoggerEntry.EntryType.Error)
                        {
                            string str = XmlLoadingResourceManager.FormatString("MshSnapinQualifiedError", (object)info.psSnapinName, (object)logEntry.message);
                            info.errors.Add(str);
                        }
                    }
                    logEntries.AddRange((IEnumerable <XmlLoaderLoggerEntry>)infoDataBaseLoader.LogEntries);
                }
            }
            TypeInfoDataBaseManager.AddPostLoadInstrinsics(db);
            return(db);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// it loads a database from file(s).
        /// </summary>
        /// <param name="files">*.formal.xml files to be loaded</param>
        /// <param name="expressionFactory">expression factory to validate script blocks</param>
        /// <param name="authorizationManager">
        /// Authorization manager to perform signature checks before reading ps1xml files (or null of no checks are needed)
        /// </param>
        /// <param name="host">
        /// Host passed to <paramref name="authorizationManager"/>.  Can be null if no interactive questions should be asked.
        /// </param>
        /// <param name="preValidated">
        /// True if the format data has been pre-validated (build time, manual testing, etc) so that validation can be
        /// skipped at runtime.
        /// </param>
        /// <param name="logEntries">list of logger entries (errors, etc.) to return to the caller</param>
        /// <param name="success"> true if no error occurred</param>
        /// <returns>a database instance loaded from file(s)</returns>
        private static TypeInfoDataBase LoadFromFileHelper(
            Collection <PSSnapInTypeAndFormatErrors> files,
            PSPropertyExpressionFactory expressionFactory,
            AuthorizationManager authorizationManager,
            PSHost host,
            bool preValidated,
            out List <XmlLoaderLoggerEntry> logEntries,
            out bool success)
        {
            success = true;
            // Holds the aggregated log entries for all files...
            logEntries = new List <XmlLoaderLoggerEntry>();

            // fresh instance of the database
            TypeInfoDataBase db = new TypeInfoDataBase();

            // prepopulate the database with any necessary overriding data
            AddPreLoadIntrinsics(db);

            var etwEnabled = RunspaceEventSource.Log.IsEnabled();

            // load the XML document into a copy of the
            // in memory database
            foreach (PSSnapInTypeAndFormatErrors file in files)
            {
                // Loads formatting data from ExtendedTypeDefinition instance
                if (file.FormatData != null)
                {
                    LoadFormatDataHelper(file.FormatData, expressionFactory, logEntries, ref success, file, db, isBuiltInFormatData: false, isForHelp: false);
                    continue;
                }

                if (etwEnabled)
                {
                    RunspaceEventSource.Log.ProcessFormatFileStart(file.FullPath);
                }

                if (!ProcessBuiltin(file, db, expressionFactory, logEntries, ref success))
                {
                    // Loads formatting data from formatting data XML file
                    XmlFileLoadInfo info =
                        new XmlFileLoadInfo(Path.GetPathRoot(file.FullPath), file.FullPath, file.Errors, file.PSSnapinName);
                    using (TypeInfoDataBaseLoader loader = new TypeInfoDataBaseLoader())
                    {
                        if (!loader.LoadXmlFile(info, db, expressionFactory, authorizationManager, host, preValidated))
                        {
                            success = false;
                        }

                        foreach (XmlLoaderLoggerEntry entry in loader.LogEntries)
                        {
                            // filter in only errors from the current file...
                            if (entry.entryType == XmlLoaderLoggerEntry.EntryType.Error)
                            {
                                string mshsnapinMessage = StringUtil.Format(FormatAndOutXmlLoadingStrings.MshSnapinQualifiedError, info.psSnapinName, entry.message);
                                info.errors.Add(mshsnapinMessage);
                                if (entry.failToLoadFile)
                                {
                                    file.FailToLoadFile = true;
                                }
                            }
                        }
                        // now aggregate the entries...
                        logEntries.AddRange(loader.LogEntries);
                    }
                }

                if (etwEnabled)
                {
                    RunspaceEventSource.Log.ProcessFormatFileStop(file.FullPath);
                }
            }

            // add any sensible defaults to the database
            AddPostLoadIntrinsics(db);

            return(db);
        }
Ejemplo n.º 5
0
 internal ViewEntryNodeMatch(TypeInfoDataBaseLoader loader)
 {
     this._loader = loader;
 }
Ejemplo n.º 6
0
 internal ExpressionNodeMatch(TypeInfoDataBaseLoader loader)
 {
     this._loader = loader;
 }
Ejemplo n.º 7
0
 internal ComplexControlMatch(TypeInfoDataBaseLoader loader)
 {
     this._loader = loader;
 }
Ejemplo n.º 8
0
 private static TypeInfoDataBase LoadFromFileHelper(Collection<PSSnapInTypeAndFormatErrors> files, MshExpressionFactory expressionFactory, AuthorizationManager authorizationManager, PSHost host, bool preValidated, out List<XmlLoaderLoggerEntry> logEntries, out bool success)
 {
     success = true;
     logEntries = new List<XmlLoaderLoggerEntry>();
     TypeInfoDataBase db = new TypeInfoDataBase();
     AddPreLoadInstrinsics(db);
     foreach (PSSnapInTypeAndFormatErrors errors in files)
     {
         if (errors.FormatData != null)
         {
             using (TypeInfoDataBaseLoader loader = new TypeInfoDataBaseLoader())
             {
                 if (!loader.LoadFormattingData(errors.FormatData, db, expressionFactory))
                 {
                     success = false;
                 }
                 foreach (XmlLoaderLoggerEntry entry in loader.LogEntries)
                 {
                     if (entry.entryType == XmlLoaderLoggerEntry.EntryType.Error)
                     {
                         string item = StringUtil.Format(FormatAndOutXmlLoadingStrings.MshSnapinQualifiedError, errors.PSSnapinName, entry.message);
                         errors.Errors.Add(item);
                     }
                 }
                 logEntries.AddRange(loader.LogEntries);
                 continue;
             }
         }
         XmlFileLoadInfo info = new XmlFileLoadInfo(Path.GetPathRoot(errors.FullPath), errors.FullPath, errors.Errors, errors.PSSnapinName);
         using (TypeInfoDataBaseLoader loader2 = new TypeInfoDataBaseLoader())
         {
             if (!loader2.LoadXmlFile(info, db, expressionFactory, authorizationManager, host, preValidated))
             {
                 success = false;
             }
             foreach (XmlLoaderLoggerEntry entry2 in loader2.LogEntries)
             {
                 if (entry2.entryType == XmlLoaderLoggerEntry.EntryType.Error)
                 {
                     string str2 = StringUtil.Format(FormatAndOutXmlLoadingStrings.MshSnapinQualifiedError, info.psSnapinName, entry2.message);
                     info.errors.Add(str2);
                     if (entry2.failToLoadFile)
                     {
                         errors.FailToLoadFile = true;
                     }
                 }
             }
             logEntries.AddRange(loader2.LogEntries);
         }
     }
     AddPostLoadInstrinsics(db);
     return db;
 }
Ejemplo n.º 9
0
        private static void LoadFormatDataHelper(
            ExtendedTypeDefinition formatData,
            MshExpressionFactory expressionFactory, List<XmlLoaderLoggerEntry> logEntries, ref bool success,
            PSSnapInTypeAndFormatErrors file, TypeInfoDataBase db,
            bool isBuiltInFormatData,
            bool isForHelp)
        {
            using (TypeInfoDataBaseLoader loader = new TypeInfoDataBaseLoader())
            {
                if (!loader.LoadFormattingData(formatData, db, expressionFactory, isBuiltInFormatData, isForHelp))
                    success = false;

                foreach (XmlLoaderLoggerEntry entry in loader.LogEntries)
                {
                    // filter in only errors from the current file...
                    if (entry.entryType == XmlLoaderLoggerEntry.EntryType.Error)
                    {
                        string mshsnapinMessage = StringUtil.Format(FormatAndOutXmlLoadingStrings.MshSnapinQualifiedError,
                            file.PSSnapinName, entry.message);
                        file.Errors.Add(mshsnapinMessage);
                    }
                }
                // now aggregate the entries...
                logEntries.AddRange(loader.LogEntries);
            }
        }
Ejemplo n.º 10
0
        /// <summary>
        /// it loads a database from file(s).
        /// </summary>
        /// <param name="files">*.formal.xml files to be loaded</param>
        /// <param name="expressionFactory">expression factory to validate script blocks</param>
        /// <param name="authorizationManager">
        /// Authorization manager to perform signature checks before reading ps1xml files (or null of no checks are needed)
        /// </param>
        /// <param name="host">
        /// Host passed to <paramref name="authorizationManager"/>.  Can be null if no interactive questions should be asked.
        /// </param>
        /// <param name="preValidated">
        /// True if the format data has been pre-validated (build time, manual testing, etc) so that validation can be
        /// skipped at runtime.
        /// </param>
        /// <param name="logEntries">list of logger entries (errors, etc.) to return to the caller</param>
        /// <param name="success"> true if no error occurred</param>
        /// <returns>a database instance loaded from file(s)</returns>
        private static TypeInfoDataBase LoadFromFileHelper(
            Collection<PSSnapInTypeAndFormatErrors> files,
            MshExpressionFactory expressionFactory,
            AuthorizationManager authorizationManager,
            PSHost host,
            bool preValidated,
            out List<XmlLoaderLoggerEntry> logEntries,
            out bool success)
        {
            success = true;
            // Holds the aggregated log entries for all files...
            logEntries = new List<XmlLoaderLoggerEntry>();

            // fresh instance of the database
            TypeInfoDataBase db = new TypeInfoDataBase();

            // prepopulate the database with any necessary overriding data
            AddPreLoadInstrinsics(db);

            var etwEnabled = RunspaceEventSource.Log.IsEnabled();

            // load the XML document into a copy of the
            // in memory database
            foreach (PSSnapInTypeAndFormatErrors file in files)
            {
                // Loads formatting data from ExtendedTypeDefinition instance
                if (file.FormatData != null)
                {
                    LoadFormatDataHelper(file.FormatData, expressionFactory, logEntries, ref success, file, db, isBuiltInFormatData: false, isForHelp: false);
                    continue;
                }

                if (etwEnabled) RunspaceEventSource.Log.ProcessFormatFileStart(file.FullPath);

                if (!ProcessBuiltin(file, db, expressionFactory, logEntries, ref success))
                {
                    // Loads formatting data from formatting data XML file
                    XmlFileLoadInfo info =
                        new XmlFileLoadInfo(Path.GetPathRoot(file.FullPath), file.FullPath, file.Errors, file.PSSnapinName);
                    using (TypeInfoDataBaseLoader loader = new TypeInfoDataBaseLoader())
                    {
                        if (!loader.LoadXmlFile(info, db, expressionFactory, authorizationManager, host, preValidated))
                            success = false;

                        foreach (XmlLoaderLoggerEntry entry in loader.LogEntries)
                        {
                            // filter in only errors from the current file...
                            if (entry.entryType == XmlLoaderLoggerEntry.EntryType.Error)
                            {
                                string mshsnapinMessage = StringUtil.Format(FormatAndOutXmlLoadingStrings.MshSnapinQualifiedError, info.psSnapinName, entry.message);
                                info.errors.Add(mshsnapinMessage);
                                if (entry.failToLoadFile) { file.FailToLoadFile = true; }
                            }
                        }
                        // now aggregate the entries...
                        logEntries.AddRange(loader.LogEntries);
                    }
                }

                if (etwEnabled) RunspaceEventSource.Log.ProcessFormatFileStop(file.FullPath);
            }

            // add any sensible defaults to the database
            AddPostLoadInstrinsics(db);

            return db;
        }