From 8b9f8be512ac47a52e5b7df1a5f3d150c92eda39 Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Tue, 5 May 2009 05:35:22 +0000 Subject: Some refactoring. Database is now active in the new user server --- .../User/LocalUserServiceConnector.cs | 85 ++++++++++++++++++++++ .../User/LocalUserServicesConnector.cs | 85 ---------------------- OpenSim/Servers/User/UserServerConnector.cs | 4 +- OpenSim/Services/Interfaces/IUserService.cs | 6 ++ OpenSim/Services/Interfaces/IUserServices.cs | 6 -- OpenSim/Services/UserService/UserService.cs | 8 +- OpenSim/Services/UserService/UserServiceBase.cs | 85 ++++++++++++++++++++++ 7 files changed, 182 insertions(+), 97 deletions(-) create mode 100644 OpenSim/Region/CoreModules/ServiceConnectors/User/LocalUserServiceConnector.cs delete mode 100644 OpenSim/Region/CoreModules/ServiceConnectors/User/LocalUserServicesConnector.cs create mode 100644 OpenSim/Services/Interfaces/IUserService.cs delete mode 100644 OpenSim/Services/Interfaces/IUserServices.cs create mode 100644 OpenSim/Services/UserService/UserServiceBase.cs diff --git a/OpenSim/Region/CoreModules/ServiceConnectors/User/LocalUserServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectors/User/LocalUserServiceConnector.cs new file mode 100644 index 0000000..70d440d --- /dev/null +++ b/OpenSim/Region/CoreModules/ServiceConnectors/User/LocalUserServiceConnector.cs @@ -0,0 +1,85 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSim Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using Nini.Config; +using OpenSim.Region.Framework.Interfaces; +using OpenSim.Region.Framework.Scenes; +using OpenSim.Services.Interfaces; +using OpenSim.Services.UserService; + +namespace OpenSim.Region.CoreModules.ServiceConnectors.User +{ + public class LocalUserServicesConnector : INonSharedRegionModule + { + private IUserService m_UserService; + + private bool m_Enabled = false; + + public string Name + { + get { return "LocalUserServicesConnector"; } + } + + public void Initialise(IConfigSource source) + { + IConfig moduleConfig = source.Configs["Modules"]; + if (moduleConfig != null) + { + string name = moduleConfig.GetString("UserServices", ""); + if (name == Name) + { + m_Enabled = true; + m_UserService = new UserService(source); + } + } + } + + public void Close() + { + if (!m_Enabled) + return; + } + + public void AddRegion(Scene scene) + { + if (!m_Enabled) + return; + } + + public void RemoveRegion(Scene scene) + { + if (!m_Enabled) + return; + } + + public void RegionLoaded(Scene scene) + { + if (!m_Enabled) + return; + } + } +} diff --git a/OpenSim/Region/CoreModules/ServiceConnectors/User/LocalUserServicesConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectors/User/LocalUserServicesConnector.cs deleted file mode 100644 index 38f32ed..0000000 --- a/OpenSim/Region/CoreModules/ServiceConnectors/User/LocalUserServicesConnector.cs +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSim Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using Nini.Config; -using OpenSim.Region.Framework.Interfaces; -using OpenSim.Region.Framework.Scenes; -using OpenSim.Services.Interfaces; -using OpenSim.Services.UserService; - -namespace OpenSim.Region.CoreModules.ServiceConnectors.User -{ - public class LocalUserServicesConnector : INonSharedRegionModule - { - private IUserServices m_UserServices; - - private bool m_Enabled = false; - - public string Name - { - get { return "LocalUserServicesConnector"; } - } - - public void Initialise(IConfigSource source) - { - IConfig moduleConfig = source.Configs["Modules"]; - if (moduleConfig != null) - { - string name = moduleConfig.GetString("UserServices", ""); - if (name == Name) - { - m_Enabled = true; - m_UserServices = new UserService(source); - } - } - } - - public void Close() - { - if (!m_Enabled) - return; - } - - public void AddRegion(Scene scene) - { - if (!m_Enabled) - return; - } - - public void RemoveRegion(Scene scene) - { - if (!m_Enabled) - return; - } - - public void RegionLoaded(Scene scene) - { - if (!m_Enabled) - return; - } - } -} diff --git a/OpenSim/Servers/User/UserServerConnector.cs b/OpenSim/Servers/User/UserServerConnector.cs index b86fdb7..c20cc31 100644 --- a/OpenSim/Servers/User/UserServerConnector.cs +++ b/OpenSim/Servers/User/UserServerConnector.cs @@ -34,11 +34,11 @@ namespace OpenSim.Servers.UserServer { public class UserServiceConnector { - private IUserServices m_UserServices; + private IUserService m_UserService; public UserServiceConnector(IConfigSource config, IHttpServer server) { - m_UserServices = new UserService(config); + m_UserService = new UserService(config); } } } diff --git a/OpenSim/Services/Interfaces/IUserService.cs b/OpenSim/Services/Interfaces/IUserService.cs new file mode 100644 index 0000000..0e8191f --- /dev/null +++ b/OpenSim/Services/Interfaces/IUserService.cs @@ -0,0 +1,6 @@ +namespace OpenSim.Services.Interfaces +{ + public interface IUserService + { + } +} diff --git a/OpenSim/Services/Interfaces/IUserServices.cs b/OpenSim/Services/Interfaces/IUserServices.cs deleted file mode 100644 index 9eccc3c..0000000 --- a/OpenSim/Services/Interfaces/IUserServices.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace OpenSim.Services.Interfaces -{ - public interface IUserServices - { - } -} diff --git a/OpenSim/Services/UserService/UserService.cs b/OpenSim/Services/UserService/UserService.cs index 1e29fc9..6948606 100644 --- a/OpenSim/Services/UserService/UserService.cs +++ b/OpenSim/Services/UserService/UserService.cs @@ -25,17 +25,17 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +using System; +using System.Reflection; using Nini.Config; using OpenSim.Data; using OpenSim.Services.Interfaces; namespace OpenSim.Services.UserService { - public class UserService : IUserServices + public class UserService : UserServiceBase, IUserService { - private UserDataBase m_DataBase = null; - - public UserService(IConfigSource config) + public UserService(IConfigSource config) : base(config) { } } diff --git a/OpenSim/Services/UserService/UserServiceBase.cs b/OpenSim/Services/UserService/UserServiceBase.cs new file mode 100644 index 0000000..6a20670 --- /dev/null +++ b/OpenSim/Services/UserService/UserServiceBase.cs @@ -0,0 +1,85 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSim Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Reflection; +using Nini.Config; +using OpenSim.Data; +using OpenSim.Services.Interfaces; + +namespace OpenSim.Services.UserService +{ + public class UserServiceBase + { + protected IUserDataPlugin m_Database = null; + + public UserServiceBase(IConfigSource config) + { + IConfig userConfig = config.Configs["UserService"]; + if (userConfig == null) + throw new Exception("No userService configuration"); + + string dllName = userConfig.GetString("StorageProvider", + String.Empty); + + if (dllName == String.Empty) + throw new Exception("No StorageProvider configured"); + + string connString = userConfig.GetString("ConnectionString", + String.Empty); + + try + { + Assembly pluginAssembly = Assembly.LoadFrom(dllName); + + foreach (Type pluginType in pluginAssembly.GetTypes()) + { + if (pluginType.IsPublic) + { + Type typeInterface = + pluginType.GetInterface("IUserDataPlugin", true); + if (typeInterface != null) + { + IUserDataPlugin plug = + (IUserDataPlugin)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString())); + plug.Initialise(connString); + + m_Database = plug; + } + } + } + + if (m_Database == null) + throw new Exception("Could not find a storage interface in the given module"); + } + catch (Exception e) + { + throw new Exception("Can't open database module: "+e.Message); + } + } + } +} -- cgit v1.1