Esempio n. 1
0
        public void ReadManifest(XmlReader reader, PlugIn plugIn)
        {
            if (reader.AttributeCount != 0)
            {
                throw new Exception(PlugInConst.Manifest + " node cannot have attributes.");
            }
            if (reader.IsEmptyElement)
            {
                throw new Exception(PlugInConst.Manifest + " node cannot be empty.");
            }

            while (reader.Read())
            {
                switch (reader.NodeType)
                {
                case XmlNodeType.Element:
                    string     nodeName   = reader.LocalName;
                    Properties properties = Properties.ReadFromAttributes(reader);
                    switch (nodeName)
                    {
                    case PlugInConst.ManifestIdentity:
                        AddIdentity(properties["name"], properties["version"], plugIn.PlugInDir);
                        break;

                    case PlugInConst.ManifestDependency:
                        Dependencies.Add(PlugInReference.Create(properties, plugIn.PlugInDir));
                        break;

                    case PlugInConst.ManifestConflict:
                        Conflicts.Add(PlugInReference.Create(properties, plugIn.PlugInDir));
                        break;

                    default:
                        throw new Exception("Unknown node in " + PlugInConst.Manifest + " section:" + nodeName + " plugIn:" + plugIn.PlugInFile);
                    }
                    break;

                case XmlNodeType.EndElement:
                    if (reader.LocalName == PlugInConst.Manifest)
                    {
                        return;
                    }
                    break;

                default:
                    break;
                }
            }
        }