Skip to content

Commit

Permalink
MarimerLLC#966 Use extension methods to add elements to the root Csla…
Browse files Browse the repository at this point in the history
…Configuration type.
  • Loading branch information
rockfordlhotka committed Nov 6, 2018
1 parent 52d210c commit 1ef89b4
Show file tree
Hide file tree
Showing 5 changed files with 111 additions and 71 deletions.
40 changes: 8 additions & 32 deletions Source/Csla.Shared/Configuration/CslaConfiguration.cs
@@ -1,4 +1,11 @@
using Csla.Core;
//-----------------------------------------------------------------------
// <copyright file="CslaConfiguration.cs" company="Marimer LLC">
// Copyright (c) Marimer LLC. All rights reserved.
// Website: http://www.lhotka.net/cslanet/
// </copyright>
// <summary>Use this type to configure the settings for CSLA .NET</summary>
//-----------------------------------------------------------------------
using Csla.Core;
using System;
using System.Collections.Generic;
using System.Text;
Expand All @@ -10,17 +17,6 @@ namespace Csla.Configuration
/// </summary>
public class CslaConfiguration : ICslaConfiguration
{
/// <summary>
/// Creates a new instance of the type.
/// </summary>
public CslaConfiguration()
{
DataPortal = new CslaDataPortalConfiguration(this);
Data = new CslaDataConfiguration(this);
Security = new CslaSecurityConfiguration(this);
Serialization = new CslaSerializationConfiguration(this);
}

#if !NETSTANDARD2_0
/// <summary>
/// Sets the web context manager.
Expand All @@ -38,26 +34,6 @@ public CslaConfiguration WebContextManager(IContextManager contextManager)
}
#endif

/// <summary>
/// Gets a reference to the data portal configuration object.
/// </summary>
public CslaDataPortalConfiguration DataPortal { get; private set; }

/// <summary>
/// Gets a reference to the data configuration object.
/// </summary>
public CslaDataConfiguration Data { get; private set; }

/// <summary>
/// Gets a reference to the data configuration object.
/// </summary>
public CslaSecurityConfiguration Security { get; private set; }

/// <summary>
/// Gets a reference to the data configuration object.
/// </summary>
public CslaSerializationConfiguration Serialization { get; private set; }

/// <summary>
/// Sets a value indicating whether CSLA
/// should fallback to using reflection instead of
Expand Down
33 changes: 25 additions & 8 deletions Source/Csla.Shared/Configuration/CslaDataConfiguration.cs
@@ -1,18 +1,35 @@
using System;
using System.Collections.Generic;
using System.Text;

//-----------------------------------------------------------------------
// <copyright file="CslaDataConfiguration.cs" company="Marimer LLC">
// Copyright (c) Marimer LLC. All rights reserved.
// Website: http://www.lhotka.net/cslanet/
// </copyright>
// <summary>Use this type to configure the settings for CSLA .NET</summary>
//-----------------------------------------------------------------------
namespace Csla.Configuration
{
/// <summary>
/// Extension method for CslaDataConfiguration
/// </summary>
public static class CslaDataConfigurationExtension
{
/// <summary>
/// Extension method for CslaDataConfiguration
/// </summary>
public static CslaDataConfiguration Data(this ICslaConfiguration config)
{
return new CslaDataConfiguration(config);
}
}

/// <summary>
/// Use this type to configure the settings for the
/// CSLA .NET data portal.
/// </summary>
public class CslaDataConfiguration
{
private CslaConfiguration RootConfiguration { get; set; }
private ICslaConfiguration RootConfiguration { get; set; }

internal CslaDataConfiguration(CslaConfiguration root)
internal CslaDataConfiguration(ICslaConfiguration root)
{
RootConfiguration = root;
}
Expand All @@ -21,7 +38,7 @@ internal CslaDataConfiguration(CslaConfiguration root)
/// Sets the default transaction isolation level.
/// </summary>
/// <param name="level">The default transaction isolation level</param>
public CslaConfiguration DefaultTransactionIsolationLevel(TransactionIsolationLevel level)
public ICslaConfiguration DefaultTransactionIsolationLevel(TransactionIsolationLevel level)
{
ApplicationContext.DefaultTransactionIsolationLevel = level;
return RootConfiguration;
Expand All @@ -31,7 +48,7 @@ public CslaConfiguration DefaultTransactionIsolationLevel(TransactionIsolationLe
/// Sets the default transaction timeout in seconds.
/// </summary>
/// <param name="seconds">The default transaction timeout in seconds</param>
public CslaConfiguration DefaultTransactionTimeoutInSeconds(int seconds)
public ICslaConfiguration DefaultTransactionTimeoutInSeconds(int seconds)
{
ApplicationContext.DefaultTransactionTimeoutInSeconds = seconds;
return RootConfiguration;
Expand Down
50 changes: 35 additions & 15 deletions Source/Csla.Shared/Configuration/CslaDataPortalConfiguration.cs
@@ -1,18 +1,38 @@
using System;
//-----------------------------------------------------------------------
// <copyright file="CslaDataPortalConfiguration.cs" company="Marimer LLC">
// Copyright (c) Marimer LLC. All rights reserved.
// Website: http://www.lhotka.net/cslanet/
// </copyright>
// <summary>Use this type to configure the settings for CSLA .NET</summary>
//-----------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Text;

namespace Csla.Configuration
{
/// <summary>
/// Extension method for CslaDataPortalConfiguration
/// </summary>
public static class CslaDataPortalConfigurationExtension
{
/// <summary>
/// Extension method for CslaDataPortalConfiguration
/// </summary>
public static CslaDataPortalConfiguration DataPortal(this ICslaConfiguration config)
{
return new CslaDataPortalConfiguration(config);
}
}

/// <summary>
/// Use this type to configure the settings for the
/// CSLA .NET data portal.
/// </summary>
public class CslaDataPortalConfiguration
{
private CslaConfiguration RootConfiguration { get; set; }
private ICslaConfiguration RootConfiguration { get; set; }

internal CslaDataPortalConfiguration(CslaConfiguration root)
internal CslaDataPortalConfiguration(ICslaConfiguration root)
{
RootConfiguration = root;
}
Expand All @@ -23,7 +43,7 @@ internal CslaDataPortalConfiguration(CslaConfiguration root)
/// <param name="proxyTypeName">Default proxy type name</param>
/// <param name="defaultUrl">Default server URL</param>
/// <returns></returns>
public CslaConfiguration DefaultDataPortalProxy(string proxyTypeName, string defaultUrl)
public ICslaConfiguration DefaultDataPortalProxy(string proxyTypeName, string defaultUrl)
{
ApplicationContext.DataPortalProxy = proxyTypeName;
ApplicationContext.DataPortalUrlString = defaultUrl;
Expand All @@ -36,7 +56,7 @@ public CslaConfiguration DefaultDataPortalProxy(string proxyTypeName, string def
/// </summary>
/// <param name="descriptors">Data portal type/resource to proxy mapping</param>
/// <returns></returns>
public CslaConfiguration DataPortalProxyDescriptors(List<Tuple<string, string, string>> descriptors)
public ICslaConfiguration DataPortalProxyDescriptors(List<Tuple<string, string, string>> descriptors)
{
DataPortalClient.DataPortalProxyFactory.DataPortalTypeProxyDescriptors?.Clear();

Expand Down Expand Up @@ -72,7 +92,7 @@ public CslaConfiguration DataPortalProxyDescriptors(List<Tuple<string, string, s
/// the DataPortalProxy instance to use when
/// communicating with the data portal server.
/// </summary>
public CslaConfiguration DataPortalProxyFactory(string factoryTypeName)
public ICslaConfiguration DataPortalProxyFactory(string factoryTypeName)
{
ApplicationContext.DataPortalProxyFactory = factoryTypeName;
return RootConfiguration;
Expand All @@ -82,7 +102,7 @@ public CslaConfiguration DataPortalProxyFactory(string factoryTypeName)
/// Sets an instance of the IDataPortalActivator provider.
/// </summary>
/// <param name="activator">Instance of activator</param>
public CslaConfiguration DataPortalActivator(Csla.Server.IDataPortalActivator activator)
public ICslaConfiguration DataPortalActivator(Csla.Server.IDataPortalActivator activator)
{
ApplicationContext.DataPortalActivator = activator;
return RootConfiguration;
Expand All @@ -93,7 +113,7 @@ public CslaConfiguration DataPortalActivator(Csla.Server.IDataPortalActivator ac
/// CSLA .NET framework.
/// </summary>
/// <param name="type">Authentication type value (defaults to 'Csla')</param>
public CslaConfiguration AuthenticationType(string type)
public ICslaConfiguration AuthenticationType(string type)
{
ApplicationContext.AuthenticationType = type;
return RootConfiguration;
Expand All @@ -104,7 +124,7 @@ public CslaConfiguration AuthenticationType(string type)
/// authorization. Type must implement IAuthorizeDataPortal.
/// </summary>
/// <param name="typeName">Assembly qualified type name</param>
public CslaConfiguration ServerAuthorizationProvider(string typeName)
public ICslaConfiguration ServerAuthorizationProvider(string typeName)
{
ConfigurationManager.AppSettings["CslaAuthorizationProvider"] = typeName;
return RootConfiguration;
Expand All @@ -117,7 +137,7 @@ public CslaConfiguration ServerAuthorizationProvider(string typeName)
/// IInterceptDataPortal.
/// </summary>
/// <param name="typeName">Assembly qualified type name</param>
public CslaConfiguration InterceptorType(string typeName)
public ICslaConfiguration InterceptorType(string typeName)
{
ConfigurationManager.AppSettings["CslaDataPortalInterceptor"] = typeName;
return RootConfiguration;
Expand All @@ -128,7 +148,7 @@ public CslaConfiguration InterceptorType(string typeName)
/// Type must implement IDataPortalExceptionInspector.
/// </summary>
/// <param name="typeName">Assembly qualified type name</param>
public CslaConfiguration ExceptionInspectorType(string typeName)
public ICslaConfiguration ExceptionInspectorType(string typeName)
{
Csla.Server.DataPortalExceptionHandler.ExceptionInspector = typeName;
return RootConfiguration;
Expand All @@ -141,7 +161,7 @@ public CslaConfiguration ExceptionInspectorType(string typeName)
/// IObjectFactoryLoader.
/// </summary>
/// <param name="typeName">Assembly qualified type name</param>
public CslaConfiguration FactoryLoaderType(string typeName)
public ICslaConfiguration FactoryLoaderType(string typeName)
{
ConfigurationManager.AppSettings["CslaObjectFactoryLoader"] = typeName;
return RootConfiguration;
Expand All @@ -153,7 +173,7 @@ public CslaConfiguration FactoryLoaderType(string typeName)
/// method when using a local data portal configuration.
/// </summary>
/// <param name="value">Value (defaults to true)</param>
public CslaConfiguration AutoCloneOnUpdate(bool value)
public ICslaConfiguration AutoCloneOnUpdate(bool value)
{
ConfigurationManager.AppSettings["CslaAutoCloneOnUpdate"] = value.ToString();
return RootConfiguration;
Expand All @@ -165,7 +185,7 @@ public CslaConfiguration AutoCloneOnUpdate(bool value)
/// the client as part of the DataPortalException.
/// </summary>
/// <param name="value">Value (default is false)</param>
public CslaConfiguration DataPortalReturnObjectOnException(bool value)
public ICslaConfiguration DataPortalReturnObjectOnException(bool value)
{
ApplicationContext.DataPortalReturnObjectOnException = value;
return RootConfiguration;
Expand Down
24 changes: 17 additions & 7 deletions Source/Csla.Shared/Configuration/CslaSecurityConfiguration.cs
Expand Up @@ -5,20 +5,30 @@
// </copyright>
// <summary>Use this type to configure the settings for security</summary>
//-----------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Text;

namespace Csla.Configuration
{
/// <summary>
/// Extension method for CslaSecurityConfiguration
/// </summary>
public static class CslaSecurityConfigurationExtension
{
/// <summary>
/// Extension method for CslaSecurityConfiguration
/// </summary>
public static CslaSecurityConfiguration Security(this ICslaConfiguration config)
{
return new CslaSecurityConfiguration(config);
}
}

/// <summary>
/// Use this type to configure the settings for security.
/// </summary>
public class CslaSecurityConfiguration
{
private CslaConfiguration RootConfiguration { get; set; }
private ICslaConfiguration RootConfiguration { get; set; }

internal CslaSecurityConfiguration(CslaConfiguration root)
internal CslaSecurityConfiguration(ICslaConfiguration root)
{
RootConfiguration = root;
}
Expand All @@ -27,7 +37,7 @@ internal CslaSecurityConfiguration(CslaConfiguration root)
/// Sets the max size of the PrincipalCache cache.
/// </summary>
/// <param name="size">Max cache size</param>
public CslaConfiguration PrincipalCacheMaxCacheSize(int size)
public ICslaConfiguration PrincipalCacheMaxCacheSize(int size)
{
Security.PrincipalCache.MaxCacheSize = size;
return RootConfiguration;
Expand Down
35 changes: 26 additions & 9 deletions Source/Csla.Shared/Configuration/CslaSerializationConfiguration.cs
@@ -1,17 +1,34 @@
using System;
using System.Collections.Generic;
using System.Text;

//-----------------------------------------------------------------------
// <copyright file="CslaSerializationConfiguration.cs" company="Marimer LLC">
// Copyright (c) Marimer LLC. All rights reserved.
// Website: http://www.lhotka.net/cslanet/
// </copyright>
// <summary>Use this type to configure the settings</summary>
//-----------------------------------------------------------------------
namespace Csla.Configuration
{
/// <summary>
/// Extension method for CslaSerializationConfiguration
/// </summary>
public static class CslaSerializationConfigurationExtension
{
/// <summary>
/// Extension method for CslaSerializationConfiguration
/// </summary>
public static CslaSerializationConfiguration Serialization(this ICslaConfiguration config)
{
return new CslaSerializationConfiguration(config);
}
}

/// <summary>
/// Use this type to configure the settings for serialization.
/// </summary>
public class CslaSerializationConfiguration
{
private CslaConfiguration RootConfiguration { get; set; }
private ICslaConfiguration RootConfiguration { get; set; }

internal CslaSerializationConfiguration(CslaConfiguration root)
internal CslaSerializationConfiguration(ICslaConfiguration root)
{
RootConfiguration = root;
}
Expand All @@ -23,7 +40,7 @@ internal CslaSerializationConfiguration(CslaConfiguration root)
/// </summary>
/// <param name="formatterName">Formatter name (one of MobileFormatter,
/// BinaryFormatter, NetDataContractSerializer, or type name)</param>
public CslaConfiguration SerializationFormatter(string formatterName)
public ICslaConfiguration SerializationFormatter(string formatterName)
{
ConfigurationManager.AppSettings["CslaSerializationFormatter"] = formatterName;
return RootConfiguration;
Expand All @@ -34,7 +51,7 @@ public CslaConfiguration SerializationFormatter(string formatterName)
/// serialization stream in MobileFormatter.
/// </summary>
/// <param name="typeName">Assembly qualified type name</param>
public CslaConfiguration MobileWriter(string typeName)
public ICslaConfiguration MobileWriter(string typeName)
{
ConfigurationManager.AppSettings["CslaWriter"] = typeName;
return RootConfiguration;
Expand All @@ -45,7 +62,7 @@ public CslaConfiguration MobileWriter(string typeName)
/// serialization stream in MobileFormatter.
/// </summary>
/// <param name="typeName">Assembly qualified type name</param>
public CslaConfiguration MobileReader(string typeName)
public ICslaConfiguration MobileReader(string typeName)
{
ConfigurationManager.AppSettings["CslaReader"] = typeName;
return RootConfiguration;
Expand Down

0 comments on commit 1ef89b4

Please sign in to comment.