diff --git a/OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs b/OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs index 523f9fc4d0..6743fb4e95 100644 --- a/OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs +++ b/OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs @@ -28,13 +28,18 @@ using System.Reflection; using System.Threading; using log4net; +using Mono.Addins; using Nini.Config; using OpenSim.Framework; using OpenSim.Framework.RegionLoader.Filesystem; using OpenSim.Framework.RegionLoader.Web; +[assembly : Addin] +[assembly : AddinDependency("OpenSim", "0.5")] + namespace OpenSim.ApplicationPlugins.LoadRegions { + [Extension("/OpenSim/Startup")] public class LoadRegionsPlugin : IApplicationPlugin { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); diff --git a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs index 767b736c2b..0a58a0ab54 100644 --- a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs +++ b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs @@ -33,14 +33,19 @@ using System.Reflection; using System.Timers; using libsecondlife; using log4net; +using Mono.Addins; using Nwc.XmlRpc; using OpenSim.Framework; using OpenSim.Framework.Servers; using OpenSim.Region.Environment.Modules.World.Terrain; using OpenSim.Region.Environment.Scenes; +[assembly : Addin] +[assembly : AddinDependency("OpenSim", "0.5")] + namespace OpenSim.ApplicationPlugins.RemoteController { + [Extension("/OpenSim/Startup")] public class RemoteAdminPlugin : IApplicationPlugin { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); diff --git a/OpenSim/ApplicationPlugins/Rest/Inventory/RestHandler.cs b/OpenSim/ApplicationPlugins/Rest/Inventory/RestHandler.cs index 1ec3567c6f..c351272870 100644 --- a/OpenSim/ApplicationPlugins/Rest/Inventory/RestHandler.cs +++ b/OpenSim/ApplicationPlugins/Rest/Inventory/RestHandler.cs @@ -32,9 +32,16 @@ using System.Reflection; using OpenSim.Framework; using OpenSim.Framework.Servers; using OpenSim.ApplicationPlugins.Rest; +using Mono.Addins; + +[assembly : Addin] +[assembly : AddinDependency("OpenSim", "0.5")] namespace OpenSim.ApplicationPlugins.Rest.Inventory { + + [Extension("/OpenSim/Startup")] + public class RestHandler : RestPlugin, IHttpAgentHandler { diff --git a/OpenSim/ApplicationPlugins/Rest/Regions/GETHandler.cs b/OpenSim/ApplicationPlugins/Rest/Regions/GETHandler.cs index 2734c77cf6..a605d09e64 100644 --- a/OpenSim/ApplicationPlugins/Rest/Regions/GETHandler.cs +++ b/OpenSim/ApplicationPlugins/Rest/Regions/GETHandler.cs @@ -37,6 +37,7 @@ using System.Timers; using System.Xml; using System.Xml.Serialization; using libsecondlife; +using Mono.Addins; using Nwc.XmlRpc; using Nini.Config; using OpenSim.Framework; diff --git a/OpenSim/ApplicationPlugins/Rest/Regions/POSTHandler.cs b/OpenSim/ApplicationPlugins/Rest/Regions/POSTHandler.cs index a40af29f17..e6131f1393 100644 --- a/OpenSim/ApplicationPlugins/Rest/Regions/POSTHandler.cs +++ b/OpenSim/ApplicationPlugins/Rest/Regions/POSTHandler.cs @@ -37,6 +37,7 @@ using System.Timers; using System.Xml; using System.Xml.Serialization; using libsecondlife; +using Mono.Addins; using Nwc.XmlRpc; using Nini.Config; using OpenSim.Framework; diff --git a/OpenSim/ApplicationPlugins/Rest/Regions/RestRegionPlugin.cs b/OpenSim/ApplicationPlugins/Rest/Regions/RestRegionPlugin.cs index 5ec2526ae1..9d68225642 100644 --- a/OpenSim/ApplicationPlugins/Rest/Regions/RestRegionPlugin.cs +++ b/OpenSim/ApplicationPlugins/Rest/Regions/RestRegionPlugin.cs @@ -37,6 +37,7 @@ using System.Timers; using System.Xml; using System.Xml.Serialization; using libsecondlife; +using Mono.Addins; using Nwc.XmlRpc; using Nini.Config; using OpenSim.Framework; @@ -46,8 +47,13 @@ using OpenSim.Framework.Communications; using OpenSim.Region.Environment.Scenes; using OpenSim.ApplicationPlugins.Rest; +[assembly : Addin] +[assembly : AddinDependency("OpenSim", "0.5")] + namespace OpenSim.ApplicationPlugins.Rest.Regions { + + [Extension("/OpenSim/Startup")] public partial class RestRegionPlugin : RestPlugin { private static XmlSerializerNamespaces _xmlNs; diff --git a/OpenSim/ApplicationPlugins/Rest/RestPlugin.cs b/OpenSim/ApplicationPlugins/Rest/RestPlugin.cs index 1f633d5f14..78e0e6697e 100644 --- a/OpenSim/ApplicationPlugins/Rest/RestPlugin.cs +++ b/OpenSim/ApplicationPlugins/Rest/RestPlugin.cs @@ -35,6 +35,7 @@ using System.Reflection; using System.Timers; using System.Xml; using libsecondlife; +using Mono.Addins; using Nwc.XmlRpc; using Nini.Config; using OpenSim.Framework; @@ -43,8 +44,13 @@ using OpenSim.Framework.Servers; using OpenSim.Framework.Communications; using OpenSim.Region.Environment.Scenes; +// [assembly : Addin] +// [assembly : AddinDependency("OpenSim", "0.5")] + namespace OpenSim.ApplicationPlugins.Rest { + + // [Extension("/OpenSim/Startup")] public abstract class RestPlugin : IApplicationPlugin { #region properties diff --git a/OpenSim/Framework/PluginLoader.cs b/OpenSim/Framework/PluginLoader.cs index cfc1d7c4de..9104958e8c 100644 --- a/OpenSim/Framework/PluginLoader.cs +++ b/OpenSim/Framework/PluginLoader.cs @@ -55,7 +55,6 @@ namespace OpenSim.Framework } /// - /// Generic Plugin Loader /// public class PluginLoader : IDisposable where T : IPlugin @@ -67,17 +66,16 @@ namespace OpenSim.Framework private PluginInitialiserBase initialiser; private Dictionary constraints = new Dictionary(); - - private static bool runonce = false; + private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - + public PluginInitialiserBase Initialiser { set { initialiser = value; } get { return initialiser; } } - + public List Plugins { get { return loaded; } @@ -86,19 +84,25 @@ namespace OpenSim.Framework public PluginLoader () { Initialiser = new PluginInitialiserBase(); - initialise_plugin_dir_ ("."); } public PluginLoader (PluginInitialiserBase init) { - Initialiser = init; - initialise_plugin_dir_ ("."); + Initialiser = init; } public PluginLoader (PluginInitialiserBase init, string dir) { - Initialiser = init; - initialise_plugin_dir_ (dir); + Initialiser = init; + AddPluginDir (dir); + } + + public void AddPluginDir (string dir) + { + suppress_console_output_ (true); + AddinManager.Initialize (dir); + AddinManager.Registry.Update (null); + suppress_console_output_ (false); } public void AddExtensionPoint (string extpoint) @@ -110,21 +114,22 @@ namespace OpenSim.Framework { constraints.Add (extpoint, cons); } - - public void Load (string extpoint) + + public void Load (string extpoint, string dir) { + AddPluginDir (dir); AddExtensionPoint (extpoint); Load(); } public void Load () { - log.Info("[PLUGINS]: Begin Loading " + AddinManager.Registry.RegistryPath); + suppress_console_output_ (true); + AddinManager.Registry.Update (null); + suppress_console_output_ (false); foreach (string ext in extpoints) { - log.Info("[PLUGINS]: Loading extension point " + ext); - if (constraints.ContainsKey (ext)) { IPluginConstraint cons = constraints [ext]; @@ -150,25 +155,9 @@ namespace OpenSim.Framework p.Dispose (); } - private void initialise_plugin_dir_ (string dir) + public void ClearCache() { - if (runonce == true) - return; - - log.Info("[PLUGINS]: Initialzing " + dir); - - clear_registry_(); - suppress_console_output_ (true); - AddinManager.Initialize (dir); - AddinManager.Registry.Update (null); - suppress_console_output_ (false); - runonce = true; - } - - private void clear_registry_ () - { - // The Mono addin manager (in Mono.Addins.dll version 0.2.0.0) - // occasionally seems to corrupt its addin cache + // The Mono addin manager (in Mono.Addins.dll version 0.2.0.0) occasionally seems to corrupt its addin cache // Hence, as a temporary solution we'll remove it before each startup if (Directory.Exists("addin-db-000")) Directory.Delete("addin-db-000", true); @@ -236,7 +225,7 @@ namespace OpenSim.Framework public PluginFilenameConstraint (string name) { filename = name; - + } public string Message @@ -256,7 +245,7 @@ namespace OpenSim.Framework string[] path = ns[0].Path.Split('/'); if (path [path.Length-1] == filename) return false; - + return true; } } diff --git a/OpenSim/Grid/GridServer/GridServerBase.cs b/OpenSim/Grid/GridServer/GridServerBase.cs index a8ebd2748e..3cd7489294 100644 --- a/OpenSim/Grid/GridServer/GridServerBase.cs +++ b/OpenSim/Grid/GridServer/GridServerBase.cs @@ -31,6 +31,7 @@ using System.IO; using System.Reflection; using System.Timers; using log4net; +using Mono.Addins; using OpenSim.Framework; using OpenSim.Framework.Console; using OpenSim.Framework.Servers; @@ -120,7 +121,7 @@ namespace OpenSim.Grid.GridServer PluginLoader loader = new PluginLoader (new GridPluginInitialiser (this)); - loader.Load ("/OpenSim/GridServer"); + loader.Load ("/OpenSim/GridServer", "."); m_plugins = loader.Plugins; } diff --git a/OpenSim/Grid/GridServer/IGridPlugin.cs b/OpenSim/Grid/GridServer/IGridPlugin.cs index b8ac611780..6593962586 100644 --- a/OpenSim/Grid/GridServer/IGridPlugin.cs +++ b/OpenSim/Grid/GridServer/IGridPlugin.cs @@ -26,10 +26,14 @@ * */ +using Mono.Addins; using OpenSim.Framework; +[assembly : AddinRoot("OpenSim", "0.5")] + namespace OpenSim.Grid.GridServer { + [TypeExtensionPoint("/OpenSim/GridServer")] public interface IGridPlugin : IPlugin { void Initialise(GridServerBase gridServer); diff --git a/OpenSim/Region/Application/IApplicationPlugin.cs b/OpenSim/Region/Application/IApplicationPlugin.cs index 2e3122f23e..f122925def 100644 --- a/OpenSim/Region/Application/IApplicationPlugin.cs +++ b/OpenSim/Region/Application/IApplicationPlugin.cs @@ -25,10 +25,14 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +using Mono.Addins; using OpenSim.Framework; +[assembly : AddinRoot("OpenSim", "0.5")] + namespace OpenSim { + [TypeExtensionPoint("/OpenSim/Startup")] public interface IApplicationPlugin : IPlugin { void Initialise(OpenSimBase openSim); diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs index 065d2f26fb..37daf881cc 100644 --- a/OpenSim/Region/Application/OpenSimBase.cs +++ b/OpenSim/Region/Application/OpenSimBase.cs @@ -34,6 +34,7 @@ using System.Text; using System.Threading; using libsecondlife; using log4net; +using Mono.Addins; using Nini.Config; using OpenSim.Framework; using OpenSim.Framework.Communications.Cache; @@ -336,7 +337,7 @@ namespace OpenSim PluginLoader loader = new PluginLoader (new ApplicationPluginInitialiser (this)); - loader.Load ("/OpenSim/Startup"); + loader.Load ("/OpenSim/Startup", "."); m_plugins = loader.Plugins; } @@ -729,4 +730,3 @@ namespace OpenSim - diff --git a/bin/addins/LoadRegionsPlugin.addin.xml b/bin/addins/LoadRegionsPlugin.addin.xml deleted file mode 100644 index 25fb4f7a3a..0000000000 --- a/bin/addins/LoadRegionsPlugin.addin.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/bin/addins/OpenSim.Grid.GridServer.host.addins b/bin/addins/OpenSim.Grid.GridServer.host.addins deleted file mode 100644 index c78dfc1c01..0000000000 --- a/bin/addins/OpenSim.Grid.GridServer.host.addins +++ /dev/null @@ -1,3 +0,0 @@ - - /home/ryanm/Code/opensim/bin - diff --git a/bin/addins/OpenSim.Grid.Gridserver.addin.xml b/bin/addins/OpenSim.Grid.Gridserver.addin.xml deleted file mode 100644 index 8168bb7cc6..0000000000 --- a/bin/addins/OpenSim.Grid.Gridserver.addin.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/bin/addins/OpenSim.addin.xml b/bin/addins/OpenSim.addin.xml deleted file mode 100644 index 04ddbf2f11..0000000000 --- a/bin/addins/OpenSim.addin.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/bin/addins/OpenSim.host.addins b/bin/addins/OpenSim.host.addins deleted file mode 100644 index 6465d3c403..0000000000 --- a/bin/addins/OpenSim.host.addins +++ /dev/null @@ -1,6 +0,0 @@ - - /home/ryanm/Code/opensim/bin - - - C:\cfk2007\svnsugi\bin - diff --git a/bin/addins/RemoteAdminPlugin.addin.xml b/bin/addins/RemoteAdminPlugin.addin.xml deleted file mode 100644 index 707859eecb..0000000000 --- a/bin/addins/RemoteAdminPlugin.addin.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/bin/addins/RemoteAdminPlugin.xml b/bin/addins/RemoteAdminPlugin.xml deleted file mode 100644 index 707859eecb..0000000000 --- a/bin/addins/RemoteAdminPlugin.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/bin/addins/RestHandler.addin.xml b/bin/addins/RestHandler.addin.xml deleted file mode 100644 index 9be870c3c8..0000000000 --- a/bin/addins/RestHandler.addin.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/bin/addins/RestRegionPlugin.addin.xml b/bin/addins/RestRegionPlugin.addin.xml deleted file mode 100644 index 2520d4e0d5..0000000000 --- a/bin/addins/RestRegionPlugin.addin.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - -