Exemplo n.º 1
0
        private StreamDirectory createFromNode(PipelineContext ctx, XmlElement providerNode, XmlElement parentNode, bool mustExcept)
        {
            String type = providerNode.ReadStr("@type", null);

            if (type != null && providerNode.LocalName == "provider") //Node could be a datasource, where type describes the type of the datasource
            {
                return(ImportEngine.CreateObject <StreamDirectory>(type, ctx, providerNode, parentNode));
            }

            if (providerNode.GetAttributeNode("file") != null || providerNode.GetAttributeNode("root") != null)
            {
                return(new FileStreamDirectory(ctx, providerNode, parentNode));
            }

            if (providerNode.GetAttributeNode("url") != null)
            {
                return(new WebStreamDirectory(ctx, providerNode, parentNode));
            }

            if (providerNode.GetAttributeNode("cmd") != null)
            {
                return(new ShellStreamDirectory(ctx, providerNode, parentNode));
            }

            if (mustExcept)
            {
                XmlUtils.ThrowMissingException(providerNode, "@type, @file, @root or @url");
            }
            return(null);
        }