aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/ApplicationPlugins/ScriptEngine/ComponentLoader.cs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/ApplicationPlugins/ScriptEngine/ComponentLoader.cs200
1 files changed, 100 insertions, 100 deletions
diff --git a/OpenSim/ApplicationPlugins/ScriptEngine/ComponentLoader.cs b/OpenSim/ApplicationPlugins/ScriptEngine/ComponentLoader.cs
index c89da81..0aa0525 100644
--- a/OpenSim/ApplicationPlugins/ScriptEngine/ComponentLoader.cs
+++ b/OpenSim/ApplicationPlugins/ScriptEngine/ComponentLoader.cs
@@ -1,101 +1,101 @@
1/* 1/*
2 * Copyright (c) Contributors, http://opensimulator.org/ 2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders. 3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright 7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright 9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution. 11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSim Project nor the 12 * * Neither the name of the OpenSim Project nor the
13 * names of its contributors may be used to endorse or promote products 13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission. 14 * derived from this software without specific prior written permission.
15 * 15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY 16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY 19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */ 26 */
27using System; 27using System;
28using System.Collections.Generic; 28using System.Collections.Generic;
29using System.IO; 29using System.IO;
30using System.Reflection; 30using System.Reflection;
31using System.Text; 31using System.Text;
32using log4net; 32using log4net;
33using OpenSim.ApplicationPlugins.ScriptEngine.Components; 33using OpenSim.ApplicationPlugins.ScriptEngine.Components;
34 34
35namespace OpenSim.ApplicationPlugins.ScriptEngine 35namespace OpenSim.ApplicationPlugins.ScriptEngine
36{ 36{
37 /// <summary> 37 /// <summary>
38 /// Used to load ScriptEngine component .dll's 38 /// Used to load ScriptEngine component .dll's
39 /// </summary> 39 /// </summary>
40 internal class ComponentLoader 40 internal class ComponentLoader
41 { 41 {
42 internal static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 42 internal static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
43 private ScriptEnginePlugin scriptEnginePlugin; 43 private ScriptEnginePlugin scriptEnginePlugin;
44 public ComponentLoader(ScriptEnginePlugin sep) 44 public ComponentLoader(ScriptEnginePlugin sep)
45 { 45 {
46 scriptEnginePlugin = sep; 46 scriptEnginePlugin = sep;
47 } 47 }
48 48
49 /// <summary> 49 /// <summary>
50 /// Load components from directory 50 /// Load components from directory
51 /// </summary> 51 /// </summary>
52 /// <param name="directory"></param> 52 /// <param name="directory"></param>
53 public void Load(string directory) 53 public void Load(string directory)
54 { 54 {
55 // We may want to change how this functions as currently it required unique class names for each component 55 // We may want to change how this functions as currently it required unique class names for each component
56 56
57 foreach (string file in Directory.GetFiles(directory, "*.dll")) 57 foreach (string file in Directory.GetFiles(directory, "*.dll"))
58 { 58 {
59 //m_log.DebugFormat("[ScriptEngine]: Loading: [{0}].", file); 59 //m_log.DebugFormat("[ScriptEngine]: Loading: [{0}].", file);
60 Assembly componentAssembly = Assembly.LoadFrom(file); 60 Assembly componentAssembly = Assembly.LoadFrom(file);
61 if (componentAssembly != null) 61 if (componentAssembly != null)
62 { 62 {
63 try 63 try
64 { 64 {
65 // Go through all types in the assembly 65 // Go through all types in the assembly
66 foreach (Type componentType in componentAssembly.GetTypes()) 66 foreach (Type componentType in componentAssembly.GetTypes())
67 { 67 {
68 if (componentType.IsPublic 68 if (componentType.IsPublic
69 && !componentType.IsAbstract) 69 && !componentType.IsAbstract)
70 { 70 {
71 if (componentType.IsSubclassOf(typeof (ComponentBase))) 71 if (componentType.IsSubclassOf(typeof (ComponentBase)))
72 { 72 {
73 // We have found an type which is derived from ProdiverBase, add it to provider list 73 // We have found an type which is derived from ProdiverBase, add it to provider list
74 m_log.InfoFormat("[ScriptEngine]: Adding component: {0}", componentType.Name); 74 m_log.InfoFormat("[ScriptEngine]: Adding component: {0}", componentType.Name);
75 lock (ComponentRegistry.providers) 75 lock (ComponentRegistry.providers)
76 { 76 {
77 ComponentRegistry.providers.Add(componentType.Name, componentType); 77 ComponentRegistry.providers.Add(componentType.Name, componentType);
78 } 78 }
79 } 79 }
80 if (componentType.IsSubclassOf(typeof(RegionScriptEngineBase))) 80 if (componentType.IsSubclassOf(typeof(RegionScriptEngineBase)))
81 { 81 {
82 // We have found an type which is derived from RegionScriptEngineBase, add it to engine list 82 // We have found an type which is derived from RegionScriptEngineBase, add it to engine list
83 m_log.InfoFormat("[ScriptEngine]: Adding script engine: {0}", componentType.Name); 83 m_log.InfoFormat("[ScriptEngine]: Adding script engine: {0}", componentType.Name);
84 lock (ComponentRegistry.scriptEngines) 84 lock (ComponentRegistry.scriptEngines)
85 { 85 {
86 ComponentRegistry.scriptEngines.Add(componentType.Name, componentType); 86 ComponentRegistry.scriptEngines.Add(componentType.Name, componentType);
87 } 87 }
88 } 88 }
89 } 89 }
90 } 90 }
91 } 91 }
92 catch 92 catch
93 (ReflectionTypeLoadException) 93 (ReflectionTypeLoadException)
94 { 94 {
95 m_log.InfoFormat("[ScriptEngine]: Could not load types for [{0}].", componentAssembly.FullName); 95 m_log.InfoFormat("[ScriptEngine]: Could not load types for [{0}].", componentAssembly.FullName);
96 } 96 }
97 } //if 97 } //if
98 } //foreach 98 } //foreach
99 } 99 }
100 } 100 }
101} \ No newline at end of file 101} \ No newline at end of file