*** CHANGED CONFIG BEHAVIOUR ***

* Changed really strange LocalSettings behaviour with enforcing hard-coded plugin names if none supplied
* UserServices and InventoryPlugin will only load if supplied with filename
afrisby
lbsa71 2007-09-24 02:41:13 +00:00
parent a9a126063f
commit 5818958a9a
4 changed files with 47 additions and 56 deletions

View File

@ -23,28 +23,28 @@ namespace OpenSim.Framework.InventoryServiceBase
/// <param name="FileName">The filename to the user server plugin DLL</param>
public void AddPlugin(string FileName)
{
MainLog.Instance.Verbose("Inventory", "Inventorystorage: Attempting to load " + FileName);
Assembly pluginAssembly = Assembly.LoadFrom(FileName);
foreach (Type pluginType in pluginAssembly.GetTypes())
if (!String.IsNullOrEmpty(FileName))
{
if (!pluginType.IsAbstract)
MainLog.Instance.Verbose("Inventory", "Inventorystorage: Attempting to load " + FileName);
Assembly pluginAssembly = Assembly.LoadFrom(FileName);
foreach (Type pluginType in pluginAssembly.GetTypes())
{
Type typeInterface = pluginType.GetInterface("IInventoryData", true);
if (typeInterface != null)
if (!pluginType.IsAbstract)
{
IInventoryData plug = (IInventoryData)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
plug.Initialise();
this.m_plugins.Add(plug.getName(), plug);
MainLog.Instance.Verbose("Inventorystorage: Added IInventoryData Interface");
}
Type typeInterface = pluginType.GetInterface("IInventoryData", true);
typeInterface = null;
if (typeInterface != null)
{
IInventoryData plug =
(IInventoryData)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
plug.Initialise();
this.m_plugins.Add(plug.getName(), plug);
MainLog.Instance.Verbose("Inventorystorage: Added IInventoryData Interface");
}
}
}
}
pluginAssembly = null;
}
/// <summary>

View File

@ -25,6 +25,7 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
using System;
using System.Collections;
using System.Collections.Generic;
@ -32,15 +33,11 @@ using System.Reflection;
using System.Security.Cryptography;
using libsecondlife;
using Nwc.XmlRpc;
using OpenSim.Framework.Configuration;
using OpenSim.Framework.Console;
using OpenSim.Framework.Data;
using OpenSim.Framework.Interfaces;
using OpenSim.Framework.Inventory;
using OpenSim.Framework.Utilities;
using OpenSim.Framework.Configuration;
using InventoryFolder = OpenSim.Framework.Inventory.InventoryFolder;
namespace OpenSim.Framework.UserManagement
{
public abstract class UserManagerBase
@ -54,32 +51,32 @@ namespace OpenSim.Framework.UserManagement
/// <param name="FileName">The filename to the user server plugin DLL</param>
public void AddPlugin(string FileName)
{
MainLog.Instance.Verbose( "Userstorage: Attempting to load " + FileName);
Assembly pluginAssembly = Assembly.LoadFrom(FileName);
MainLog.Instance.Verbose( "Userstorage: Found " + pluginAssembly.GetTypes().Length + " interfaces.");
foreach (Type pluginType in pluginAssembly.GetTypes())
if (!String.IsNullOrEmpty(FileName))
{
if (!pluginType.IsAbstract)
MainLog.Instance.Verbose("Userstorage: Attempting to load " + FileName);
Assembly pluginAssembly = Assembly.LoadFrom(FileName);
MainLog.Instance.Verbose("Userstorage: Found " + pluginAssembly.GetTypes().Length + " interfaces.");
foreach (Type pluginType in pluginAssembly.GetTypes())
{
Type typeInterface = pluginType.GetInterface("IUserData", true);
if (typeInterface != null)
if (!pluginType.IsAbstract)
{
IUserData plug = (IUserData)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
plug.Initialise();
AddPlugin(plug);
}
Type typeInterface = pluginType.GetInterface("IUserData", true);
typeInterface = null;
if (typeInterface != null)
{
IUserData plug =
(IUserData) Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
AddPlugin(plug);
}
}
}
}
pluginAssembly = null;
}
private void AddPlugin(IUserData plug)
public void AddPlugin(IUserData plug)
{
plug.Initialise();
this._plugins.Add(plug.getName(), plug);
MainLog.Instance.Verbose( "Userstorage: Added IUserData Interface");
}

View File

@ -79,8 +79,8 @@ namespace OpenSim
private bool standaloneAuthenticate = false;
private string standaloneWelcomeMessage = null;
private string standaloneInventoryPlugin = "";
private string standaloneUserPlugin = "";
private string standaloneInventoryPlugin = "OpenSim.Framework.Data.SQLite.dll";
private string standaloneUserPlugin = "OpenSim.Framework.Data.DB4o.dll";
private string m_assetStorage = "db4o";

View File

@ -44,13 +44,13 @@ namespace OpenSim.Region.Communications.Local
public LocalUserServices UserServices;
public LocalLoginService LoginServices;
public LocalInventoryService InvenServices;
protected LocalSettings m_settings;
protected CommunicationsLocal(NetworkServersInfo serversInfo, BaseHttpServer httpServer, AssetCache assetCache )
protected CommunicationsLocal(NetworkServersInfo serversInfo, BaseHttpServer httpServer, AssetCache assetCache)
: base(serversInfo, httpServer, assetCache)
{
}
public CommunicationsLocal(NetworkServersInfo serversInfo, BaseHttpServer httpServer, AssetCache assetCache, LocalSettings settings)
@ -94,7 +94,7 @@ namespace OpenSim.Region.Communications.Local
if (cmmdParams.Length < 2)
{
firstName = MainLog.Instance.CmdPrompt("First name", "Default");
lastName = MainLog.Instance.CmdPrompt("Last name", "User");
password = MainLog.Instance.PasswdPrompt("Password");
@ -126,7 +126,7 @@ namespace OpenSim.Region.Communications.Local
{
return LLUUID.Zero;
}
else
else
{
this.InvenServices.CreateNewUserInventory(userProf.UUID);
Console.WriteLine("Created new inventory set for " + firstName + " " + lastName);
@ -136,23 +136,17 @@ namespace OpenSim.Region.Communications.Local
public class LocalSettings
{
public string WelcomeMessage = "";
public string WelcomeMessage;
public bool AccountAuthentication = false;
public string InventoryPlugin = "OpenSim.Framework.Data.SQLite.dll";
public string UserDatabasePlugin = "OpenSim.Framework.Data.DB4o.dll";
public string InventoryPlugin;
public string UserDatabasePlugin;
public LocalSettings(string welcomeMessage, bool accountsAuthenticate, string inventoryPlugin, string userPlugin)
{
WelcomeMessage = welcomeMessage;
AccountAuthentication = accountsAuthenticate;
if (inventoryPlugin != "")
{
InventoryPlugin = inventoryPlugin;
}
if (userPlugin != "")
{
UserDatabasePlugin = userPlugin;
}
InventoryPlugin = inventoryPlugin;
UserDatabasePlugin = userPlugin;
}
}