* TypeDescriptor.cs: Fix GetComponentName() so that it returns the type
[mono.git] / mcs / nant / src / TaskFactory.cs
1 // NAnt - A .NET build tool\r
2 // Copyright (C) 2001 Gerry Shaw\r
3 //\r
4 // This program is free software; you can redistribute it and/or modify\r
5 // it under the terms of the GNU General Public License as published by\r
6 // the Free Software Foundation; either version 2 of the License, or\r
7 // (at your option) any later version.\r
8 //\r
9 // This program is distributed in the hope that it will be useful,\r
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of\r
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
12 // GNU General Public License for more details.\r
13 //\r
14 // You should have received a copy of the GNU General Public License\r
15 // along with this program; if not, write to the Free Software\r
16 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
17 //\r
18 // Gerry Shaw (gerry_shaw@yahoo.com)\r
19 \r
20 namespace SourceForge.NAnt {\r
21 \r
22     using System;\r
23     using System.Xml;\r
24 \r
25     internal class TaskFactory {\r
26 \r
27         TaskBuilderCollection _builders = new TaskBuilderCollection();\r
28         Project _project;\r
29 \r
30         public TaskFactory(Project project) {\r
31             Project = project;\r
32         }\r
33 \r
34         public TaskBuilderCollection Builders {\r
35             get { return _builders; }\r
36         }\r
37 \r
38         public Project Project {\r
39             get { return _project; }\r
40             set { _project = value; }\r
41         }\r
42 \r
43         public Task CreateTask(XmlNode taskNode, Target target) {\r
44             string taskName = taskNode.Name;\r
45             Task task = null;\r
46 \r
47             TaskBuilder builder = Builders.GetBuilderForTask(taskName);\r
48             if (builder != null) {\r
49                 task = builder.CreateTask(Project, target);\r
50             } else {\r
51                 throw new BuildException(String.Format("unknown task <{0}> in target <{1}>", taskName, target.Name));\r
52             }\r
53 \r
54             return task;\r
55         }\r
56     }\r
57 }