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 @@
-
-
-
-
-
-
-
-
-
-
-