From 6887890c70a891d7d4e96f4a9deec91e3ba8e88a Mon Sep 17 00:00:00 2001 From: sergio moreno Date: Tue, 26 Mar 2013 18:23:39 +0100 Subject: [PATCH 1/2] Removed IL method creation, now uses interceptor Update to VS2012 Removed spring "IL" builders Introduced dependency in Spring.Aop, now used method interceptor to call execute in ProxyChannel Update to use nuget (with restore) --- .gitignore | 163 + .../src/WCFChannelManager/.nuget/NuGet.Config | 6 + .../src/WCFChannelManager/.nuget/NuGet.exe | Bin 0 -> 651264 bytes .../WCFChannelManager/.nuget/NuGet.targets | 153 + .../WCFChannelManager/WCFChannelManager.sln | 59 +- .../ChannelManagerFactoryObject.cs | 511 +- .../WCFChannelManager/ProxyChannel.cs | 264 +- .../WCFChannelManager.csproj | 173 +- .../WCFChannelManager/WcfInterceptor.cs | 55 + .../WCFChannelManager/packages.config | 6 + .../WCFChannelManagerTests.csproj | 203 +- .../WCFChannelManagerTests/packages.config | 8 + sharedlib/Rhino Mocks/Rhino.Mocks.dll | Bin 292352 -> 0 bytes sharedlib/Rhino Mocks/Rhino.Mocks.xml | 5226 -- sharedlib/Rhino Mocks/acknowledgements.txt | 2 - sharedlib/Rhino Mocks/license.txt | 25 - sharedlib/Spring.Net/Common.Logging.dll | Bin 28672 -> 0 bytes sharedlib/Spring.Net/Spring.Core.dll | Bin 643072 -> 0 bytes sharedlib/Spring.Net/Spring.Core.pdb | Bin 2149888 -> 0 bytes sharedlib/Spring.Net/Spring.Core.xml | 44391 ---------------- sharedlib/Spring.Net/antlr.runtime.dll | Bin 106496 -> 0 bytes sharedlib/Spring.Net/license.txt | 201 - 22 files changed, 1034 insertions(+), 50412 deletions(-) create mode 100644 .gitignore create mode 100644 WCFChannelManager/src/WCFChannelManager/.nuget/NuGet.Config create mode 100644 WCFChannelManager/src/WCFChannelManager/.nuget/NuGet.exe create mode 100644 WCFChannelManager/src/WCFChannelManager/.nuget/NuGet.targets create mode 100644 WCFChannelManager/src/WCFChannelManager/WCFChannelManager/WcfInterceptor.cs create mode 100644 WCFChannelManager/src/WCFChannelManager/WCFChannelManager/packages.config create mode 100644 WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/packages.config delete mode 100644 sharedlib/Rhino Mocks/Rhino.Mocks.dll delete mode 100644 sharedlib/Rhino Mocks/Rhino.Mocks.xml delete mode 100644 sharedlib/Rhino Mocks/acknowledgements.txt delete mode 100644 sharedlib/Rhino Mocks/license.txt delete mode 100644 sharedlib/Spring.Net/Common.Logging.dll delete mode 100644 sharedlib/Spring.Net/Spring.Core.dll delete mode 100644 sharedlib/Spring.Net/Spring.Core.pdb delete mode 100644 sharedlib/Spring.Net/Spring.Core.xml delete mode 100644 sharedlib/Spring.Net/antlr.runtime.dll delete mode 100644 sharedlib/Spring.Net/license.txt diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5ebd21a --- /dev/null +++ b/.gitignore @@ -0,0 +1,163 @@ +################# +## Eclipse +################# + +*.pydevproject +.project +.metadata +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib +local.properties +.classpath +.settings/ +.loadpath + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# CDT-specific +.cproject + +# PDT-specific +.buildpath + + +################# +## Visual Studio +################# + +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.sln.docstates + +# Build results +[Dd]ebug/ +[Rr]elease/ +*_i.c +*_p.c +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.vspscc +.builds +*.dotCover + +## TODO: If you have NuGet Package Restore enabled, uncomment this +#packages/ + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opensdf +*.sdf + +# Visual Studio profiler +*.psess +*.vsp + +# ReSharper is a .NET coding add-in +_ReSharper* + +# Installshield output folder +[Ee]xpress + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish + +# Others +[Bb]in +[Oo]bj +sql +TestResults +*.Cache +ClientBin +stylecop.* +~$* +*.dbmdl +Generated_Code #added for RIA/Silverlight projects + +# Backup & report files from converting an old project file to a newer +# Visual Studio version. Backup files are not needed, because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML + + + +############ +## Windows +############ + +# Windows image file caches +Thumbs.db + +# Folder config file +Desktop.ini + + +############# +## Python +############# + +*.py[co] + +# Packages +*.egg +*.egg-info +dist +build +eggs +parts +bin +var +sdist +develop-eggs +.installed.cfg + +# Installer logs +pip-log.txt + +# Unit test / coverage reports +.coverage +.tox + +#Translations +*.mo + +#Mr Developer +.mr.developer.cfg + +# Mac crap +.DS_Store diff --git a/WCFChannelManager/src/WCFChannelManager/.nuget/NuGet.Config b/WCFChannelManager/src/WCFChannelManager/.nuget/NuGet.Config new file mode 100644 index 0000000..67f8ea0 --- /dev/null +++ b/WCFChannelManager/src/WCFChannelManager/.nuget/NuGet.Config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/WCFChannelManager/src/WCFChannelManager/.nuget/NuGet.exe b/WCFChannelManager/src/WCFChannelManager/.nuget/NuGet.exe new file mode 100644 index 0000000000000000000000000000000000000000..4645f4b35e8ebd8508fe5691df73ce88a4a8028a GIT binary patch literal 651264 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 z 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ℜ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 z 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 QyoYM=KXd8-r!V#Y0 + + + $(MSBuildProjectDirectory)\..\ + + + false + + + false + + + true + + + false + + + + + + + + + + + $([System.IO.Path]::Combine($(SolutionDir), ".nuget")) + $([System.IO.Path]::Combine($(ProjectDir), "packages.config")) + $([System.IO.Path]::Combine($(SolutionDir), "packages")) + + + + + $(SolutionDir).nuget + packages.config + $(SolutionDir)packages + + + + + $(NuGetToolsPath)\nuget.exe + @(PackageSource) + + "$(NuGetExePath)" + mono --runtime=v4.0.30319 $(NuGetExePath) + + $(TargetDir.Trim('\\')) + + -RequireConsent + + $(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" $(RequireConsentSwitch) -o "$(PackagesDir)" + $(NuGetCommand) pack "$(ProjectPath)" -p Configuration=$(Configuration) -o "$(PackageOutputDir)" -symbols + + + + RestorePackages; + $(BuildDependsOn); + + + + + $(BuildDependsOn); + BuildPackage; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager.sln b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager.sln index 5f0c26f..0e79d10 100644 --- a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager.sln +++ b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager.sln @@ -1,26 +1,33 @@ - -Microsoft Visual Studio Solution File, Format Version 10.00 -# Visual Studio 2008 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WCFChannelManager", "WCFChannelManager\WCFChannelManager.csproj", "{E94EB6C3-E81F-4C5C-BEDE-B4CC79D0E938}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WCFChannelManagerTests", "WCFChannelManagerTests\WCFChannelManagerTests.csproj", "{092C9457-CC27-4AB3-9CB2-7488CB9AB267}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {E94EB6C3-E81F-4C5C-BEDE-B4CC79D0E938}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E94EB6C3-E81F-4C5C-BEDE-B4CC79D0E938}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E94EB6C3-E81F-4C5C-BEDE-B4CC79D0E938}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E94EB6C3-E81F-4C5C-BEDE-B4CC79D0E938}.Release|Any CPU.Build.0 = Release|Any CPU - {092C9457-CC27-4AB3-9CB2-7488CB9AB267}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {092C9457-CC27-4AB3-9CB2-7488CB9AB267}.Debug|Any CPU.Build.0 = Debug|Any CPU - {092C9457-CC27-4AB3-9CB2-7488CB9AB267}.Release|Any CPU.ActiveCfg = Release|Any CPU - {092C9457-CC27-4AB3-9CB2-7488CB9AB267}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WCFChannelManager", "WCFChannelManager\WCFChannelManager.csproj", "{E94EB6C3-E81F-4C5C-BEDE-B4CC79D0E938}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WCFChannelManagerTests", "WCFChannelManagerTests\WCFChannelManagerTests.csproj", "{092C9457-CC27-4AB3-9CB2-7488CB9AB267}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{44B9D521-3687-4829-BDB8-369E920F8170}" + ProjectSection(SolutionItems) = preProject + .nuget\NuGet.Config = .nuget\NuGet.Config + .nuget\NuGet.exe = .nuget\NuGet.exe + .nuget\NuGet.targets = .nuget\NuGet.targets + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {E94EB6C3-E81F-4C5C-BEDE-B4CC79D0E938}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E94EB6C3-E81F-4C5C-BEDE-B4CC79D0E938}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E94EB6C3-E81F-4C5C-BEDE-B4CC79D0E938}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E94EB6C3-E81F-4C5C-BEDE-B4CC79D0E938}.Release|Any CPU.Build.0 = Release|Any CPU + {092C9457-CC27-4AB3-9CB2-7488CB9AB267}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {092C9457-CC27-4AB3-9CB2-7488CB9AB267}.Debug|Any CPU.Build.0 = Debug|Any CPU + {092C9457-CC27-4AB3-9CB2-7488CB9AB267}.Release|Any CPU.ActiveCfg = Release|Any CPU + {092C9457-CC27-4AB3-9CB2-7488CB9AB267}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/ChannelManagerFactoryObject.cs b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/ChannelManagerFactoryObject.cs index a0ef8ce..7cd6528 100644 --- a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/ChannelManagerFactoryObject.cs +++ b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/ChannelManagerFactoryObject.cs @@ -1,237 +1,274 @@ -//Copyright 2009 Benny Michielsen - -//Licensed under the Apache License, Version 2.0 (the "License"); -//you may not use this file except in compliance with the License. -//You may obtain a copy of the License at - -// http://www.apache.org/licenses/LICENSE-2.0 - -//Unless required by applicable law or agreed to in writing, software -//distributed under the License is distributed on an "AS IS" BASIS, -//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -//See the License for the specific language governing permissions and -//limitations under the License. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using Spring.Objects.Factory.Config; -using Spring.Util; -using Spring.Proxy; -using System.Reflection; -using Spring.Objects.Factory.Support; -using Spring.Objects.Factory; - -namespace WCFChannelManager -{ - ///

- /// ChannelManagerFactoryObjects dynamically subclasses ChannelActionWrappers and implements the channel interface - /// - public class ChannelManagerFactoryObject - : IConfigurableFactoryObject, IInitializingObject - { - protected ConstructorInfo proxyConstructor; - - public const string SingleAction = "SingleAction"; - public const string FixedPool = "FixedPool"; - public const string VariablePool = "VariablePool"; - public const string ChannelManagerPropertyName = "ChannelManager"; - - #region IConfigurableFactoryObject Members - - /// - /// Get or set the template used to configure the proxy. - /// - public IObjectDefinition ProductTemplate - { - get; - set; - } - - #endregion - - #region IFactoryObject Members - /// - /// Creates a new instance of the channelmanager. - /// - /// New instance of the channelmanager - public object GetObject() - { - if (proxyConstructor == null) - { - GenerateProxy(); - } - object channelProxy = ObjectUtils.InstantiateType(proxyConstructor, ObjectUtils.EmptyObjects); - SetDefaultValues(channelProxy); - return channelProxy; - } - - /// - /// - /// - /// - private void SetDefaultValues(object channelProxy) - { - if (ProductTemplate == null || !ProductTemplate.PropertyValues.Contains(ChannelManagerPropertyName)) - { - Type channelManagerType = null; - Type channelType = WcfChannelProxyTypeBuilder.FindChannelType(channelProxy.GetType()); - List contructorArgumentTypes = new List(); - contructorArgumentTypes.Add(typeof(string)); - List constructorArguments = new List(); - constructorArguments.Add(EndpointConfigurationName); - if (string.IsNullOrEmpty(ChannelManagementMode) || ChannelManagementMode.Equals(SingleAction)) - { - channelManagerType = typeof(SingleActionChannelManager<>).MakeGenericType(channelType); - - } - else - { - channelManagerType = typeof(ChannelPoolManager<>).MakeGenericType(channelType); - contructorArgumentTypes.Add(typeof(IPoolFactory)); - if (ChannelManagementMode.Equals(FixedPool)) - { - constructorArguments.Add(new SimplePoolFactory()); - } - else - { - constructorArguments.Add(new AutoSizePoolFactory()); - } - } - ConstructorInfo managerConstructor = channelManagerType.GetConstructor(contructorArgumentTypes.ToArray()); - object channelManager = ObjectUtils.InstantiateType(managerConstructor, constructorArguments.ToArray()); - PropertyInfo property = channelProxy.GetType().GetProperty(ChannelManagerPropertyName); - property.SetValue(channelProxy, channelManager, null); - } - } - - /// - /// Is the factory a singleton. - /// - public bool IsSingleton - { - get; - set; - } - - /// - /// Returns the type of the channelmanager. - /// - public Type ObjectType - { - get - { - return (proxyConstructor != null ? proxyConstructor.DeclaringType : ChannelActionWrapperType); - } - - } - - #endregion - /// - /// The type used for subclassing, default is ProxyChannel. - /// - public virtual Type ChannelActionWrapperType - { - get; - set; - } - /// - /// The channel interface to implement. - /// - public virtual Type ChannelType - { - get; - set; - } - /// - /// The mode on how the channel is managed. Default is "SingleAction". - /// - public virtual string ChannelManagementMode - { - get; - set; - } - /// - /// The name of the endpoint in system.servicemodel section. - /// - public virtual string EndpointConfigurationName - { - get; - set; - } - - /// - /// Returns the type of the channelactionwrapper to use. - /// - /// The channel type. - protected Type BuildChannelActionWrapperType() - { - Type baseClass = null; - if (ChannelActionWrapperType == null) - { - baseClass = typeof(ProxyChannel<>).MakeGenericType(ChannelType); - } - else if (ChannelActionWrapperType.IsGenericType) - { - baseClass = ChannelActionWrapperType.MakeGenericType(ChannelType); - } - else - { - baseClass = ChannelActionWrapperType; - } - return baseClass; - } - - /// - /// Returns the channel type. - /// - /// The channelActionWrapperType being used. - /// The channel type. - protected virtual Type BuildChannelType(Type channelActionWrapperType) - { - Type channelType = null; - if (ChannelType != null) - { - channelType = ChannelType; - } - else - { - channelType = WcfChannelProxyTypeBuilder.FindChannelType(channelActionWrapperType); - } - return channelType; - } - - /// - /// Generates a subclass of the specified ChannelActionWrapperType and the ChannelType. - /// - protected virtual void GenerateProxy() - { - Type baseClass = BuildChannelActionWrapperType(); - IProxyTypeBuilder builder = new WcfChannelProxyTypeBuilder(baseClass); - Type wrapper = builder.BuildProxyType(); - proxyConstructor = wrapper.GetConstructor(Type.EmptyTypes); - } - - - - #region IInitializingObject Members - /// - /// Validates the configuration. - /// - public virtual void AfterPropertiesSet() - { - if ((ChannelType == null && ChannelActionWrapperType == null) || - (ChannelType == null && ChannelActionWrapperType != null && WcfChannelProxyTypeBuilder.FindChannelType(ChannelActionWrapperType).IsGenericParameter)) - { - throw new ArgumentException("No channeltype supplied."); - } - if (string.IsNullOrEmpty(EndpointConfigurationName)) - { - throw new ArgumentException("No endpoint supplied."); - } - } - - #endregion - } -} +//Copyright 2009 Sergio Moreno Calzada + +//Licensed under the Apache License, Version 2.0 (the "License"); +//you may not use this file except in compliance with the License. +//You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +//Unless required by applicable law or agreed to in writing, software +//distributed under the License is distributed on an "AS IS" BASIS, +//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +//See the License for the specific language governing permissions and +//limitations under the License. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Spring.Objects.Factory.Config; +using Spring.Util; +using Spring.Proxy; +using System.Reflection; +using Spring.Objects.Factory.Support; +using Spring.Objects.Factory; + +namespace WCFChannelManager +{ + using AopAlliance.Aop; + + using Spring.Aop.Framework; + + /// + /// ChannelManagerFactoryObjects dynamically subclasses ChannelActionWrappers and implements the channel interface + /// + public class ChannelManagerFactoryObject + : IConfigurableFactoryObject, IInitializingObject + { + protected ConstructorInfo proxyConstructor; + protected ConstructorInfo interceptorConstructor; + + public const string SingleAction = "SingleAction"; + public const string FixedPool = "FixedPool"; + public const string VariablePool = "VariablePool"; + public const string ChannelManagerPropertyName = "ChannelManager"; + + #region IConfigurableFactoryObject Members + + /// + /// Get or set the template used to configure the proxy. + /// + public IObjectDefinition ProductTemplate + { + get; + set; + } + + #endregion + + #region IFactoryObject Members + /// + /// Creates a new instance of the channelmanager. + /// + /// New instance of the channelmanager + public object GetObject() + { + if (proxyConstructor == null || interceptorConstructor == null) + { + GenerateProxy(); + } + object channelProxy = ObjectUtils.InstantiateType(proxyConstructor, ObjectUtils.EmptyObjects); + object interceptorProxy = ObjectUtils.InstantiateType(interceptorConstructor, ObjectUtils.EmptyObjects); + + + + + AdvisedSupport advisedSupport = new AdvisedSupport(new Type[] { ChannelType }); + advisedSupport.AddAdvice((IAdvice)interceptorProxy); + advisedSupport.Target = channelProxy; + advisedSupport.ProxyTargetType = true; + + var proxy = advisedSupport.AopProxyFactory.CreateAopProxy(advisedSupport); + + SetDefaultValues(channelProxy); + + return proxy; + } + + /// + /// + /// + /// + private void SetDefaultValues(object channelProxy) + { + if (ProductTemplate == null || !ProductTemplate.PropertyValues.Contains(ChannelManagerPropertyName)) + { + Type channelManagerType = null; + Type channelType = FindChannelType(channelProxy.GetType()); + List contructorArgumentTypes = new List(); + contructorArgumentTypes.Add(typeof(string)); + List constructorArguments = new List(); + constructorArguments.Add(EndpointConfigurationName); + if (string.IsNullOrEmpty(ChannelManagementMode) || ChannelManagementMode.Equals(SingleAction)) + { + channelManagerType = typeof(SingleActionChannelManager<>).MakeGenericType(channelType); + + } + else + { + channelManagerType = typeof(ChannelPoolManager<>).MakeGenericType(channelType); + contructorArgumentTypes.Add(typeof(IPoolFactory)); + if (ChannelManagementMode.Equals(FixedPool)) + { + constructorArguments.Add(new SimplePoolFactory()); + } + else + { + constructorArguments.Add(new AutoSizePoolFactory()); + } + } + ConstructorInfo managerConstructor = channelManagerType.GetConstructor(contructorArgumentTypes.ToArray()); + object channelManager = ObjectUtils.InstantiateType(managerConstructor, constructorArguments.ToArray()); + PropertyInfo property = channelProxy.GetType().GetProperty(ChannelManagerPropertyName); + property.SetValue(channelProxy, channelManager, null); + } + } + + /// + /// Is the factory a singleton. + /// + public bool IsSingleton + { + get; + set; + } + + /// + /// Returns the type of the channelmanager. + /// + public Type ObjectType + { + get + { + return (proxyConstructor != null ? proxyConstructor.DeclaringType : ChannelActionWrapperType); + } + + } + + #endregion + /// + /// The type used for subclassing, default is ProxyChannel. + /// + public virtual Type ChannelActionWrapperType + { + get; + set; + } + /// + /// The channel interface to implement. + /// + public virtual Type ChannelType + { + get; + set; + } + /// + /// The mode on how the channel is managed. Default is "SingleAction". + /// + public virtual string ChannelManagementMode + { + get; + set; + } + /// + /// The name of the endpoint in system.servicemodel section. + /// + public virtual string EndpointConfigurationName + { + get; + set; + } + + /// + /// Returns the type of the channelactionwrapper to use. + /// + /// The channel type. + protected Type BuildChannelActionWrapperType() + { + Type baseClass = typeof(ProxyChannel<>).MakeGenericType(ChannelType); + return baseClass; + } + + /// + /// Returns the type of the Interceptor to use. + /// + /// The channel type. + protected Type BuildInterceptorWrapperType() + { + Type baseClass = typeof(WcfInterceptor<>).MakeGenericType(ChannelType); + return baseClass; + } + + + /// + /// Returns the channel type. + /// + /// The channelActionWrapperType being used. + /// The channel type. + protected virtual Type BuildChannelType(Type channelActionWrapperType) + { + Type channelType = null; + if (ChannelType != null) + { + channelType = ChannelType; + } + else + { + channelType = FindChannelType(channelActionWrapperType); + } + return channelType; + } + + /// + /// Generates a subclass of the specified ChannelActionWrapperType and the ChannelType. + /// + protected virtual void GenerateProxy() + { + Type proxyType = BuildChannelActionWrapperType(); + proxyConstructor = proxyType.GetConstructor(Type.EmptyTypes); + + Type interceptorType = this.BuildInterceptorWrapperType(); + interceptorConstructor = interceptorType.GetConstructor(Type.EmptyTypes); + } + + /// + /// Finds the channeltype from a ChannelActionWrapperType. + /// + /// The ChannelManagerType. + /// Returns the channaltype if found, otherwise null. + protected virtual Type FindChannelType(Type channelManagerType) + { + Type t = channelManagerType; + Type channelType = null; + while (t != typeof(object) && channelType == null) + { + var cur = t.IsGenericType ? t.GetGenericTypeDefinition() : t; + if (typeof(ProxyChannel<>) == cur) + { + channelType = t.GetGenericArguments()[0]; + } + t = t.BaseType; + } + return channelType; + } + + #region IInitializingObject Members + /// + /// Validates the configuration. + /// + public virtual void AfterPropertiesSet() + { + if ((ChannelType == null && ChannelActionWrapperType == null) || + (ChannelType == null && ChannelActionWrapperType != null && FindChannelType(ChannelActionWrapperType).IsGenericParameter)) + { + throw new ArgumentException("No channeltype supplied."); + } + if (string.IsNullOrEmpty(EndpointConfigurationName)) + { + throw new ArgumentException("No endpoint supplied."); + } + } + + #endregion + } +} diff --git a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/ProxyChannel.cs b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/ProxyChannel.cs index f6310e2..dad1f68 100644 --- a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/ProxyChannel.cs +++ b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/ProxyChannel.cs @@ -1,132 +1,132 @@ -//Copyright 2009 Benny Michielsen - -//Licensed under the Apache License, Version 2.0 (the "License"); -//you may not use this file except in compliance with the License. -//You may obtain a copy of the License at - -// http://www.apache.org/licenses/LICENSE-2.0 - -//Unless required by applicable law or agreed to in writing, software -//distributed under the License is distributed on an "AS IS" BASIS, -//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -//See the License for the specific language governing permissions and -//limitations under the License. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using Spring.Proxy; -using System.Reflection.Emit; -using System.ServiceModel.Channels; -using System.ServiceModel; -using System.Reflection; -using System.Collections; - -namespace WCFChannelManager -{ - /// - /// ProxyChannel has the workflow that needs to be done before an action on a channel is done, calls the action on the channel - /// and finally any cleanup that needs to be done after the action is completed. - /// - /// The type of the channel. - public class ProxyChannel - { - /// - /// Default constructor. - /// - public ProxyChannel() - : this(null) - { - - } - - /// - /// Constructor that takes a channelManager. - /// - /// The channelmanager to use in this instance of ProxyChannel - public ProxyChannel(IChannelManager channelManager) - { - ChannelManager = channelManager; - } - - /// - /// The ChannelManager used. The ProxyChannel delegates channel creation and cleanup to this instance. - /// - public virtual IChannelManager ChannelManager - { - get; - set; - } - - /// - /// Retrieve a channel to work with. - /// - /// A channel that can be used. - protected virtual TChannel GetChannelToWorkWith() - { - return ChannelManager.FetchChannelToWorkWith(); - } - - /// - /// Execute a method on a channel. - /// - /// The method to invoke on the channel. - /// Any parameters that are needed when invoking the method. - /// AReturns any value returned by the method invoked on the channel. - protected object[] ExecuteInChannel(MethodInfo method, object[] parameters) - { - TChannel channel = GetChannelToWorkWith(); - object returnValue; - try - { - returnValue = method.Invoke(channel, parameters); - } - catch (Exception) - { - throw; - } - finally - { - FinishedWorkWithChannel(channel); - } - return new object[] { returnValue }; - } - - /// - /// When work on a channel has been completed the channel is handed for any cleanup work. - /// - /// The channel which has been used. - protected virtual void FinishedWorkWithChannel(TChannel channel) - { - ChannelManager.FinishedWorkWithChannel(channel); - } - - /// - /// Executes the method matched by the methodname and parameters on a channel of TChannel. - /// - /// The name of the method. - /// Parameters used by the method. - /// Returns any value returned by the method invoked on the channel. - protected object Execute(string methodName, object[] parameters) - { - Type[] parameterTypes; - if(parameters == null || parameters.Length == 0) - { - parameterTypes = Type.EmptyTypes; - } - else - { - List types = new List(); - foreach(object o in parameters) - { - types.Add(o.GetType()); - } - parameterTypes = types.ToArray(); - } - MethodInfo methodToCall = typeof(TChannel).GetMethod(methodName, BindingFlags.Instance | BindingFlags.Public, null, parameterTypes,null); - return ExecuteInChannel(methodToCall, parameters); - } - - } -} +//Copyright Sergio Moreno Calzada + +//Licensed under the Apache License, Version 2.0 (the "License"); +//you may not use this file except in compliance with the License. +//You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +//Unless required by applicable law or agreed to in writing, software +//distributed under the License is distributed on an "AS IS" BASIS, +//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +//See the License for the specific language governing permissions and +//limitations under the License. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Spring.Proxy; +using System.Reflection.Emit; +using System.ServiceModel.Channels; +using System.ServiceModel; +using System.Reflection; +using System.Collections; + +namespace WCFChannelManager +{ + /// + /// ProxyChannel has the workflow that needs to be done before an action on a channel is done, calls the action on the channel + /// and finally any cleanup that needs to be done after the action is completed. + /// + /// The type of the channel. + public class ProxyChannel + { + /// + /// Default constructor. + /// + public ProxyChannel() + : this(null) + { + + } + + /// + /// Constructor that takes a channelManager. + /// + /// The channelmanager to use in this instance of ProxyChannel + public ProxyChannel(IChannelManager channelManager) + { + ChannelManager = channelManager; + } + + /// + /// The ChannelManager used. The ProxyChannel delegates channel creation and cleanup to this instance. + /// + public virtual IChannelManager ChannelManager + { + get; + set; + } + + /// + /// Retrieve a channel to work with. + /// + /// A channel that can be used. + protected virtual TChannel GetChannelToWorkWith() + { + return ChannelManager.FetchChannelToWorkWith(); + } + + /// + /// Execute a method on a channel. + /// + /// The method to invoke on the channel. + /// Any parameters that are needed when invoking the method. + /// AReturns any value returned by the method invoked on the channel. + protected object[] ExecuteInChannel(MethodInfo method, object[] parameters) + { + TChannel channel = GetChannelToWorkWith(); + object returnValue; + try + { + returnValue = method.Invoke(channel, parameters); + } + catch (Exception) + { + throw; + } + finally + { + FinishedWorkWithChannel(channel); + } + return new object[] { returnValue }; + } + + /// + /// When work on a channel has been completed the channel is handed for any cleanup work. + /// + /// The channel which has been used. + protected virtual void FinishedWorkWithChannel(TChannel channel) + { + ChannelManager.FinishedWorkWithChannel(channel); + } + + /// + /// Executes the method matched by the methodname and parameters on a channel of TChannel. + /// + /// The name of the method. + /// Parameters used by the method. + /// Returns any value returned by the method invoked on the channel. + public object Execute(string methodName, object[] parameters) + { + Type[] parameterTypes; + if(parameters == null || parameters.Length == 0) + { + parameterTypes = Type.EmptyTypes; + } + else + { + List types = new List(); + foreach(object o in parameters) + { + types.Add(o.GetType()); + } + parameterTypes = types.ToArray(); + } + MethodInfo methodToCall = typeof(TChannel).GetMethod(methodName, BindingFlags.Instance | BindingFlags.Public, null, parameterTypes,null); + return ExecuteInChannel(methodToCall, parameters); + } + + } +} diff --git a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/WCFChannelManager.csproj b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/WCFChannelManager.csproj index db7a49b..5eaa2ad 100644 --- a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/WCFChannelManager.csproj +++ b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/WCFChannelManager.csproj @@ -1,79 +1,96 @@ - - - - Debug - AnyCPU - 9.0.30729 - 2.0 - {E94EB6C3-E81F-4C5C-BEDE-B4CC79D0E938} - Library - Properties - WCFChannelManager - Perponcher.WCFChannelManager - v3.5 - 512 - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - False - ..\..\..\..\sharedlib\Spring.Net\Spring.Core.dll - - - - 3.5 - - - 3.0 - - - 3.5 - - - 3.5 - - - - - - - - - - - - - - - - - - - - - - - + + + + Debug + AnyCPU + 9.0.30729 + 2.0 + {E94EB6C3-E81F-4C5C-BEDE-B4CC79D0E938} + Library + Properties + WCFChannelManager + Perponcher.WCFChannelManager + v3.5 + 512 + + + + + 3.5 + ..\ + true + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + False + ..\packages\Common.Logging.1.2.0\lib\1.0\Common.Logging.dll + + + ..\packages\Spring.Aop.1.3.2\lib\net35\Spring.Aop.dll + + + False + ..\packages\Spring.Core.1.3.2\lib\net35\Spring.Core.dll + + + + 3.5 + + + 3.0 + + + 3.5 + + + 3.5 + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/WcfInterceptor.cs b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/WcfInterceptor.cs new file mode 100644 index 0000000..8bd8852 --- /dev/null +++ b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/WcfInterceptor.cs @@ -0,0 +1,55 @@ +//Copyright 2009 Sergio Moreno Calzada + +//Licensed under the Apache License, Version 2.0 (the "License"); +//you may not use this file except in compliance with the License. +//You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +//Unless required by applicable law or agreed to in writing, software +//distributed under the License is distributed on an "AS IS" BASIS, +//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +//See the License for the specific language governing permissions and +//limitations under the License. + +namespace WCFChannelManager +{ + using AopAlliance.Intercept; + + public class WcfInterceptor : IMethodInterceptor + { + #region IMethodInterceptor + + public object Invoke(IMethodInvocation invocation) + { + if (!ShouldProxyMethod(invocation.Method.Name)) + { + return invocation.Proceed(); + } + + var proxy = this.GetProxy(invocation.Target); + if (proxy == null) + { + return invocation.Proceed(); + } + + var result = proxy.Execute(invocation.Method.Name, invocation.Arguments); + return result; + } + + private bool ShouldProxyMethod(string methodName) + { + var type = typeof(TChannel); + var method = type.GetMethod(methodName); + var shoudProxy = method != null; + return shoudProxy; + } + + #endregion + + public ProxyChannel GetProxy(object target) + { + return target as ProxyChannel; + } + } +} diff --git a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/packages.config b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/packages.config new file mode 100644 index 0000000..6b94bba --- /dev/null +++ b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/packages.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/WCFChannelManagerTests.csproj b/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/WCFChannelManagerTests.csproj index f6326b3..52aa3f4 100644 --- a/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/WCFChannelManagerTests.csproj +++ b/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/WCFChannelManagerTests.csproj @@ -1,95 +1,110 @@ - - - - Debug - AnyCPU - 9.0.30729 - 2.0 - {092C9457-CC27-4AB3-9CB2-7488CB9AB267} - Library - Properties - WCFChannelManagerTests - Perponcher.WCFChannelManagerTests - v3.5 - 512 - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - False - ..\..\..\..\sharedlib\Rhino Mocks\Rhino.Mocks.dll - - - False - ..\..\..\..\sharedlib\Spring.Net\Spring.Core.dll - - - - 3.5 - - - 3.0 - - - 3.0 - - - 3.5 - - - 3.5 - - - - - - - - - - - - - - - - - - - - - - - {E94EB6C3-E81F-4C5C-BEDE-B4CC79D0E938} - WCFChannelManager - - - - - - - + + + + Debug + AnyCPU + 9.0.30729 + 2.0 + {092C9457-CC27-4AB3-9CB2-7488CB9AB267} + Library + Properties + WCFChannelManagerTests + Perponcher.WCFChannelManagerTests + v3.5 + 512 + + + + + 3.5 + ..\ + true + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\Common.Logging.1.2.0\lib\1.0\Common.Logging.dll + + + ..\packages\NUnit.2.6.2\lib\nunit.framework.dll + + + False + ..\packages\RhinoMocks.3.6.1\lib\net\Rhino.Mocks.dll + + + ..\packages\Spring.Aop.1.3.2\lib\net35\Spring.Aop.dll + + + ..\packages\Spring.Core.1.3.2\lib\net35\Spring.Core.dll + + + + 3.5 + + + 3.0 + + + 3.0 + + + 3.5 + + + 3.5 + + + + + + + + + + + + + + + + + + + + + + {E94EB6C3-E81F-4C5C-BEDE-B4CC79D0E938} + WCFChannelManager + + + + + + + + + \ No newline at end of file diff --git a/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/packages.config b/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/packages.config new file mode 100644 index 0000000..0015417 --- /dev/null +++ b/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/packages.config @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/sharedlib/Rhino Mocks/Rhino.Mocks.dll b/sharedlib/Rhino Mocks/Rhino.Mocks.dll deleted file mode 100644 index 4b6904b6f85fa664619121048716ea1b4424a0dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 292352 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

~Jeb5Zrzbm5}ZMCI; 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¬FRo561NYpMkoo9Km9B! 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 - - - Rhino.Mocks.Partial - - - -

- Interface for constraints - - - - - determains if the object pass the constraints - - - - - And operator for constraints - - - - - Not operator for constraints - - - - - Or operator for constraints - - - - - Allow overriding of || or && - - - - - - - Allow overriding of || or && - - - - - - - Gets the message for this constraint - - - - - - Initializes a new constraint object. - - The expected object, The actual object is passed in as a parameter to the method - - - - Evaluate this constraint. - - The actual object that was passed in the method call to the mock. - True when the constraint is met, else false. - - - - Checks if the properties of the object - are the same as the properies of the object. - - The expected object - The actual object - True when both objects have the same values, else False. - - - - - - - - - This is the real heart of the beast. - - - - Used by CheckReferenceType to check all properties of the reference type. - - The expected object - The actual object - True when both objects have the same values, else False. - - - - Used by CheckReferenceType to check all fields of the reference type. - - The expected object - The actual object - True when both objects have the same values, else False. - - - - Checks the items of both collections - - The expected collection - - True if both collections contain the same items in the same order. - - - - Builds a propertyname from the Stack _properties like 'Order.Product.Price' - to be used in the error message. - - A nested property name. - - - - Rhino.Mocks uses this property to generate an error message. - - - A message telling the tester why the constraint failed. - - - - - Constrain that the public field has a specified value - - - - - Constrain that the public field matches another constraint. - - - - - Creates a new instance. - - Name of the public field. - Constraint to place on the public field value. - - - - Creates a new instance, specifying a disambiguating - for the public field. - - The type that declares the public field, used to disambiguate between public fields. - Name of the public field. - Constraint to place on the public field value. - - - - Determines if the object passes the constraint. - - - - - Gets the message for this constraint - - - - - - Creates a new instance. - - Name of the public field. - Expected value. - - - - Creates a new instance, specifying a disambiguating - for the public field. - - The type that declares the public field, used to disambiguate between public fields. - Name of the public field. - Expected value. - - - - Constrain that the property has a specified value - - - - - Constrain that the property matches another constraint. - - - - - Creates a new instance. - - Name of the property. - Constraint to place on the property value. - - - - Creates a new instance, specifying a disambiguating - for the property. - - The type that declares the property, used to disambiguate between properties. - Name of the property. - Constraint to place on the property value. - - - - Determines if the object passes the constraint. - - - - - Gets the message for this constraint - - - - - - Creates a new instance. - - Name of the property. - Expected value. - - - - Creates a new instance, specifying a disambiguating - for the property. - - The type that declares the property, used to disambiguate between properties. - Name of the property. - Expected value. - - - - Constrain that the parameter must be of the specified type - - - - - Creates a new instance. - - Type. - - - - determains if the object pass the constraints - - - - - Gets the message for this constraint - - - - - - Constraint that determines whether an object is the same object as another. - - - - - Creates a new instance. - - Obj. - - - - Determines if the object passes the constraints. - - - - - Gets the message for this constraint. - - - - - Evaluate a parameter using constraints - - - - - Create new instance - - - - - - determains if the object pass the constraints - - - - - Gets the message for this constraint - - - - - - A constraint based on lambda expression, we are using Expression{T} - because we want to be able to get good error reporting on that. - - - - - Initializes a new instance of the class. - - The expr. - - - - determains if the object pass the constraints - - - - - - - Gets the message for this constraint - - - - - - Constrain that the list contains the same items as the parameter list - - - - - Creates a new instance. - - In list. - - - - determains if the object pass the constraints - - - - - Gets the message for this constraint - - - - - - Constrain that the parameter is one of the items in the list - - - - - Creates a new instance. - - In list. - - - - determains if the object pass the constraints - - - - - Gets the message for this constraint - - - - - - Constrain that the object is inside the parameter list - - - - - Creates a new instance. - - In list. - - - - determains if the object pass the constraints - - - - - Gets the message for this constraint - - - - - - Applies another AbstractConstraint to the collection count. - - - - - Creates a new instance. - - The constraint that should be applied to the collection count. - - - - Determines if the parameter conforms to this constraint. - - - - - Gets the message for this constraint. - - - - - Applies another AbstractConstraint to a specific list element. - - - - - Creates a new instance. - - The zero-based index of the list element. - The constraint that should be applied to the list element. - - - - Determines if the parameter conforms to this constraint. - - - - - Gets the message for this constraint - - - - - - Applies another AbstractConstraint to a specific generic keyed list element. - - - - - Creates a new instance. - - The key of the list element. - The constraint that should be applied to the list element. - - - - Determines if the parameter conforms to this constraint. - - - - - Gets the message for this constraint - - - - - - Constrains that all elements are in the parameter list - - - - - Initializes a new instance of the class. - - The these. - - - - determains if the object pass the constraints - - - - - - - Gets the message for this constraint - - - - - - Combines two constraints, constraint pass if either is fine. - - - - - Creates a new instance. - - C1. - C2. - - - - determains if the object pass the constraints - - - - - Gets the message for this constraint - - - - - - Negate a constraint - - - - - Creates a new instance. - - C1. - - - - determains if the object pass the constraints - - - - - Gets the message for this constraint - - - - - - Combines two constraints - - - - - - Creates a new instance. - - C1. - C2. - - - - determains if the object pass the constraints - - - - - Gets the message for this constraint - - - - - - Constrain the argument to validate according to regex pattern - - - - - Creates a new instance. - - Pattern. - - - - determains if the object pass the constraints - - - - - Gets the message for this constraint - - - - - - Constraint that evaluate whatever an argument contains the specified string. - - - - - Creates a new instance. - - Inner string. - - - - determains if the object pass the constraints - - - - - Gets the message for this constraint - - - - - - Constraint that evaluate whatever an argument ends with the specified string - - - - - Creates a new instance. - - End. - - - - determains if the object pass the constraints - - - - - Gets the message for this constraint - - - - - - Constraint that evaluate whatever an argument start with the specified string - - - - - Creates a new instance. - - Start. - - - - determains if the object pass the constraints - - - - - Gets the message for this constraint - - - - - - Constraint that evaluate whatever an object equals another - - - - - Creates a new instance. - - Obj. - - - - determains if the object pass the constraints - - - - - Gets the message for this constraint - - - - - - Constraint that always returns true - - - - - determains if the object pass the constraints - - - - - Gets the message for this constraint - - - - - - Constraint that evaluate whatever a comparable is greater than another - - - - - Creates a new instance. - - - - - determains if the object pass the constraints - - - - - Gets the message for this constraint - - - - - - Central location for constraints - - - - - Evaluate a greater than constraint for . - - The object the parameter should be greater than - - - - Evaluate a less than constraint for . - - The object the parameter should be less than - - - - Evaluate a less than or equal constraint for . - - The object the parameter should be less than or equal to - - - - Evaluate a greater than or equal constraint for . - - The object the parameter should be greater than or equal to - - - - Evaluate an equal constraint for . - - The object the parameter should equal to - - - - Evaluate a not equal constraint for . - - The object the parameter should not equal to - - - - Evaluate a same as constraint. - - The object the parameter should the same as. - - - - Evaluate a not same as constraint. - - The object the parameter should not be the same as. - - - - A constraints that accept anything - - - - - - A constraint that accept only nulls - - - - - - A constraint that accept only non null values - - - - - - A constraint that accept only value of the specified type - - - - - A constraint that accept only value of the specified type - - - - - Evaluate a parameter using a predicate - - The predicate to use - - - - Provides access to the constraintes defined in the class to be used in context - with the syntax. - - The type of the argument - - - - Evaluate a greater than constraint for . - - The object the parameter should be greater than - - - - Evaluate a less than constraint for . - - The object the parameter should be less than - - - - Evaluate a less than or equal constraint for . - - The object the parameter should be less than or equal to - - - - Evaluate a greater than or equal constraint for . - - The object the parameter should be greater than or equal to - - - - Evaluate an equal constraint for . - - The object the parameter should equal to - - - - Evaluate a not equal constraint for . - - The object the parameter should not equal to - - - - Evaluate a same as constraint. - - The object the parameter should the same as. - - - - Evaluate a not same as constraint. - - The object the parameter should not be the same as. - - - - Throws NotSupportedException. Don't use Equals to define constraints. Use Equal instead. - - - - - - - Serves as a hash function for a particular type. - - - A hash code for the current . - - - - - A constraints that accept anything - - - - - - A constraint that accept only nulls - - - - - - A constraint that accept only non null values - - - - - - A constraint that accept only value of the specified type. - The check is performed on the type that has been defined - as the argument type. - - - - - Central location for constraints about lists and collections - - - - - Determines whether the specified obj is in the paramter. - The parameter must be IEnumerable. - - Obj. - - - - - Determains whatever the parameter is in the collection. - - - - - Determains that the parameter collection is identical to the specified collection - - - - - Determines that the parameter collection has the specified number of elements. - - The constraint that should be applied to the collection count. - - - - Determines that an element of the parameter collections conforms to another AbstractConstraint. - - The zero-based index of the list element. - The constraint which should be applied to the list element. - - - - Determines that an element of the parameter collections conforms to another AbstractConstraint. - - The key of the element. - The constraint which should be applied to the element. - - - - Determines that all elements of the specified collection are in the the parameter collection - - The collection to compare against - The constraint which should be applied to the list parameter. - - - - Provides access to the constraintes defined in the class to be used in context - with the syntax. - - - - - Determines whether the specified object is in the paramter. - The parameter must be IEnumerable. - - Obj. - - - - - Determains whatever the parameter is in the collection. - - - - - Determains that the parameter collection is identical to the specified collection - - - - - Determines that the parameter collection has the specified number of elements. - - The constraint that should be applied to the collection count. - - - - Determines that an element of the parameter collections conforms to another AbstractConstraint. - - The zero-based index of the list element. - The constraint which should be applied to the list element. - - - - Determines that all elements of the specified collection are in the the parameter collection - - The collection to compare against - The constraint which should be applied to the list parameter. - - - - Throws NotSupportedException. Don't use Equals to define constraints. Use Equal instead. - - - - - - - Serves as a hash function for a particular type. - - - A hash code for the current . - - - - - Provides a dummy field to pass as out or ref argument. - - - - - - Dummy field to satisfy the compiler. Used for out and ref arguments. - - - - - Central location for constraints for object's properties - - - - - Constrains the parameter to have property with the specified value - - Name of the property. - Expected value. - - - - - Constrains the parameter to have property with the specified value. - - The type that declares the property, used to disambiguate between properties. - Name of the property. - Expected value. - - - - - Constrains the parameter to have a property satisfying a specified constraint. - - Name of the property. - Constraint for the property. - - - - Constrains the parameter to have a property satisfying a specified constraint. - - The type that declares the property, used to disambiguate between properties. - Name of the property. - Constraint for the property. - - - - Determines whether the parameter has the specified property and that it is null. - - Name of the property. - - - - - Determines whether the parameter has the specified property and that it is null. - - The type that declares the property, used to disambiguate between properties. - Name of the property. - - - - - Determines whether the parameter has the specified property and that it is not null. - - Name of the property. - - - - - Determines whether the parameter has the specified property and that it is not null. - - The type that declares the property, used to disambiguate between properties. - Name of the property. - - - - - constraints the parameter to have the exact same property values as the expected object. - - An object, of the same type as the parameter, whose properties are set with the expected values. - An instance of the constraint that will do the actual check. - - The parameter's public property values and public field values will be matched against the expected object's - public property values and public field values. The first mismatch will be reported and no further matching is done. - The matching is recursive for any property or field that has properties or fields of it's own. - Collections are supported through IEnumerable, which means the constraint will check if the actual and expected - collection contain the same values in the same order, where the values contained by the collection can have properties - and fields of their own that will be checked as well because of the recursive nature of this constraint. - - - - - Central location for constraints for object's public fields - - - - - Constrains the parameter to have a public field with the specified value - - Name of the public field. - Expected value. - - - - - Constrains the parameter to have a public field with the specified value. - - The type that declares the public field, used to disambiguate between public fields. - Name of the public field. - Expected value. - - - - - Constrains the parameter to have a public field satisfying a specified constraint. - - Name of the public field. - Constraint for the public field. - - - - Constrains the parameter to have a public field satisfying a specified constraint. - - The type that declares the public field, used to disambiguate between public fields. - Name of the public field. - Constraint for the public field. - - - - Determines whether the parameter has the specified public field and that it is null. - - Name of the public field. - - - - - Determines whether the parameter has the specified public field and that it is null. - - The type that declares the public field, used to disambiguate between public fields. - Name of the public field. - - - - - Determines whether the parameter has the specified public field and that it is not null. - - Name of the public field. - - - - - Determines whether the parameter has the specified public field and that it is not null. - - The type that declares the public field, used to disambiguate between public fields. - Name of the public field. - - - - - Central location for all text related constraints - - - - - Constrain the argument to starts with the specified string - - - - - Constrain the argument to end with the specified string - - - - - Constrain the argument to contain the specified string - - - - - Constrain the argument to validate according to regex pattern - - - - - Provides access to the constraintes defined in the class to be used in context - with the syntax. - - - - - Constrain the argument to starts with the specified string - - - - - - Constrain the argument to end with the specified string - - - - - Constrain the argument to contain the specified string - - - - - Constrain the argument to validate according to regex pattern - - - - - Throws NotSupportedException. Don't use Equals to define constraints. Use Equal instead. - - - - - - - Serves as a hash function for a particular type. - - - A hash code for the current . - - - - - An expectaton violation was detected. - - - - - Creates a new instance. - - Message. - - - - Serialization constructor - - - - - Signals that an object was call on a mock repostiroy which doesn't - belong to this mock repository or not a mock - - - - - Creates a new instance. - - Message. - - - - Serialization constructor - - - - - Abstract class that holds common information for - expectations. - - - - - Interface to validate that a method call is correct. - - - - - Validate the arguments for the method. - This method can be called numerous times, so be careful about side effects - - The arguments with which the method was called - - - - Add an actual method call to this expectation - - - - - Returns the return value or throw the exception and setup any output / ref parameters - that has been set. - - - - - Allow to set the return value in the future, if it was already set. - - - - - Builds the verification failure message. - - - - - - Gets the error message. - - - - - - Range of expected calls - - - - - Number of call actually made for this method - - - - - If this expectation is still waiting for calls. - - - - - The return value for a method matching this expectation - - - - - Gets or sets the exception to throw on a method matching this expectation. - - - - - Gets a value indicating whether this instance's action is staisfied. - A staisfied instance means that there are no more requirements from - this method. A method with non void return value must register either - a return value or an exception to throw. - - - - - Gets the method this expectation is for. - - - - - Gets or sets what special condtions there are for this method - repeating. - - - - - Gets a value indicating whether this expectation was satisfied - - - - - Specify whatever this expectation has a return value set - You can't check ReturnValue for this because a valid return value include null. - - - - - An action to execute when the method is matched. - - - - - Set the out / ref parameters for the method call. - The indexing is zero based and ignores any non out/ref parameter. - It is possible not to pass all the parameters. This method can be called only once. - - - - - Documentation Message - - - - - Gets the invocation for this expectation - - The invocation. - - - - Occurs when the exceptation is match on a method call - - - - - Number of actuall calls made that passed this expectation - - - - - Range of expected calls that should pass this expectation. - - - - - The return value for a method matching this expectation - - - - - The exception to throw on a method matching this expectation. - - - - - The method this expectation is for. - - - - - The return value for this method was set - - - - - Whether this method will repeat - unlimited number of times. - - - - - A delegate that will be run when the - expectation is matched. - - - - - The arguments that matched this expectation. - - - - - Documentation message - - - - - The method originalInvocation - - - - - Get the hash code - - - - - Add an actual actualMethodCall call to this expectation - - - - - Builds the verification failure message. - - - - - - Allow to set the return value in the future, if it was already set. - - - - - Returns the return value or throw the exception and setup output / ref parameters - - - - - Validate the arguments for the method on the child methods - - The arguments with which the method was called - - - - Creates a new instance. - - The originalInvocation for this method, required because it contains the generic type infromation - - - - Creates a new instance. - - Expectation. - - - - Validate the arguments for the method on the child methods - - The arguments with which the method was called - - - - Determines if this object equal to obj - - - - - The error message for these arguments - - - - - Asserts that the delegate has the same parameters as the expectation's method call - - - - - Setter for the outpur / ref parameters for this expecataion. - Can only be set once. - - - - - Specify whatever this expectation has a return value set - You can't check ReturnValue for this because a valid return value include null. - - - - - Gets the method this expectation is for. - - - - - Gets the originalInvocation for this expectation - - The originalInvocation. - - - - Gets or sets what special condtions there are for this method - - - - - Range of expected calls - - - - - Number of call actually made for this method - - - - - If this expectation is still waiting for calls. - - - - - Gets a value indicating whether this expectation was satisfied - - - - - The return value for a method matching this expectation - - - - - An action to execute when the method is matched. - - - - - Gets or sets the exception to throw on a method matching this expectation. - - - - - Gets a value indicating whether this instance's action is staisfied. - A staisfied instance means that there are no more requirements from - this method. A method with non void return value must register either - a return value or an exception to throw or an action to execute. - - - - - Documentation message - - - - - Occurs when the exceptation is match on a method call - - - - - Gets the error message. - - - - - - Expectation that matchs any arguments for the method. - - - - - Creates a new instance. - - Invocation for this expectation - - - - Creates a new instance. - - Expectation. - - - - Validate the arguments for the method. - - The arguments with which the method was called - - - - Determines if the object equal to expectation - - - - - Get the hash code - - - - - Gets the error message. - - - - - - Summary description for ArgsEqualExpectation. - - - - - Creates a new instance. - - Expected args. - The invocation for this expectation - - - - Validate the arguments for the method. - - The arguments with which the method was called - - - - Determines if the object equal to expectation - - - - - Get the hash code - - - - - Gets the error message. - - - - - - Get the expected args. - - - - - Call a specified callback to verify the expectation - - - - - Creates a new instance. - - Expectation. - Callback. - - - - Creates a new instance. - - Invocation for this expectation - Callback. - - - - Validate the arguments for the method on the child methods - - The arguments with which the method was called - - - - Determines if the object equal to expectation - - - - - Get the hash code - - - - - Gets the error message. - - - - - - Expect the method's arguments to match the contraints - - - - - Creates a new instance. - - Invocation for this expectation - Constraints. - - - - Creates a new instance. - - Expectation. - Constraints. - - - - Validate the arguments for the method. - - The arguments with which the method was called - - - - Determines if the object equal to expectation - - - - - Get the hash code - - - - - Gets the error message. - - - - - - ExpectationsList - - - - - Dictionary - - - - - Dictionary class - - - - - Create a new instance of ProxyStateDictionary - - - - - Operation on a remoting proxy - - - It is not possible to directly communicate to a real proxy via transparent proxy. - Transparent proxy impersonates a user type and only methods of that user type are callable. - The only methods that are guaranteed to exist on any transparent proxy are methods defined - in Object: namely ToString(), GetHashCode(), and Equals()). - - These three methods are the only way to tell the real proxy to do something. - Equals() is the most suitable of all, since it accepts an arbitrary object parameter. - The RemotingProxy code is built so that if it is compared to an IRemotingProxyOperation, - transparentProxy.Equals(operation) will call operation.Process(realProxy). - This way we can retrieve a real proxy from transparent proxy and perform - arbitrary operation on it. - - - - - Implementation of IInvocation based on remoting proxy - - Some methods are marked NotSupported since they either don't make sense - for remoting proxies, or they are never called by Rhino Mocks - - - - Generates remoting proxies and provides utility functions - - - - - Create the proxy using remoting - - - - - Check whether an object is a transparent proxy with a RemotingProxy behind it - - Object to check - true if the object is a transparent proxy with a RemotingProxy instance behind it, false otherwise - We use Equals() method to communicate with the real proxy behind the object. - See IRemotingProxyOperation for more details - - - - Retrieve a mocked object from a transparent proxy - - Transparent proxy with a RemotingProxy instance behind it - Mocked object associated with the proxy - We use Equals() method to communicate with the real proxy behind the object. - See IRemotingProxyOperation for more details - - - - Allows to call a method and immediatly get it's options. - - - - - Interface to allows to call a method and immediatly get it's options. - - - - - Get the method options for the call - - The method call should go here, the return value is ignored - - - - Creates a new instance. - - - - - Get the method options for the call - - The method call should go here, the return value is ignored - - - - Allows to call a method and immediatly get it's options. - Set the expected number for the call to Any() - - - - - Creates a new instance. - - Proxy. - Mocked instance. - - - - Get the method options for the call - - The method call should go here, the return value is ignored - - - - This class is reponsible for taking a delegate and creating a wrapper - interface around it, so it can be mocked. - - - - - The scope for all the delegate interfaces create by this mock repositroy. - - - - - Gets a type with an "Invoke" method suitable for use as a target of the - specified delegate type. - - - - - - - Raise events for all subscribers for an event - - - - - Raise events for all subscribers for an event - - - - - Raise the event - - - - - The most common form for the event handler signature - - - - - Create an event raise for the specified event on this instance. - - - - - Creates a new instance of EventRaiser - - - - - Raise the event - - - - - The most common signature for events - Here to allow intellisense to make better guesses about how - it should suggest parameters. - - - - - Allows to define what would happen when a method - is called. - - - - - Allows to define what would happen when a method - is called. - - - - - Set the return value for the method. - - The object the method will return - IRepeat that defines how many times the method will return this value - - - - Allow to override this return value in the future - - IRepeat that defines how many times the method will return this value - - - - Throws the specified exception when the method is called. - - Exception to throw - - - - Ignores the arguments for this method. Any argument will be matched - againt this method. - - - - - Add constraints for the method's arguments. - - - - - Set a callback method for the last call - - - - - Set a delegate to be called when the expectation is matched. - The delegate return value will be returned from the expectation. - - - - - Set a delegate to be called when the expectation is matched. - The delegate return value will be returned from the expectation. - - - - - Set a delegate to be called when the expectation is matched. - The delegate return value will be returned from the expectation. - - - - - Set a delegate to be called when the expectation is matched. - The delegate return value will be returned from the expectation. - - - - - Set a delegate to be called when the expectation is matched. - The delegate return value will be returned from the expectation. - - - - - Set a delegate to be called when the expectation is matched. - The delegate return value will be returned from the expectation. - - - - - Set a delegate to be called when the expectation is matched. - The delegate return value will be returned from the expectation. - - - - - Set a delegate to be called when the expectation is matched. - The delegate return value will be returned from the expectation. - - - - - Set a delegate to be called when the expectation is matched. - The delegate return value will be returned from the expectation. - - - - - Set a delegate to be called when the expectation is matched. - The delegate return value will be returned from the expectation. - - - - - Set a delegate to be called when the expectation is matched. - The delegate return value will be returned from the expectation. - - - - - Set a delegate to be called when the expectation is matched. - The delegate return value will be returned from the expectation. - - - - - Set a delegate to be called when the expectation is matched - and allow to optionally modify the invocation as needed - - - - - Call the original method on the class, bypassing the mocking layers. - - - - - - Call the original method on the class, optionally bypassing the mocking layers. - - - - - - Use the property as a simple property, getting/setting the values without - causing mock expectations. - - - - - Expect last (property) call as property setting, ignore the argument given - - - - - - Expect last (property) call as property setting with a given argument. - - - - - - - Get an event raiser for the last subscribed event. - - - - - Set the parameter values for out and ref parameters. - This is done using zero based indexing, and _ignoring_ any non out/ref parameter. - - - - - Documentation message for the expectation - - Message - - - - Better syntax to define repeats. - - - - - Allows to specify the number of time for method calls - - - - - Repeat the method twice. - - - - - Repeat the method once. - - - - - Repeat the method at least once, then repeat as many time as it would like. - - - - - Repeat the method any number of times. - This has special affects in that this method would now ignore orderring. - - - - - Set the range to repeat an action. - - Min. - Max. - - - - Set the amount of times to repeat an action. - - - - - This method must not appear in the replay state. - This has special affects in that this method would now ignore orderring. - - - - - Creates a new instance. - - the repository for this expectation - the recorder for this proxy - the proxy for this expectation - Expectation. - - - - Add constraints for the method's arguments. - - - - - Set a callback method for the last call - - - - - Set a callback method for the last call - - - - - Set a callback method for the last call - - - - - Set a callback method for the last call - - - - - Set a callback method for the last call - - - - - Set a callback method for the last call - - - - - Set a callback method for the last call - - - - - Set a callback method for the last call - - - - - Set a callback method for the last call - - - - - Set a callback method for the last call - - - - - Set a callback method for the last call - - - - - Set a callback method for the last call - - - - - Set a delegate to be called when the expectation is matched. - The delegate return value will be returned from the expectation. - - - - - Set a delegate to be called when the expectation is matched. - The delegate return value will be returned from the expectation. - - - - - Set the return value for the method. - - The object the method will return - IRepeat that defines how many times the method will return this value - - - - Set the return value for the method, but allow to override this return value in the future - - IRepeat that defines how many times the method will return this value - - - - Throws the specified exception when the method is called. - - Exception to throw - - - - Ignores the arguments for this method. Any argument will be matched - againt this method. - - - - - Call the original method on the class, bypassing the mocking layers. - - - - - - Call the original method on the class, optionally bypassing the mocking layers - - - - - - Use the property as a simple property, getting/setting the values without - causing mock expectations. - - - - - Expect last (property) call as property setting, ignore the argument given - - - - - - Expect last (property) call as property setting with a given argument. - - - - - - - Gets the event raiser for the last event - - - - - Set the parameter values for out and ref parameters. - This is done using zero based indexing, and _ignoring_ any non out/ref parameter. - - - - - Repeat the method twice. - - - - - Repeat the method once. - - - - - Repeat the method at least once, then repeat as many time as it would like. - - - - - This method must not appear in the replay state. - - - - - Documentation message for the expectation - - Message - - - - Repeat the method any number of times. - - - - - Set the range to repeat an action. - - Min. - Max. - - - - Set the amount of times to repeat an action. - - - - - Better syntax to define repeats. - - - - - This class will provide hash code for hashtables without needing - to call the GetHashCode() on the object, which may very well be mocked. - This class has no state so it is a singelton to avoid creating a lot of objects - that does the exact same thing. See flyweight patterns. - - - - - Get the hash code for a proxy object without calling GetHashCode() - on the object. - - - - - Compares two instances of mocked objects - - - - - Compare two mocked objects - - - - - The next hash code value for a mock object. - This is safe for multi threading. - - - - - The sole instance of - - - - - Doesn't log anything, just makes happy noises - - - - - Log expectations - allows to see what is going on inside Rhino Mocks - - - - - Logs the expectation as is was recorded - - The invocation. - The expectation. - - - - Logs the expectation as it was recorded - - The invocation. - The expectation. - - - - Logs the unexpected method call. - - The invocation. - The message. - - - - Logs the expectation as is was recorded - - The invocation. - The expectation. - - - - Logs the expectation as it was recorded - - The invocation. - The expectation. - - - - Logs the unexpected method call. - - The invocation. - The message. - - - - This is a dummy type that is used merely to give DynamicProxy the proxy instance that - it needs to create IProxy's types. - - - - - Interface to find the repository of a mocked object - - - - - Return true if it should call the original method on the object - instead of pass it to the message chain. - - The method to call - - - - Register a method to be called on the object directly - - - - - Register a property on the object that will behave as a simple property - - - - - Check if the method was registered as a property method. - - - - - Do get/set on the property, according to need. - - - - - Do add/remove on the event - - - - - Get the subscribers of a spesific event - - - - - Gets the declaring type of the method, taking into acccount the possible generic - parameters that it was created with. - - - - - Clears the state of the object, remove original calls, property behavior, subscribed events, etc. - - - - - Get all the method calls arguments that were made against this object with the specificed - method. - - - Only method calls in replay mode are counted - - - - - Records the method call - - - - - The unique hash code of this mock, which is not related - to the value of the GetHashCode() call on the object. - - - - - Gets the repository. - - - - - Gets the implemented types by this mocked object - - The implemented. - - - - Gets or sets the constructor arguments. - - The constructor arguments. - - - - Create a new instance of - - - - - Return true if it should call the original method on the object - instead of pass it to the message chain. - - The method to call - - - - Register a method to be called on the object directly - - - - - Register a property on the object that will behave as a simple property - Return true if there is already a value for the property - - - - - Check if the method was registered as a property method. - - - - - Do get/set on the property, according to need. - - - - - Do add/remove on the event - - - - - Get the subscribers of a spesific event - - - - - Gets the declaring type of the method, taking into acccount the possible generic - parameters that it was created with. - - - - - Get all the method calls arguments that were made against this object with the specificed - method. - - - - - Only method calls in replay mode are counted - - - - - Records the method call - - - - - - - Clears the state of the object, remove original calls, property behavior, subscribed events, etc. - - - - - The unique hash code of this proxy, which is not related - to the value of the GetHashCode() call on the object. - - - - - Gets the repository. - - - - - Gets or sets the constructor arguments. - - The constructor arguments. - - - - Gets the implemented types by this mocked object - - The implemented. - - - - Range for expected method calls - - - - - Creates a new instance. - - Min. - Max. - - - - Return the string representation of this range. - - - - - Gets or sets the min. - - - - - - Gets or sets the max. - - - - - - Records all the expectations for a mock and - return a ReplayDynamicMockState when Replay() - is called. - - - - - Records all the expectations for a mock - - - - - Different actions on this mock - - - - - Add a method call for this state' mock. - - The invocation for this method - The method that was called - The arguments this method was called with - - - - Verify that this mock expectations have passed. - - - - - Verify that we can move to replay state and move - to the reply state. - - - - - Gets a mock state that match the original mock state of the object. - - - - - Get the options for the last method call - - - - - Set the exception to throw when Verify is called. - This is used to report exception that may have happened but where caught in the code. - This way, they are reported anyway when Verify() is called. - - - - - This method is called to indicate that a property behavior call. - This is done so we generate good error message in the common case of people using - Stubbed properties with Return(). - - - - - Gets the matching verify state for this state - - - - - Get the options for the last method call - - - - - Get the options for the last method call - - - - - Set the exception to throw when Verify is called. - This is used to report exception that may have happened but where caught in the code. - This way, they are reported anyway when Verify() is called. - - - - - This method is called to indicate that a property behavior call. - This is done so we generate good error message in the common case of people using - Stubbed properties with Return(). - - - - - Creates a new instance. - - Repository. - The proxy that generates the method calls - - - - Add a method call for this state' mock. - - The invocation for this method - The method that was called - The arguments this method was called with - - - - Verify that we can move to replay state and move - to the reply state. - - - - - Verify that we can move to replay state and move - to the reply state. - - - - - Verify that this mock expectations have passed. - - - - - Gets a mock state that match the original mock state of the object. - - - - - Asserts the previous method is closed (had an expectation set on it so we can replay it correctly) - - - - - Gets the last expectation. - - - - - Gets the total method calls count. - - - - - Get the options for the last method call - - - - - Gets the matching verify state for this state - - - - - Creates a new instance. - - Repository. - The proxy that generates the method calls - - - - Verify that we can move to replay state and move - to the reply state. - - - - - Gets a mock state that match the original mock state of the object. - - - - - Records all the expectations for a mock and - return a ReplayPartialMockState when Replay() - is called. - - - - - Creates a new instance. - - Repository. - The proxy that generates the method calls - - - - Verify that we can move to replay state and move - to the reply state. - - - - - Gets a mock state that match the original mock state of the object. - - - - - Options for special repeat option - - - - - This method can be called only as many times as the IMethodOptions.Expect allows. - - - - - This method should never be called - - - - - This method can be call any number of times - - - - - This method will call the original method - - - - - This method will call the original method, bypassing the mocking layer - - - - - This method will simulate simple property behavior - - - - - Validate all expectations on a mock and ignores calls to - any method that was not setup properly. - - - - - Validate all expectations on a mock - - - - - The repository for this state - - - - - The proxy object for this state - - - - - Get the options for the last method call - - - - - Creates a new instance. - - The previous state for this method - - - - Add a method call for this state' mock. - - The invocation for this method - The method that was called - The arguments this method was called with - - - - Add a method call for this state' mock. - This allows derived method to cleanly get a the setupresult behavior while adding - their own. - - The invocation for this method - The method that was called - The arguments this method was called with - - - - Set the exception to throw when Verify is called. - This is used to report exception that may have happened but where caught in the code. - This way, they are reported anyway when Verify() is called. - - - - - not relevant - - - - - Verify that this mock expectations have passed. - - - - - Verify that we can move to replay state and move - to the reply state. - - - - - Gets a mock state that match the original mock state of the object. - - - - - Get the options for the last method call - - - - - Gets the matching verify state for this state - - - - - Creates a new instance. - - The previous state for this method - - - - Add a method call for this state' mock. - - The invocation for this method - The method that was called - The arguments this method was called with - - - - Gets a mock state that match the original mock state of the object. - - - - - Validate all expectations on a mock and ignores calls to - any method that was not setup properly. - - - - - Creates a new instance. - - The previous state for this method - - - - Add a method call for this state' mock. - - The invocation for this method - The method that was called - The arguments this method was called with - - - - Gets a mock state that match the original mock state of the object. - - - - - Summary description for RhinoInterceptor. - - - - - Creates a new instance. - - - - - Intercept a method call and direct it to the repository. - - - - - Behave like a stub, all properties and events acts normally, methods calls - return default values by default (but can use expectations to set them up), etc. - - - - - Initializes a new instance of the class. - - The proxy that generates the method calls - Repository. - - - - We don't care much about expectations here, so we will remove the exepctation if - it is not closed. - - - - - Verify that we can move to replay state and move - to the reply state. - - - - - - Validate expectations on recorded methods, but in general completely ignoring them. - Similar to except that it would return a - when BackToRecord is called. - - - - - Initializes a new instance of the class. - - The previous state for this method - - - - Add a method call for this state' mock. - - The invocation for this method - The method that was called - The arguments this method was called with - - - - Gets a mock state that match the original mock state of the object. - - - - - Rudimetry implementation that simply logs methods calls as text. - - - - - Initializes a new instance of the class. - - The writer. - - - - Logs the expectation as is was recorded - - The invocation. - The expectation. - - - - Logs the expectation as it was recorded - - The invocation. - The expectation. - - - - Logs the unexpected method call. - - The invocation. - The message. - - - - Write rhino mocks log info to the trace - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - if set to true [log recorded]. - if set to true [log replayed]. - if set to true [log unexpected]. - - - - Logs the expectation as is was recorded - - The invocation. - The expectation. - - - - Logs the expectation as it was recorded - - The invocation. - The expectation. - - - - Logs the unexpected method call. - - The invocation. - The message. - - - - Writes log information as stack traces about rhino mocks activity - - - - - Allows to redirect output to a different location. - - - - - Logs the expectation as is was recorded - - The invocation. - The expectation. - - - - Logs the expectation as it was recorded - - The invocation. - The expectation. - - - - Logs the unexpected method call. - - The invocation. - The message. - - - - Validate arguments for methods - - - - - Validate that the passed argument is not null. - - The object to validate - The name of the argument - - If the obj is null, an ArgumentNullException with the passed name - is thrown. - - - - - Validate that the arguments are equal. - - Expected args. - Actual Args. - - - - Validate that the two argument are equals, including validation for - when the arguments are collections, in which case it will validate their values. - - - - - This method is safe for use even if any of the objects is a mocked object - that override equals. - - - - - Throw an object already verified when accessed - - - - - Create a new instance of VerifiedMockState - - The previous mock state, used to get the initial record state - - - - Add a method call for this state' mock. - - The invocation for this method - The method that was called - The arguments this method was called with - - - - Verify that this mock expectations have passed. - - - - - Verify that we can move to replay state and move - to the reply state. - - - - - Gets a mock state that match the original mock state of the object. - - - - - Get the options for the last method call - - - - - Set the exception to throw when Verify is called. - This is used to report exception that may have happened but where caught in the code. - This way, they are reported anyway when Verify() is called. - - - - - not relevant - - - - - Gets the matching verify state for this state - - - - - Get the options for the last method call - - - - - Records the actions on all the mocks created by a repository. - - - - - Records the specified call with the specified args on the mocked object. - - - - - Get the expectation for this method on this object with this arguments - - - - - This check the methods that were setup using the SetupResult.For() - or LastCall.Repeat.Any() and that bypass the whole expectation model. - - - - - Gets the all expectations for a mocked object and method combination, - regardless of the expected arguments / callbacks / contraints. - - Mocked object. - Method. - List of all relevant expectation - - - - Gets the all expectations for proxy. - - Mocked object. - List of all relevant expectation - - - - Removes all the repeatable expectations for proxy. - - Mocked object. - - - - Replaces the old expectation with the new expectation for the specified proxy/method pair. - This replace ALL expectations that equal to old expectations. - - Proxy. - Method. - Old expectation. - New expectation. - - - - Adds the recorder and turn it into the active recorder. - - Recorder. - - - - Moves to previous recorder. - - - - - Gets the recorded expectation or null. - - - - - Gets the next expected calls string. - - - - - Moves to parent recorder. - - - - - Set the expectation so it can repeat any number of times. - - - - - Removes the expectation from the recorder - - - - - Clear the replayer to call (and all its chain of replayers) - This also removes it from the list of expectations, so it will never be considered again - - - - - Get the expectation for this method on this object with this arguments - - - - - Gets a value indicating whether this instance has expectations that weren't satisfied yet. - - - true if this instance has expectations; otherwise, false. - - - - - Marker interface used to indicate that this is a partial mock. - - - - - Options for CallOriginalMethod - - - - - No expectation is created, the method will be called directly - - - - - Normal expectation is created, but when the method is later called, it will also call the original method - - - - - Base class for method recorders, handle delegating to inner recorder if needed. - - - - - List of the expected actions on for this recorder - The legal values are: - * Expectations - * Method Recorders - - - - - The current recorder. - - - - - The current replayer; - - - - - The parent recorder of this one, may be null. - - - - - This contains a list of all the replayers that should be ignored - for a spesific method call. A replayer gets into this list by calling - ClearReplayerToCall() on its parent. This list is Clear()ed on each new invocation. - - - - - All the repeatable methods calls. - - - - - Counts the recursion depth of the current expectation search stack - - - - - Creates a new instance. - - - - - Creates a new instance. - - Parent recorder. - Repeatable methods - - - - Records the specified call with the specified args on the mocked object. - - - - - Get the expectation for this method on this object with this arguments - - - - - Gets the all expectations for a mocked object and method combination, - regardless of the expected arguments / callbacks / contraints. - - Mocked object. - Method. - List of all relevant expectation - - - - Gets the all expectations for proxy. - - Mocked object. - List of all relevant expectation - - - - Replaces the old expectation with the new expectation for the specified proxy/method pair. - This replace ALL expectations that equal to old expectations. - - Proxy. - Method. - Old expectation. - New expectation. - - - - Remove the all repeatable expectations for proxy. - - Mocked object. - - - - Set the expectation so it can repeat any number of times. - - - - - Removes the expectation from the recorder - - - - - Adds the recorder and turn it into the active recorder. - - Recorder. - - - - Moves to previous recorder. - - - - - Moves to parent recorder. - - - - - Gets the recorded expectation or null. - - - - - Clear the replayer to call (and all its chain of replayers). - This also removes it from the list of expectations, so it will never be considered again - - - - - Get the expectation for this method on this object with this arguments - - - - - Gets the next expected calls string. - - - - - Handles the real getting of the recorded expectation or null. - - - - - Handle the real execution of this method for the derived class - - - - - Handle the real execution of this method for the derived class - - - - - Handle the real execution of this method for the derived class - - - - - Handle the real execution of this method for the derived class - - - - - Handle the real execution of this method for the derived class - - - - - Handle the real execution of this method for the derived class - - - - - Should this replayer be considered valid for this call? - - - - - This check the methods that were setup using the SetupResult.For() - or LastCall.Repeat.Any() and that bypass the whole expectation model. - - - - - Gets a value indicating whether this instance has expectations that weren't satisfied yet. - - - true if this instance has expectations; otherwise, false. - - - - - Handle the real execution of this method for the derived class - - - - - Ordered collection of methods, methods must arrive in specified order - in order to pass. - - - - - Unordered collection of method records, any expectation that exist - will be matched. - - - - - The parent recorder we have redirected to. - Useful for certain edge cases in orderring. - See: FieldProblem_Entropy for the details. - - - - - Creates a new instance. - - Parent recorder. - Repeatable methods - - - - Creates a new instance. - - - - - Records the specified call with the specified args on the mocked object. - - Mocked object. - Method. - Expectation. - - - - Get the expectation for this method on this object with this arguments - - Invocation for this method - Mocked object. - Method. - Args. - True is the call was recorded, false otherwise - - - - Gets the all expectations for a mocked object and method combination, - regardless of the expected arguments / callbacks / contraints. - - Mocked object. - Method. - List of all relevant expectation - - - - Gets the all expectations for proxy. - - Mocked object. - List of all relevant expectation - - - - Replaces the old expectation with the new expectation for the specified proxy/method pair. - This replace ALL expectations that equal to old expectations. - - Proxy. - Method. - Old expectation. - New expectation. - - - - Handle the real execution of this method for the derived class - - - - - Handles the real getting of the recorded expectation or null. - - - - - Handle the real execution of this method for the derived class - - - - - Gets the next expected calls string. - - - - - Create an exception for an unexpected method call. - - - - - Gets a value indicating whether this instance has expectations that weren't satisfied yet. - - - true if this instance has expectations; otherwise, false. - - - - - Creates a new instance. - - Parent recorder. - Repetable methods - - - - Creates a new instance. - - - - - Handles the real getting of the recorded expectation or null. - - - - - Get the expectation for this method on this object with this arguments - - - - - Gets the next expected calls string. - - - - - Hold an expectation for a method call on an object - - - - - Creates a new instance. - - Proxy. - Method. - Expectation. - - - - Determains if the object equal to this instance - - Obj. - - - - - Gets the hash code. - - - - - - Gets the proxy. - - - - - - Gets the method. - - - - - - Gets the expectation. - - - - - - Holds a pair of mocked object and a method - and allows to compare them against each other. - This allows us to have a distinction between mockOne.MyMethod() and - mockTwo.MyMethod()... - - - - - Creates a new instance. - - Proxy. - Method. - - - - Determains whatever obj equals to this instance. - ProxyMethodPairs are equals when they point to the same /instance/ of - an object, and to the same method. - - Obj. - - - - - Gets the hash code. - - - - - - Gets the proxy. - - - - - - Gets the method. - - - - - - Change the recorder from ordered to unordered and vice versa - - - - - Creates a new instance. - - - - - Disposes this instance. - - - - - Utility class for dealing with messing generics scenarios. - - - - - There are issues with trying to get this to work correctly with open generic types, since this is an edge case, - I am letting the runtime handle it. - - - - - Gets the real type, including de-constructing and constructing the type of generic - methods parameters. - - The type. - The invocation. - - - - - Because we need to support complex types here (simple generics were handled above) we - need to be aware of the following scenarios: - List[T] and List[Foo[T]] - - - - - Utility class for working with method calls. - - - - - Return the string representation of a method call and its arguments. - - The method - The method arguments - Invocation of the method, used to get the generics arguments - Delegate to format the parameter - The string representation of this method call - - - - Return the string representation of a method call and its arguments. - - The invocation of the method, used to get the generic parameters - The method - The method arguments - The string representation of this method call - - - - Delegate to format the argument for the string representation of - the method call. - - - - - Utility to get the default value for a type - - - - - The default value for a type. - Null for reference types and void - 0 for value types. - First element for enums - Note that we need to get the value even for opened generic types, such as those from - generic methods. - - Type. - The invocation. - the default value - - - - Defines constraints and return values for arguments of a mock. - Only use Arg inside a method call on a mock that is recording. - Example: - ExpectCall( - mock.foo( - Arg<int>.Is.GreaterThan(2), - Arg<string>.Is.Anything - )); - Use Arg.Text for string specific constraints - Use Arg<ListClass>.List for list specific constraints - - - - - - Register the predicate as a constraint for the current call. - - The predicate. - default(T) - - Allow you to use code to create constraints - - demo.AssertWasCalled(x => x.Bar(Arg{string}.Matches(a => a.StartsWith("b") && a.Contains("ba")))); - - - - - - Define a complex constraint for this argument by passing several constraints - combined with operators. (Use Is in simple cases.) - Example: Arg<string>.Matches(Is.Equal("Hello") || Text.EndsWith("u")); - - Constraints using Is, Text and List - Dummy to satisfy the compiler - - - - Define a Ref argument. - - Constraints for this argument - value returned by the mock - - - - - Define a out parameter. Use it together with the keyword out and use the - Dummy field available by the return value. - Example: mock.foo( out Arg<string>.Out("hello").Dummy ); - - - - - - - Define a simple constraint for this argument. (Use Matches in simple cases.) - Example: - Arg<int>.Is.Anthing - Arg<string>.Is.Equal("hello") - - - - - Define Constraints on list arguments. - - - - - Use the Arg class (without generic) to define Text constraints - - - - - Evaluate an equal constraint for . - - The object the parameter should equal to - - - - Define constraints on text arguments. - - - - - Used to manage the static state of the Arg<T> class"/> - - - - - Resets the static state - - - - - Returns return values for the out and ref parameters - Note: the array returned has the size of the number of out and ref - argument definitions - - - - - - Returns the constraints for all arguments. - Out arguments have an Is.Anything constraint and are also in the list. - - - - - - What should BackToRecord clear - - - - - Retain all expectations and behaviors and return to mock - - - - - All expectations - - - - - Event subscribers for this instance - - - - - Methods that should be forwarded to the base class implementation - - - - - Properties that should behave like properties - - - - - Remove all the behavior of the object - - - - - This delegate is compatible with the System.Func{T,R} signature - We have to define our own to get compatability with 2.0 - - - - - This class defines a lot of method signatures, which we will use - to allow compatability on net-2.0 - - - - - dummy - - - - - dummy - - - - - dummy - - - - - dummy - - - - - dummy - - - - - dummy - - - - - dummy - - - - - dummy - - - - - dummy - - - - - dummy - - - - - dummy - - - - - dummy - - - dummy - - - - - dummy - - - - - dummy - - - - - dummy - - - - - dummy - - - - - dummy - - - - - dummy - - - - - dummy - - - - - dummy - - - - - dummy - - - - - Allows expectations to be set on methods that should never be called. - For methods with void return value, you need to use LastCall or - DoNotExpect.Call() with a delegate. - - - - - Sets LastCall.Repeat.Never() on /any/ proxy on /any/ repository on the current thread. - This method if not safe for multi threading scenarios. - - - - - Accepts a delegate that will execute inside the method which - LastCall.Repeat.Never() will be applied to. - It is expected to be used with anonymous delegates / lambda expressions and only one - method should be called. - - - IService mockSrv = mocks.CreateMock(typeof(IService)) as IService; - DoNotExpect.Call(delegate{ mockSrv.Stop(); }); - ... - - - - - Allows to set expectation on methods that has return values. - For methods with void return value, you need to use LastCall - - - - - The method options for the last call on /any/ proxy on /any/ repository on the current thread. - This method if not safe for multi threading scenarios, use . - - - - - Accepts a delegate that will execute inside the method, and then return the resulting - instance. - It is expected to be used with anonymous delegates / lambda expressions and only one - method should be called. - - - IService mockSrv = mocks.CreateMock(typeof(IService)) as IService; - Expect.Call(delegate{ mockSrv.Start(); }).Throw(new NetworkException()); - ... - - - - - Get the method options for the last method call on the mockInstance. - - - - - A delegate that can be used to get better syntax on Expect.Call(delegate { foo.DoSomething(); }); - - - - - Allows to set various options for the last method call on - a specified object. - If the method has a return value, it's recommended to use Expect - - - - - Allows to get an interface to work on the last call. - - The mocked object - Interface that allows to set options for the last method call on this object - - - - Set the return value for the method. - - The object the method will return - IRepeat that defines how many times the method will return this value - - - - Set the return value for the method. This overload is needed for LastCall.Return(null) - - The object the method will return - IRepeat that defines how many times the method will return this value - - - - Throws the specified exception when the method is called. - - Exception to throw - - - - Ignores the arguments for this method. Any argument will be matched - againt this method. - - - - - Add constraints for the method's arguments. - - - - - Set a callback method for the last call - - - - - Set a callback method for the last call - - - - - Set a callback method for the last call - - - - - Set a callback method for the last call - - - - - Set a callback method for the last call - - - - - Set a callback method for the last call - - - - - Set a callback method for the last call - - - - - Set a callback method for the last call - - - - - Set a callback method for the last call - - - - - Set a callback method for the last call - - - - - Set a callback method for the last call - - - - - Set a callback method for the last call - - - - - Call the original method on the class, bypassing the mocking layers, for the last call. - - - - - Call the original method on the class, optionally bypassing the mocking layers, for the last call. - - - - - Set a delegate to be called when the expectation is matched. - The delegate return value will be returned from the expectation. - - - - - Gets an interface that will raise the last event when called. - - - - - Set the parameter values for out and ref parameters. - This is done using zero based indexing, and _ignoring_ any non out/ref parameter. - - - - - Documentation message for the expectation - - Message - - - - Use the property as a simple property, getting/setting the values without - causing mock expectations. - - - - - Better syntax to define repeats. - - - - - This is a data structure that is used by - to pass - the current method to the relevant delegate - - - - - Initializes a new instance of the class. - - The invocation. - - - - Gets the args for this method invocation - - - - - Gets or sets the return value for this method invocation - - The return value. - - - - Accessor for the current mocker - - - - - The current mocker - - - - - Creates proxied instances of types. - - - Adds optional new usage: - using(mockRepository.Record()) { - Expect.Call(mock.Method()).Return(retVal); - } - using(mockRepository.Playback()) { - // Execute code - } - N.B. mockRepository.ReplayAll() and mockRepository.VerifyAll() - calls are taken care of by Record/Playback - - - - - This is a map of types to ProxyGenerators. - - - - - This is used to record the last repository that has a method called on it. - - - - - this is used to get to the last proxy on this repository. - - - - - For mock delegates, maps the proxy instance from intercepted invocations - back to the delegate that was originally returned to client code, if any. - - - - - All the proxies in the mock repositories - - - - - This is here because we can't put it in any of the recorders, since repeatable methods - have no orderring, and if we try to handle them using the usual manner, we would get into - wierd situations where repeatable method that was defined in an orderring block doesn't - exists until we enter this block. - - - - - Creates a new instance. - - - - - Move the repository to ordered mode - - - - - Move the repository to un-ordered mode - - - - - Creates a mock for the specified type. - - Type. - Arguments for the class' constructor, if mocking a concrete class - - - - Creates a strict mock for the specified type. - - Type. - Arguments for the class' constructor, if mocking a concrete class - - - - Creates a remoting mock for the specified type. - - Type. - Arguments for the class' constructor, if mocking a concrete class - - - - Creates a strict remoting mock for the specified type. - - Type. - Arguments for the class' constructor, if mocking a concrete class - - - - Creates a remoting mock for the specified type. - - - Arguments for the class' constructor, if mocking a concrete class - - - - - Creates a strict remoting mock for the specified type. - - - Arguments for the class' constructor, if mocking a concrete class - - - - - Creates a mock from several types, with strict semantics. - Only may be a class. - - - - - Creates a strict mock from several types, with strict semantics. - Only may be a class. - - - - - Creates a mock from several types, with strict semantics. - Only may be a class. - - The main type to mock. - Extra interface types to mock. - Arguments for the class' constructor, if mocking a concrete class. - - - - Creates a strict mock from several types, with strict semantics. - Only may be a class. - - The main type to mock. - Extra interface types to mock. - Arguments for the class' constructor, if mocking a concrete class. - - - - Creates a mock from several types, with dynamic semantics. - Only may be a class. - - The main type to mock. - Extra interface types to mock. - - - - Creates a mock from several types, with dynamic semantics. - Only may be a class. - - The main type to mock. - Extra interface types to mock. - Arguments for the class' constructor, if mocking a concrete class. - - - - Creates a dynamic mock for the specified type. - - Type. - Arguments for the class' constructor, if mocking a concrete class - - - - Creates a dynamic mock for the specified type. - - Type. - Arguments for the class' constructor, if mocking a concrete class - - - - Creates a dynamic mock for the specified type. - - - Arguments for the class' constructor, if mocking a concrete class - - - - - Creates a mock object that defaults to calling the class methods. - - Type. - Arguments for the class' constructor. - - - - Creates a mock object that defaults to calling the class methods. - - Type. - Extra interface types to mock. - - - - Creates a mock object that defaults to calling the class methods. - - Type. - Extra interface types to mock. - Arguments for the class' constructor. - - - - Creates a mock object using remoting proxies - - Type to mock - must be MarshalByRefObject - Mock object - Proxy mock can mock non-virtual methods, but not static methods - Creates the mock state for this proxy - - - - Cause the mock state to change to replay, any further call is compared to the - ones that were called in the record state. - - the object to move to replay state - - - - Cause the mock state to change to replay, any further call is compared to the - ones that were called in the record state. - - the object to move to replay state - - - - - Move the mocked object back to record state. - Will delete all current expectations! - - - - - Move the mocked object back to record state. - Optionally, can delete all current expectations, but allows more granularity about how - it would behave with regard to the object state. - - - - - Verify that all the expectations for this object were fulfilled. - - the object to verify the expectations for - - - - Get the method options for the last call on - mockedInstance. - - The mock object - Method options for the last call - - - - Maps an invocation proxy back to the mock object instance that was originally - returned to client code which might have been a delegate to this proxy. - - The mock object proxy from the intercepted invocation - The mock object - - - - This is provided to allow advance extention functionality, where Rhino Mocks standard - functionality is not enough. - - The type to mock - Delegate that create the first state of the mocked object (usualy the record state). - Additional types to be implemented, this can be only interfaces - optional arguments for the constructor - - - - - Method: GetMockedObject - Get an IProxy from a mocked object instance, or throws if the - object is not a mock object. - - - - - Method: GetMockedObjectOrNull - Get an IProxy from a mocked object instance, or null if the - object is not a mock object. - - - - - Pops the recorder. - - - - - Pushes the recorder. - - New recorder. - - - - All the mock objects in this repository will be moved - to record state. - - - - - All the mock objects in this repository will be moved - to record state. - - - - - Replay all the mocks from this repository - - - - - Verify all the mocks from this repository - - - - - Gets the proxy generator for a specific type. Having a single ProxyGenerator - with multiple types linearly degrades the performance so this implementation - keeps one ProxyGenerator per type. - - - - - Set the exception to be thrown when verified is called. - - - - - Creates a mock for the spesified type. - - Arguments for the class' constructor, if mocking a concrete class - - - - Creates a strict mock for the spesified type. - - Arguments for the class' constructor, if mocking a concrete class - - - - Creates a dynamic mock for the specified type. - - Arguments for the class' constructor, if mocking a concrete class - - - - Creates a mock object from several types. - - - - - Creates a strict mock object from several types. - - - - - Create a mock object from several types with dynamic semantics. - - - - - Create a mock object from several types with partial semantics. - - - - - Create a mock object from several types with strict semantics. - - Extra interface types to mock. - Arguments for the class' constructor, if mocking a concrete class - - - - Create a strict mock object from several types with strict semantics. - - Extra interface types to mock. - Arguments for the class' constructor, if mocking a concrete class - - - - Create a mock object from several types with dynamic semantics. - - Extra interface types to mock. - Arguments for the class' constructor, if mocking a concrete class - - - - Create a mock object from several types with partial semantics. - - Extra interface types to mock. - Arguments for the class' constructor, if mocking a concrete class - - - - Create a mock object with from a class that defaults to calling the class methods - - Arguments for the class' constructor, if mocking a concrete class - - - - Create a stub object, one that has properties and events ready for use, and - can have methods called on it. It requires an explicit step in order to create - an expectation for a stub. - - The arguments for constructor. - - - - Create a stub object, one that has properties and events ready for use, and - can have methods called on it. It requires an explicit step in order to create - an expectation for a stub. - - The type. - The arguments for constructor. - - - - - Generates a stub without mock repository - - The arguments for constructor. - - - - - Generates the stub without mock repository - - The type. - The arguments for constructor. - - - - Returns true if the passed mock is currently in replay mode. - - The mock to test. - True if the mock is in replay mode, false otherwise. - - - - Generate a mock object without needing the mock repository - - - - - Determines whether the specified proxy is a stub. - - The proxy. - - - - Register a call on a prperty behavior - - - - - - - - - - - - - - - - Gets the recorder. - - - - - - Gets the replayer for this repository. - - - - - - Gets the last proxy which had a method call. - - - - - Delegate: CreateMockState - This is used internally to cleanly handle the creation of different - RecordMockStates. - - - - - Used for [assembly: InternalsVisibleTo(RhinoMocks.StrongName)] - Used for [assembly: InternalsVisibleTo(RhinoMocks.NormalName)] - - - - - Strong name for the Dynamic Proxy assemblies. Used for InternalsVisibleTo specification. - - - - - Normal name for dynamic proxy assemblies. Used for InternalsVisibleTo specification. - - - - - Logs all method calls for methods - - - - - A set of extension methods that adds Arrange Act Assert mode to Rhino Mocks - - - - - Create an expectation on this mock for this action to occur - - - The mock. - The action. - - - - - Reset all expectations on this mock object - - - The mock. - - - - Reset the selected expectation on this mock object - - - The mock. - The options to reset the expectations on this mock. - - - - Cause the mock state to change to replay, any further call is compared to the - ones that were called in the record state. - - the mocked object to move to replay state - - - - Gets the mock repository for this specificied mock object - - - The mock. - - - - - Create an expectation on this mock for this action to occur - - - - The mock. - The action. - - - - - Tell the mock object to perform a certain action when a matching - method is called. - Does not create an expectation for this method. - - - The mock. - The action. - - - - - Tell the mock object to perform a certain action when a matching - method is called. - Does not create an expectation for this method. - - - - The mock. - The action. - - - - - Gets the arguments for calls made on this mock object and the method that was called - in the action. - - - The mock. - The action. - - - Here we will get all the arguments for all the calls made to DoSomething(int) - - var argsForCalls = foo54.GetArgumentsForCallsMadeOn(x => x.DoSomething(0)) - - - - - - Gets the arguments for calls made on this mock object and the method that was called - in the action and matches the given constraints - - - The mock. - The action. - The setup constraints. - - - Here we will get all the arguments for all the calls made to DoSomething(int) - - var argsForCalls = foo54.GetArgumentsForCallsMadeOn(x => x.DoSomething(0)) - - - - - - Asserts that a particular method was called on this mock object - - - The mock. - The action. - - - - Asserts that a particular method was called on this mock object that match - a particular constraint set. - - - The mock. - The action. - The setup constraints. - - - - Asserts that a particular method was NOT called on this mock object - - - The mock. - The action. - - - - Asserts that a particular method was NOT called on this mock object that match - a particular constraint set. - - - The mock. - The action. - The setup constraints. - - - - Finds the approprite implementation type of this item. - This is the class or an interface outside of the rhino mocks. - - The mocked obj. - - - - - Verifies all expectations on this mock object - - The mock object. - - - - Gets the event raiser for the event that was called in the action passed - - The type of the event source. - The mock object. - The event subscription. - - - - - Raise the specified event using the passed arguments. - The even is extracted from the passed labmda - - The type of the event source. - The mock object. - The event subscription. - The sender. - The instance containing the event data. - - - - Raise the specified event using the passed arguments. - The even is extracted from the passed labmda - - The type of the event source. - The mock object. - The event subscription. - The args. - - - - Fake type that disallow creating it. - Should have been System.Type, but we can't use it. - - - - - Setup method calls to repeat any number of times. - - - - - Get the method options and set the last method call to repeat - any number of times. - This also means that the method would transcend ordering - - - - - Get the method options for the last method call on the mockInstance and set it - to repeat any number of times. - This also means that the method would transcend ordering - - - - - Allows easier access to MockRepository, works closely with Mocker.Current to - allow access to a context where the mock repository is automatially verified at - the end of the code block. - - - - - Initialize a code block where Mocker.Current is initialized. - At the end of the code block, all the expectation will be verified. - This overload will create a new MockRepository. - - The code that will be executed under the mock context - - - - Initialize a code block where Mocker.Current is initialized. - At the end of the code block, all the expectation will be verified. - This overload will create a new MockRepository. - - The mock repository to use, at the end of the code block, VerifyAll() will be called on the repository. - The code that will be executed under the mock context - - - - Create a FluentMocker - - The mock repository to use. - - - - A method with no arguments and no return value that will be called under the mock context. - - - - - FluentMocker implements some kind of fluent interface attempt - for saying "With the Mocks [mocks], Expecting (in same order) [things] verify [that]." - - - - - Interface to verify previously defined expectations - - - - - Verifies if a piece of code - - - - - Defines unordered expectations - - A delegate describing the expectations - an IMockVerifier - - - - Defines ordered expectations - - A delegate describing the expectations - an IMockVerifier - - - - Verifies previously defined expectations - - - - diff --git a/sharedlib/Rhino Mocks/acknowledgements.txt b/sharedlib/Rhino Mocks/acknowledgements.txt deleted file mode 100644 index 834b0b0..0000000 --- a/sharedlib/Rhino Mocks/acknowledgements.txt +++ /dev/null @@ -1,2 +0,0 @@ -Rhino Mocks is using Castle Dynamic Proxy (http://www.castleproject.org/dynamicproxy/index.html) to handle proxying the types it needs to mock. -The Dynamic Proxy project has been invaluable resource and made creating Rhino Mocks possible. \ No newline at end of file diff --git a/sharedlib/Rhino Mocks/license.txt b/sharedlib/Rhino Mocks/license.txt deleted file mode 100644 index 33edd59..0000000 --- a/sharedlib/Rhino Mocks/license.txt +++ /dev/null @@ -1,25 +0,0 @@ -Copyright (c) 2005 - 2008 Ayende Rahien (ayende@ayende.com) -All rights reserved. - -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 Ayende Rahien 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 COPYRIGHT HOLDERS AND CONTRIBUTORS "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 COPYRIGHT OWNER OR 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. \ No newline at end of file diff --git a/sharedlib/Spring.Net/Common.Logging.dll b/sharedlib/Spring.Net/Common.Logging.dll deleted file mode 100644 index d7a8f1582ac8a04a0417db7d750c7268b3ecaefa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28672 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/}XibZ6@5#*jr07)hg=s<`Ulq8>98-x;6-U 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

Mm2@w&bg7Sf%dhHW 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:nCDn^ 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í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

)@Et6P%^I{ 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 diff --git a/sharedlib/Spring.Net/Spring.Core.xml b/sharedlib/Spring.Net/Spring.Core.xml deleted file mode 100644 index f0d2a59..0000000 --- a/sharedlib/Spring.Net/Spring.Core.xml +++ /dev/null @@ -1,44391 +0,0 @@ - - - - Spring.Core - - - -

- An abstract implementation that can - be used as base class for concrete implementations. - - Aleksandar Seovic - Erich Eichinger - - - - Defines a contract that all cache implementations have to fulfill. - - Aleksandar Seovic - Erich Eichinger - - - - Retrieves an item from the cache. - - - Item key. - - - Item for the specified , or null. - - - - - Removes an item from the cache. - - - Item key. - - - - - Removes collection of items from the cache. - - - Collection of keys to remove. - - - - - Removes all items from the cache. - - - - - Inserts an item into the cache. - - - Items inserted using this method have no expiration time - and default cache priority. - - - Item key. - - - Item value. - - - - - Inserts an item into the cache. - - - Items inserted using this method have default cache priority. - - - Item key. - - - Item value. - - - Item's time-to-live. - - - - - Gets the number of items in the cache. - - - - - Gets a collection of all cache item keys. - - - - - Retrieves an item from the cache. - - - Item key. - - - Item for the specified , or null. - - - - - Removes an item from the cache. - - - Item key. - - - - - Removes collection of items from the cache. - - - Collection of keys to remove. - - - - - Removes all items from the cache. - - - - - Inserts an item into the cache. - - - Items inserted using this method use the default - - - Item key. - - - Item value. - - - - - Inserts an item into the cache. - - - If equals , - or is true, this cache - instance's value will be applied. - - - Item key. - - - Item value. - - - Item's time-to-live (TTL). - - - - - Actually does the cache implementation specific insert operation into the cache. - - - Items inserted using this method have default cache priority. - - - Item key. - - - Item value. - - - Item's time-to-live (TTL). - - - - - Gets/Set the Default time-to-live (TTL) for items inserted into this cache. - Used by - - - - - Gets/Sets a value, whether the this cache instance's - shall be applied to all items, regardless of their individual TTL - when is called. - - - - - Gets the number of items in the cache. - - - May be overridden by subclasses for cache-specific efficient implementation. - - - - - Gets a collection of all cache item keys. - - - - - Abstract base class containing shared properties for all cache attributes. - - Aleksandar Seovic - - - - The instance used to parse values. - - - - - - - Creates an attribute instance. - - - - - Creates an attribute instance. - - - The name of the cache to use. - - - An expression string that should be evaluated in order to determine - the cache key for the item. - - - - - Gets or sets the name of the cache to use. - - - The name of the cache to use. - - - - - Gets or sets a SpEL expression that should be evaluated in order - to determine the cache key for the item. - - - An expression string that should be evaluated in order to determine - the cache key for the item. - - - - - Gets an expression instance that should be evaluated in order - to determine the cache key for the item. - - - An expression instance that should be evaluated in order to determine - the cache key for the item. - - - - - Gets or sets a SpEL expression that should be evaluated in order - to determine whether the item should be cached. - - - An expression string that should be evaluated in order to determine - whether the item should be cached. - - - - - Gets an expression instance that should be evaluated in order - to determine whether the item should be cached. - - - An expression instance that should be evaluated in order to determine - whether the item should be cached. - - - - - The amount of time an object should remain in the cache. - - - If no TTL is specified, the default TTL defined by the - cache's policy will be applied. - - - The amount of time object should remain in the cache - formatted to be recognizable by . - - - - - The amount of time an object should remain in the cache (in seconds). - - - If no TTL is specified, the default TTL defined by the - cache's policy will be applied. - - - The amount of time object should remain in the cache (in seconds). - - - - - This attribute should be used to mark methods whose argument(s) - need to be cached. - - -

- This attribute allows application developers to specify that an argument - of the method should be cached, but it will not do any caching by itself. -

-

- In order to actually cache the result, an application developer - must apply a Spring.Aspects.Cache.CacheParameterAdvice to - all of the members that have this attribute defined. -

-

- You can specify this attribute multiple times on the same method in order to - cache several method parameters. -

-
- Aleksandar Seovic -
- - - Creates an attribute instance. - - - - - Creates an attribute instance. - - - The name of the cache to use. - - - An expression string that should be evaluated in order to determine - the cache key for the item. - - - - - This attribute should be used to mark methods whose result - needs to be cached. - - -

- This attribute allows application developers to mark that a result - of the method invocation should be cached, but it will not do any - caching by itself. -

-

- In order to actually cache the result, an application developer - must apply a Spring.Aspects.Cache.CacheResultAdvice to - all of the members that have this attribute defined. -

-
- Aleksandar Seovic -
- - - Creates an attribute instance. - - - - - Creates an attribute instance. - - - The name of the cache to use. - - - An expression string that should be evaluated in order to determine - the cache key for the item. - - - - - This attribute should be used with methods that return an - in order to cache each item separately. - - -

- This attribute allows application developers to specify that each item - from the collection returned by the method should be cached, - but it will not do any caching by itself. -

-

- In order to actually cache the result, an application developer - must apply a Spring.Aspects.Cache.CacheResultAdvice to - all of the members that have this attribute defined. -

-
- Aleksandar Seovic -
- - - Creates an attribute instance. - - - - - Creates an attribute instance. - - - The name of the cache to use. - - - An expression string that should be evaluated in order to determine - the cache key for the item. - - - - - This attribute should be used to mark method that should - invalidate one or more cache items when invoked. - - -

- This attribute allows application developers to specify that some - cache items should be evicted from cache when the method is invoked, - but it will not do any eviction by itself. -

-

- In order to actually evict cache items, an application developer - must apply a Spring.Aspects.Cache.InvalidateCacheAdvice to - all of the members that have this attribute defined. -

-
- Aleksandar Seovic -
- - - Creates an attribute instance. - - - - - Creates an attribute instance. - - - The name of the cache to use. - - - - - Gets or sets the name of the cache to use. - - - The name of the cache to use. - - - - - Gets or sets a SpEL expression that should be evaluated in order - to determine the keys for the items that should be evicted. - - - An expression string that should be evaluated in order - to determine the keys for the items that should be evicted. - - - - - Gets an expression instance that should be evaluated in order - to determine the keys for the items that should be evicted. - - - An expression instance that should be evaluated in order - to determine the keys for the items that should be evicted. - - - - - Gets or sets a SpEL expression that should be evaluated in order - to determine whether items should be evicted. - - - An expression string that should be evaluated in order to determine - whether items should be evicted. - - - - - Gets an expression instance that should be evaluated in order - to determine whether items should be evicted. - - - An expression instance that should be evaluated in order to determine - whether items should be evicted. - - - - - A simple implementation backed by a dictionary that - never expires cache items. - - Aleksandar Seovic - - - - Retrieves an item from the cache. - - - Item key. - - - Item for the specified , or null. - - - - - Removes an item from the cache. - - - Item key. - - - - - Removes collection of items from the cache. - - - Collection of keys to remove. - - - - - Removes all items from the cache. - - - - - Inserts an item into the cache. - - - Item key. - - - Item value. - - - Item's time-to-live (TTL) in milliseconds. - - - - - Gets the number of items in the cache. - - - - - Gets a collection of all cache item keys. - - - - - This class provides skeletal implementations of some - operations. - - -

- The implementations in this class are appropriate when the base - implementation does not allow elements. The methods - , - , and - are based on - the , - , and - methods - respectively but throw exceptions instead of indicating failure via - or returns. -

- An implementation that extends this class must - minimally define a method - which does - not permit the insertion of elements, along with methods - , and - . Typically, - additional methods will be overridden as well. If these requirements - cannot be met, consider instead subclassing - }. -

-
- Doug Lea - Griffin Caprio (.NET) -
- - - A collection designed for holding elements prior to processing. - - -

- Besides basic operations, - queues provide additional insertion, extraction, and inspection - operations. -

-

- Each of these methods exists in two forms: one throws - an exception if the operation fails, the other returns a special - value (either or , depending on the - operation). The latter form of the insert operation is designed - specifically for use with capacity-restricted - implementations; in most implementations, insert operations cannot - fail. -

-

- Queues typically, but do not necessarily, order elements in a - FIFO (first-in-first-out) manner. Among the exceptions are - priority queues, which order elements according to a supplied - comparator, or the elements' natural ordering, and LIFO queues (or - stacks) which order the elements LIFO (last-in-first-out). - Whatever the ordering used, the head of the queue is that - element which would be removed by a call to - or - . In a FIFO queue, all new - elements are inserted at the tail of the queue. Other kinds of queues may - use different placement rules. Every implementation - must specify its ordering properties. -

-

- The method inserts an - element if possible, otherwise returning . This differs from the - method, which can fail to - add an element only by throwing an exception. The - method is designed for - use when failure is a normal, rather than exceptional occurrence, for example, - in fixed-capacity (or "bounded" queues. -

-

- The - methods remove and - return the head of the queue. Exactly which element is removed from the - queue is a function of the queue's ordering policy, which differs from - implementation to implementation. The - and - methods differ only in their - behavior when the queue is empty: the - method throws an exception, - while the method returns - . -

-

- The and - methods return, but do - not remove, the head of the queue. -

-

- The interface does not define the blocking queue - methods, which are common in concurrent programming. -

-

- implementations generally do not allow insertion - of elements, although some implementations, such as - a linked list, do not prohibit the insertion of . - Even in the implementations that permit it, should - not be inserted into a , as is also - used as a special return value by the - method to - indicate that the queue contains no elements. -

-

- implementations generally do not define - element-based versions of methods - and , but instead inherit the - identity based versions from the class object, because element-based equality - is not always well-defined for queues with the same elements but different - ordering properties. -

-

- Based on the back port of JCP JSR-166. -

-
- Doug Lea - Griffin Caprio (.NET) -
- - - Inserts the specified element into this queue if it is possible to do so - immediately without violating capacity restrictions, returning - upon success and throwing an - if no space is - currently available. - - - The element to add. - - - if successful. - - - If the element cannot be added at this time due to capacity restrictions. - - - If the class of the supplied prevents it - from being added to this queue. - - - If the specified element is and this queue does not - permit elements. - - - If some property of the supplied prevents - it from being added to this queue. - - - - - Inserts the specified element into this queue if it is possible to do - so immediately without violating capacity restrictions. - - -

- When using a capacity-restricted queue, this method is generally - preferable to , - which can fail to insert an element only by throwing an exception. -

-
- - The element to add. - - - if the element was added to this queue. - - - If the element cannot be added at this time due to capacity restrictions. - - - If the supplied is - . - - - If some property of the supplied prevents - it from being added to this queue. - -
- - - Retrieves and removes the head of this queue. - - -

- This method differs from - only in that it throws an exception if this queue is empty. -

-
- - The head of this queue - - if this queue is empty -
- - - Retrieves and removes the head of this queue, - or returns if this queue is empty. - - - The head of this queue, or if this queue is empty. - - - - - Retrieves, but does not remove, the head of this queue. - - -

- This method differs from - only in that it throws an exception if this queue is empty. -

-
- - The head of this queue. - - If this queue is empty. -
- - - Retrieves, but does not remove, the head of this queue, - or returns if this queue is empty. - - - The head of this queue, or if this queue is empty. - - - - - Returns if there are no elements in the , otherwise. - - - - - Creates a new instance of the class. - - -

- This is an abstract class, and as such has no publicly - visible constructors. -

-
-
- - - Inserts the specified element into this queue if it is possible - to do so immediately without violating capacity restrictions. - - - The element to add. - - - if successful. - - - If the element cannot be added at this time due to capacity restrictions. - - - - - Retrieves and removes the head of this queue. - - -

- This method differs from - only in that - it throws an exception if this queue is empty. -

-
- - The head of this queue - - - If this queue is empty. - -
- - - Retrieves, but does not remove, the head of this queue. - - -

- This method differs from - only in that it throws an exception if this queue is empty. -

-

- ALso note that this implementation returns the result of - unless the queue - is empty. -

-
- The head of this queue. - - If this queue is empty. - -
- - - Removes all of the elements from this queue. - - -

- The queue will be empty after this call returns. -

-

- This implementation repeatedly invokes - until it - returns . -

-
-
- - - Adds all of the elements in the supplied - to this queue. - - -

- Attempts to - - of a queue to itself result in . - Further, the behavior of this operation is undefined if the specified - collection is modified while the operation is in progress. -

-

- This implementation iterates over the specified collection, - and adds each element returned by the iterator to this queue, in turn. - An exception encountered while trying to add an element (including, - in particular, a element) may result in only some - of the elements having been successfully added when the associated - exception is thrown. -

-
- - The collection containing the elements to be added to this queue. - - - if this queue changed as a result of the call. - - - If the supplied or any one of its elements are . - - - If the collection is the current or - the collection size is greater than the queue capacity. - -
- - - Inserts the specified element into this queue if it is possible to do - so immediately without violating capacity restrictions. - - -

- When using a capacity-restricted queue, this method is generally - preferable to , - which can fail to insert an element only by throwing an exception. -

-
- - The element to add. - - - if the element was added to this queue. - - - If the element cannot be added at this time due to capacity restrictions. - - - If the supplied is - . - - - If some property of the supplied prevents - it from being added to this queue. - -
- - - Retrieves, but does not remove, the head of this queue, - or returns if this queue is empty. - - - The head of this queue, or if this queue is empty. - - - - - Retrieves and removes the head of this queue, - or returns if this queue is empty. - - - The head of this queue, or if this queue is empty. - - - - - Copies the elements of the to an , starting at a particular index. - - The one-dimensional that is the destination of the elements copied from . The must have zero-based indexing. - The zero-based index in array at which copying begins. - array is null. - index is less than zero. - array is multidimensional.-or- index is equal to or greater than the length of array.-or- The number of elements in the source is greater than the available space from index to the end of the destination array. - The type of the source cannot be cast automatically to the type of the destination array. 2 - - - - Returns an enumerator that iterates through a collection. - - - An object that can be used to iterate through the collection. - - - - - Returns if there are no elements in the , otherwise. - - - - - Returns the current capacity of this queue. - - - - - Gets the number of elements contained in the . - - - The number of elements contained in the . - - - - - Gets an object that can be used to synchronize access to the . - - - An object that can be used to synchronize access to the . - - - - - Gets a value indicating whether access to the is synchronized (thread safe). - - - true if access to the is synchronized (thread safe); otherwise, false. - - - - - Provides a performance improved hashtable with case-insensitive (string-only! based) key handling. - - Erich Eichinger - - - - Creates a case-insensitive hashtable using . - - - - - Creates a case-insensitive hashtable using the given . - - the to calculate the hashcode - - - - Creates a case-insensitive hashtable using the given , initially - populated with entries from another dictionary. - - the dictionary to copy entries from - the to calculate the hashcode - - - - Initializes a new, empty instance of the class that is serializable using the specified and objects. - - A object containing the source and destination of the serialized stream associated with the . - A object containing the information required to serialize the object. - info is null. - - - - Implements the interface and returns the data needed to serialize the . - - - A object containing the source and destination of the serialized stream associated with the . - A object containing the information required to serialize the . - info is null. - - - - Calculate the hashcode of the given string key, using the configured culture. - - - - - - - Compares two keys - - - - - Creates a shallow copy of the current instance. - - - - - is an - class that supports the creation of new - types where the underlying data - store is an instance. - - -

- You can use any object that implements the - interface to hold set - data. You can define your own, or you can use one of the objects - provided in the framework. The type of - you - choose will affect both the performance and the behavior of the - using it. -

-

- This object overrides the method, - but not the method, because - the class is mutable. - Therefore, it is not safe to use as a key value in a dictionary. -

-

- To make a typed based on your - own , simply derive a new - class with a constructor that takes no parameters. Some - implmentations cannot be defined - with a default constructor. If this is the case for your class, you - will need to override clone as well. -

-

- It is also standard practice that at least one of your constructors - takes an or an - as an argument. -

-
- -
- - - A collection that contains no duplicate elements. - - - - - - A collection that contains no duplicate elements. - - -

- This interface models the mathematical - abstraction. The order of - elements in a set is dependant on (a)the data-structure implementation, and - (b)the implementation of the various - methods, and thus is not - guaranteed. -

-

- overrides the - method to test for "equivalency": - whether the two sets contain the same elements. The "==" and "!=" - operators are not overridden by design, since it is often desirable to - compare object references for equality. -

-

- Also, the method is not - implemented on any of the set implementations, since none of them are - truly immutable. This is by design, and it is the way almost all - collections in the .NET framework function. So as a general rule, don't - store collection objects inside - instances. You would typically want to use a keyed - instead. -

-

- None of the implementations in - this library are guaranteed to be thread-safe in any way unless wrapped - in a . -

-

- The following table summarizes the binary operators that are supported - by the class. -

- - - Operation - Description - Method - - - Union (OR) - - Element included in result if it exists in either A OR - B. - - Union() - - - Intersection (AND) - - Element included in result if it exists in both A AND - B. - - InterSect() - - - Exclusive Or (XOR) - - Element included in result if it exists in one, but not both, - of A and B. - - ExclusiveOr() - - - Minus (n/a) - - Take all the elements in A. Now, if any of them exist in - B, remove them. Note that unlike the other operators, - A - B is not the same as B - A. - - Minus() - - -
-
- - - Performs a "union" of the two sets, where all the elements - in both sets are present. - - -

- That is, the element is included if it is in either - or this set. Neither this set nor the input - set are modified during the operation. The return value is a - clone of this set with the extra elements added in. -

-
- A collection of elements. - - A new containing the union of - this with the specified - collection. Neither of the input objects is modified by the union. - -
- - - Performs an "intersection" of the two sets, where only the elements - that are present in both sets remain. - - -

- That is, the element is included if it exists in both sets. The - Intersect() operation does not modify the input sets. It - returns a clone of this set with the appropriate elements - removed. -

-
- A set of elements. - - The intersection of this set with . - -
- - - Performs a "minus" of this set from the - set. - - -

- This returns a set of all the elements in set - , removing the elements that are also in - this set. The original sets are not modified during this operation. - The result set is a clone of this - containing the elements from - the operation. -

-
- A set of elements. - - A set containing the elements from this set with the elements in - removed. - -
- - - Performs an "exclusive-or" of the two sets, keeping only those - elements that are in one of the sets, but not in both. - - -

- The original sets are not modified during this operation. The - result set is a clone of this set containing the elements - from the exclusive-or operation. -

-
- A set of elements. - - A set containing the result of - ^ this. - -
- - - Returns if this set contains the specified - element. - - The element to look for. - - if this set contains the specified element. - - - - - Returns if the set contains all the - elements in the specified collection. - - A collection of objects. - - if the set contains all the elements in the - specified collection. - - - - - Adds the specified element to this set if it is not already present. - - The object to add to the set. - - is the object was added, - if the object was already present. - - - - - Adds all the elements in the specified collection to the set if - they are not already present. - - A collection of objects to add to the set. - - is the set changed as a result of this - operation. - - - - - Removes the specified element from the set. - - The element to be removed. - - if the set contained the specified element. - - - - - Remove all the specified elements from this set, if they exist in - this set. - - A collection of elements to remove. - - if the set was modified as a result of this - operation. - - - - - Retains only the elements in this set that are contained in the - specified collection. - - - The collection that defines the set of elements to be retained. - - - if this set changed as a result of this - operation. - - - - - Removes all objects from this set. - - - - - Returns if this set contains no elements. - - - - - Performs a "union" of the two sets, where all the elements - in both sets are present. - - A collection of elements. - - A new containing the union of - this with the specified - collection. Neither of the input objects is modified by the union. - - - - - - Performs a "union" of two sets, where all the elements in both are - present. - - -

- That is, the element is included if it is in either - or . The return - value is a clone of one of the sets ( - if it is not ) with elements of the other set - added in. Neither of the input sets is modified by the operation. -

-
- A set of elements. - A set of elements. - - A set containing the union of the input sets; - if both sets are . - -
- - - Performs a "union" of two sets, where all the elements in both are - present. - - A set of elements. - A set of elements. - - A set containing the union of the input sets; - if both sets are . - - - - - - Performs an "intersection" of the two sets, where only the elements - that are present in both sets remain. - - A set of elements. - - The intersection of this set with . - - - - - - Performs an "intersection" of the two sets, where only the elements - that are present in both sets remain. - - -

- That is, the element is included only if it exists in both - and . Neither input - object is modified by the operation. The result object is a - clone of one of the input objects ( - if it is not ) containing the elements from - the intersect operation. -

-
- A set of elements. - A set of elements. - - The intersection of the two input sets; if - both sets are . - -
- - - Performs an "intersection" of the two sets, where only the elements - that are present in both sets remain. - - A set of elements. - A set of elements. - - The intersection of the two input sets; if - both sets are . - - - - - - Performs a "minus" of this set from the - set. - - A set of elements. - - A set containing the elements from this set with the elements in - removed. - - - - - - Performs a "minus" of set from set - . - - -

- This returns a set of all the elements in set - , removing the elements that are also in - set . The original sets are not modified - during this operation. The result set is a clone of set - containing the elements from the operation. -

-
- A set of elements. - A set of elements. - - A set containing - - elements. - if is - . - -
- - - Performs a "minus" of set from set - . - - A set of elements. - A set of elements. - - A set containing - - elements. - if is - . - - - - - - Performs an "exclusive-or" of the two sets, keeping only those - elements that are in one of the sets, but not in both. - - A set of elements. - - A set containing the result of - ^ this. - - - - - - Performs an "exclusive-or" of the two sets, keeping only those - elements that are in one of the sets, but not in both. - - -

- The original sets are not modified during this operation. The - result set is a clone of one of the sets ( - if it is not ) - containing the elements from the exclusive-or operation. -

-
- A set of elements. - A set of elements. - - A set containing the result of - ^ . - if both sets are . - -
- - - Performs an "exclusive-or" of the two sets, keeping only those - elements that are in one of the sets, but not in both. - - A set of elements. - A set of elements. - - A set containing the result of - ^ . - if both sets are . - - - - - - Adds the specified element to this set if it is not already present. - - The object to add to the set. - - is the object was added, - if the object was already present. - - - - - Adds all the elements in the specified collection to the set if - they are not already present. - - A collection of objects to add to the set. - - is the set changed as a result of this - operation. - - - - - Removes all objects from this set. - - - - - Returns if this set contains the specified - element. - - The element to look for. - - if this set contains the specified element. - - - - - Returns if the set contains all the - elements in the specified collection. - - A collection of objects. - - if the set contains all the elements in the - specified collection. - - - - - Removes the specified element from the set. - - The element to be removed. - - if the set contained the specified element. - - - - - Remove all the specified elements from this set, if they exist in - this set. - - A collection of elements to remove. - - if the set was modified as a result of this - operation. - - - - - Retains only the elements in this set that are contained in the - specified collection. - - - The collection that defines the set of elements to be retained. - - - if this set changed as a result of this - operation. - - - - - Returns a clone of the - instance. - - -

- This will work for derived - classes if the derived class implements a constructor that takes no - arguments. -

-
- A clone of this object. -
- - - Copies the elements in the to - an array. - - -

- The type of array needs to be compatible with the objects in the - , obviously. -

-
- - An array that will be the target of the copy operation. - - - The zero-based index where copying will start. - -
- - - Gets an enumerator for the elements in the - . - - - An over the elements - in the . - - - - - This method will test the - against another for - "equality". - - -

- In this case, "equality" means that the two sets contain the same - elements. The "==" and "!=" operators are not overridden by design. - If you wish to check for "equivalent" - instances, use - Equals(). If you wish to check to see if two references are - actually the same object, use "==" and "!=". -

-
- - A object to compare to. - - - if the two sets contain the same elements. - -
- - - Gets the hashcode for the object. - - - - - Returns if this set contains no elements. - - - - - The number of elements currently contained in this collection. - - - - - Returns if the - is synchronized across - threads. - - -

- Note that enumeration is inherently not thread-safe. Use the - to lock the object during enumeration. -

-
-
- - - An object that can be used to synchronize this collection to make - it thread-safe. - - -

- When implementing this, if your object uses a base object, like an - , or anything that has - a SyncRoot, return that object instead of "this". -

-
- - An object that can be used to synchronize this collection to make - it thread-safe. - -
- - - Adds the specified element to this set if it is not already present. - - The object to add to the set. - - is the object was added, - if the object was already present. - - - - - Adds all the elements in the specified collection to the set if - they are not already present. - - A collection of objects to add to the set. - - is the set changed as a result of this - operation. - - - - - Removes all objects from this set. - - - - - Returns if this set contains the specified - element. - - The element to look for. - - if this set contains the specified element. - - - - - Returns if the set contains all the - elements in the specified collection. - - A collection of objects. - - if the set contains all the elements in the - specified collection; also if the - supplied is . - - - - - Removes the specified element from the set. - - The element to be removed. - - if the set contained the specified element. - - - - - Remove all the specified elements from this set, if they exist in - this set. - - A collection of elements to remove. - - if the set was modified as a result of this - operation. - - - - - Retains only the elements in this set that are contained in the - specified collection. - - - The collection that defines the set of elements to be retained. - - - if this set changed as a result of this - operation. - - - - - Copies the elements in the to - an array. - - -

- The type of array needs to be compatible with the objects in the - , obviously. -

-
- - An array that will be the target of the copy operation. - - - The zero-based index where copying will start. - -
- - - Gets an enumerator for the elements in the - . - - - An over the elements - in the . - - - - - Provides the storage for elements in the - , stored as the key-set - of the object. - - -

- Set this object in the constructor if you create your own - class. -

-
-
- - - The placeholder object used as the value for the - instance. - - - There is a single instance of this object globally, used for all - s. - - - - - Returns if this set contains no elements. - - - - - The number of elements currently contained in this collection. - - - - - Returns if the - is synchronized across - threads. - - - - - - An object that can be used to synchronize this collection to make - it thread-safe. - - - An object that can be used to synchronize this collection to make - it thread-safe. - - - - - - Implements an based on a - hash table. - - -

- This will give the best lookup, add, and remove performance for very - large data-sets, but iteration will occur in no particular order. -

-
- -
- - - Creates a new instance of the class. - - - - - Creates a new instance of the class, and - initializes it based on a collection of elements. - - - A collection of elements that defines the initial set contents. - - - - - Implements an that automatically - changes from a list based implementation to a hashtable based - implementation when the size reaches a certain threshold. - - -

- This is good if you are unsure about whether you data-set will be tiny - or huge. -

- - Because this uses a dual implementation, iteration order is not - guaranteed! - -
- -
- - - Creates a new set instance based on either a list or a hash table, - depending on which will be more efficient based on the data-set - size. - - - - - Creates a new set instance based on either a list or a hash table, - depending on which will be more efficient based on the data-set - size, and initializes it based on a collection of elements. - - - A collection of elements that defines the initial set contents. - - - - - Implements an immutable (read-only) - wrapper. - - -

- Although this class is advertised as immutable, it really isn't. - Anyone with access to the wrapped - can still change the data. So - is not implemented for this , as - is the case for all - implementations in this library. This design decision was based on the - efficiency of not having to clone the wrapped - every time you wrap a mutable - . -

-
-
- - - Constructs an immutable (read-only) - wrapper. - - - The that is to be wrapped. - - - - - Adds the specified element to this set if it is not already present. - - The object to add to the set. - - is the object was added, - if the object was already present. - - - - - - Adds all the elements in the specified collection to the set if - they are not already present. - - A collection of objects to add to the set. - - is the set changed as a result of this - operation. - - - - - - Removes all objects from this set. - - - - - - Returns if this set contains the specified - element. - - The element to look for. - - if this set contains the specified element. - - - - - Returns if the set contains all the - elements in the specified collection. - - A collection of objects. - - if the set contains all the elements in the - specified collection. - - - - - Removes the specified element from the set. - - The element to be removed. - - if the set contained the specified element. - - - - - - Remove all the specified elements from this set, if they exist in - this set. - - A collection of elements to remove. - - if the set was modified as a result of this - operation. - - - - - - Retains only the elements in this set that are contained in the - specified collection. - - - The collection that defines the set of elements to be retained. - - - if this set changed as a result of this - operation. - - - - - - Copies the elements in the to - an array. - - -

- The type of array needs to be compatible with the objects in the - , obviously. -

-
- - An array that will be the target of the copy operation. - - - The zero-based index where copying will start. - -
- - - Gets an enumerator for the elements in the - . - - - An over the elements - in the . - - - - - Returns a clone of the - instance. - - A clone of this object. - - - - Performs a "union" of the two sets, where all the elements - in both sets are present. - - A collection of elements. - - A new containing the union of - this with the specified - collection. Neither of the input objects is modified by the union. - - - - - - Performs an "intersection" of the two sets, where only the elements - that are present in both sets remain. - - A set of elements. - - The intersection of this set with . - - - - - - Performs a "minus" of this set from the - set. - - A set of elements. - - A set containing the elements from this set with the elements in - removed. - - - - - - Performs an "exclusive-or" of the two sets, keeping only those - elements that are in one of the sets, but not in both. - - A set of elements. - - A set containing the result of - ^ this. - - - - - - Returns if this set contains no elements. - - - - - The number of elements currently contained in this collection. - - - - - Returns if the - is synchronized across - threads. - - -

- Note that enumeration is inherently not thread-safe. Use the - to lock the object during enumeration. -

-
-
- - - An object that can be used to synchronize this collection to make - it thread-safe. - - - An object that can be used to synchronize this collection to make - it thread-safe. - - - - - Simple linked list implementation. - - Simon White - - - - Creates a new instance of the - class. - - - - - Creates a new instance of the - class that contains all - elements of the specified list. - - - A list of elements that defines the initial contents. - - - - - Removes the object at the specified index. - - The lookup index. - - If the specified is greater than the - number of objects within the list. - - - - - Inserts an object at the specified index. - - The lookup index. - The object to be inserted. - - If the specified is greater than the - number of objects within the list. - - - - - Removes the first instance of the specified object found. - - The object to remove - - - - Returns if this list contains the specified - element. - - The element to look for. - - if this list contains the specified element. - - - - - Removes all objects from the list. - - - - - Returns the index of the first instance of the specified - found. - - The object to search for - - The index of the first instance found, or -1 if the element was not - found. - - - - - Adds the specified object to the end of the list. - - The object to add - The index that the object was added at. - - - - Adds all of the elements of the supplied - list to the end of this list. - - The list of objects to add. - - - - Checks whether the list can be modified. - - - If the list cannot be modified. - - - - - Validates the specified index. - - The lookup index. - - If the index is invalid. - - - - - Returns the node at the specified index. - - The lookup index. - The node at the specified index. - - If the specified is greater than the - number of objects within the list. - - - - - Returns the node (and index) of the first node that contains - the specified value. - - The value to search for. - - The node, or if not found. - - - - - Removes the specified node. - - The node to be removed. - - - - Copies the elements in this list to an array. - - -

- The type of array needs to be compatible with the objects in this - list, obviously. -

-
- - An array that will be the target of the copy operation. - - - The zero-based index where copying will start. - - - If the supplied is . - - - If the supplied is less than zero - or is greater than the length of . - - - If the supplied is of insufficient size. - -
- - - Gets an enumerator for the elements in the - . - - -

- Enumerators are fail fast. -

-
- - An over the elements - in the . - -
- - - Is list read only? - - - if the list is read only. - - - - - Returns the node at the specified index. - - -

- This is the indexer for the - class. -

-
- -
- - - Is the list a fixed size? - - - if the list is a fixed size list. - - - - - Returns if the list is synchronized across - threads. - - - - This implementation always returns . - -

- Note that enumeration is inherently not thread-safe. Use the - to lock the object during enumeration. -

-
-
- - - The number of objects within the list. - - - - - An object that can be used to synchronize this - to make it thread-safe. - - - An object that can be used to synchronize this - to make it thread-safe. - - - - - Implements a based on a list. - - -

- Performance is much better for very small lists than either - or . - However, performance degrades rapidly as the data-set gets bigger. Use a - instead if you are not sure your data-set - will always remain very small. Iteration produces elements in the order they were added. - However, element order is not guaranteed to be maintained by the various - mathematical operators. -

-
-
- - - Creates a new set instance based on a list. - - - - - Creates a new set instance based on a list and initializes it based on a - collection of elements. - - - A collection of elements that defines the initial set contents. - - - - - Thrown when an element is requested from an empty . - - Griffin Caprio - - - - Creates a new instance of the - class. - - - - - Creates a new instance of the - class. - - - The - that holds the serialized object data about the exception being thrown. - - - The - that contains contextual information about the source or destination. - - - - - Creates a new instance of the - class with the - specified message. - - - A message about the exception. - - - - - Creates a new instance of the - class with the - specified message. - - - A message about the exception. - - - The root exception that is being wrapped. - - - - - An unbounded priority based on a priority - heap. This queue orders elements according to an order specified - at construction time, which is specified either according to their - natural order (see , or according to a - , depending on which constructor is - used. A priority queue does not permit elements. - A priority queue relying on natural ordering also does not - permit insertion of non-comparable objects (doing so will result - . - -

- The head of this queue is the lowest element - with respect to the specified ordering. If multiple elements are - tied for lowest value, the head is one of those elements -- ties are - broken arbitrarily. - -

- A priority queue is unbounded, but has an internal - capacity governing the size of an array used to store the - elements on the queue. It is always at least as large as the queue - size. As elements are added to a priority queue, its capacity - grows automatically. The details of the growth policy are not - specified. - -

- This class and its enumerator implement all of the - optional methods of the and - interfaces. - The enumerator provided in method - is not guaranteed to traverse the elements of the PriorityQueue in any - particular order. - -

- Note that this implementation is NOT synchronized. - Multiple threads should not access a - instance concurrently if any of the threads modifies the list - structurally. Instead, use the thread-safe PriorityBlockingQueue. -

- Josh Bloch - Griffin Caprio (.NET) -
- - - Priority queue represented as a balanced binary heap: the two children - of queue[n] are queue[2*n] and queue[2*n + 1]. The priority queue is - ordered by comparator, or by the elements' natural ordering, if - comparator is null: For each node n in the heap and each descendant d - of n, n <= d. - - The element with the lowest value is in queue[1], assuming the queue is - nonempty. (A one-based array is used in preference to the traditional - zero-based array to simplify parent and child calculations.) - - queue.length must be >= 2, even if size == 0. - - - - The number of elements in the priority queue. - - - - The comparator, or null if priority queue uses elements' - natural ordering. - - - - - The number of times this priority queue has been - structurally modified. - - - - - Creates a with the default initial capacity - (11) that orders its elements according to their natural - ordering (using ). - - - - - Creates a with the specified initial capacity - that orders its elements according to their natural ordering - (using ). - - the initial capacity for this priority queue. - - if is less than 1. - - - - Creates a with the specified initial capacity - that orders its elements according to the specified comparator. - - the initial capacity for this priority queue. - the comparator used to order this priority queue. - If then the order depends on the elements' natural ordering. - - if is less than 1. - - - - Creates a containing the elements in the - specified collection. The priority queue has an initial - capacity of 110% of the size of the specified collection or 1 - if the collection is empty. If the specified collection is an - instance of a , the priority queue will be sorted - according to the same comparator, or according to its elements' - natural order if the collection is sorted according to its - elements' natural order. Otherwise, the priority queue is - ordered according to its elements' natural order. - - the collection whose elements are to be placed into this priority queue. - if elements of cannot be - compared to one another according to the priority queue's ordering - if or any element with it is - - - - - - Common code to initialize underlying queue array across - constructors below. - - - - - Performs an unsigned bitwise right shift with the specified number - - Number to operate on - Ammount of bits to shift - The resulting number from the shift operation - - - - Establishes the heap invariant assuming the heap - satisfies the invariant except possibly for the leaf-node indexed by k - (which may have a nextExecutionTime less than its parent's). - - - This method functions by "promoting" queue[k] up the hierarchy - (by swapping it with its parent) repeatedly until queue[k] - is greater than or equal to its parent. - - - - - Establishes the heap invariant (described above) in the subtree - rooted at k, which is assumed to satisfy the heap invariant except - possibly for node k itself (which may be greater than its children). - - - This method functions by "demoting" queue[k] down the hierarchy - (by swapping it with its smaller child) repeatedly until queue[k] - is less than or equal to its children. - - - - - Establishes the heap invariant in the entire tree, - assuming nothing about the order of the elements prior to the call. - - - - - Returns the of or - 1, - whichever is smaller. - - base size - percentage to return - of - - - - Initially fill elements of the queue array under the - knowledge that it is sorted or is another , in which - case we can just place the elements in the order presented. - - - - - Initially fill elements of the queue array that is not to our knowledge - sorted, so we must rearrange the elements to guarantee the heap - invariant. - - - - - Removes and returns element located at from queue. (Recall that the queue - is one-based, so 1 <= i <= size.) - - - Normally this method leaves the elements at positions from 1 up to i-1, - inclusive, untouched. Under these circumstances, it returns . - Occasionally, in order to maintain the heap invariant, it must move - the last element of the list to some index in the range [2, i-1], - and move the element previously at position (i/2) to position i. - Under these circumstances, this method returns the element that was - previously at the end of the list and is now at some position between - 2 and i-1 inclusive. - - - - Resize array, if necessary, to be able to hold given index - - - - Inserts the specified element into this queue if it is possible to do - so immediately without violating capacity restrictions. - - -

- When using a capacity-restricted queue, this method is generally - preferable to , - which can fail to insert an element only by throwing an exception. -

-
- - The element to add. - - - if the element was added to this queue. - - - if the specified element cannot be compared - with elements currently in the priority queue according - to the priority queue's ordering. - - - If the element cannot be added at this time due to capacity restrictions. - - - If the supplied is - and this queue does not permit - elements. - - - If some property of the supplied prevents - it from being added to this queue. - -
- - - Retrieves, but does not remove, the head of this queue, - or returns if this queue is empty. - - - The head of this queue, or if this queue is empty. - - - - - Inserts the specified element into this queue if it is possible to do so - immediately without violating capacity restrictions, returning - upon success and throwing an - if no space is - currently available. - - - The element to add. - - - if successful. - - - If the element cannot be added at this time due to capacity restrictions. - - - If the specified element is and this queue does not - permit elements. - - - If some property of the supplied prevents - it from being added to this queue. - - - if the specified element cannot be compared - with elements currently in the priority queue according - to the priority queue's ordering. - - - - - Removes a single instance of the specified element from this - queue, if it is present. - - - - - Returns an over the elements in this queue. - The enumeratoar does not return the elements in any particular order. - - an enumerator over the elements in this queue. - - - - Removes all elements from the priority queue. - The queue will be empty after this call returns. - - - - - Retrieves and removes the head of this queue, - or returns if this queue is empty. - - - The head of this queue, or if this queue is empty. - - - - - Queries the queue to see if it contains the specified - - element to look for. - if the queue contains the , - otherwise. - - - Returns the comparator used to order this collection, or - if this collection is sorted according to its elements natural ordering - (using ). - - - the comparator used to order this collection, or - if this collection is sorted according to its elements natural ordering. - - - - - Save the state of the instance to a stream (that - is, serialize it). - - The length of the array backing the instance is - emitted (int), followed by all of its elements (each an - ) in the proper order. - - the stream - the context - - - - Reconstitute the instance from a stream (that is, - deserialize it). - - the stream - the context - - - - Copies the elements of the to an , starting at a particular index. - - The one-dimensional that is the destination of the elements copied from . The must have zero-based indexing. - The zero-based index in array at which copying begins. - array is null. - index is less than zero. - array is multidimensional.-or- index is equal to or greater than the length of array.-or- The number of elements in the source is greater than the available space from index to the end of the destination array. - The type of the source cannot be cast automatically to the type of the destination array. 2 - - - - Copies the elements of the to an , starting at index 0. - - The one-dimensional that is the destination of the elements copied from . The must have zero-based indexing. - array is null. - index is less than zero. - array is multidimensional.-or- index is equal to or greater than the length of array.-or- The number of elements in the source is greater than the available space from index to the end of the destination array. - The type of the source cannot be cast automatically to the type of the destination array. 2 - - - - Gets the Capacity of this queue. Will equal - - - - - Returns the queue count. - - - - - Gets an object that can be used to synchronize access to the . - - - An object that can be used to synchronize access to the . - - - - - Gets a value indicating whether access to the is synchronized (thread safe). - - - true if access to the is synchronized (thread safe); otherwise, false. - - - - - Returns if there are no elements in the , otherwise. - - - - - Index (into queue array) of element to be returned by subsequent call to next. - - - - - Implements an based on a sorted - tree. - - -

- This gives good performance for operations on very large data-sets, - though not as good - asymptotically - as a - . However, iteration occurs - in order. -

-

- Elements that you put into this type of collection must implement - , and they must actually be comparable. - You can't mix and - values, for example. -

-

- This implementation does - not support elements that are . -

-
- -
- - - Creates a new set instance based on a sorted tree. - - - - - Creates a new set instance based on a sorted tree using for ordering. - - - - - Creates a new set instance based on a sorted tree and initializes - it based on a collection of elements. - - - A collection of elements that defines the initial set contents. - - - - - Synchronized that should be returned by synchronized - dictionary implementations in order to ensure that the enumeration is thread safe. - - Aleksandar Seovic - - - - Synchronized that should be returned by synchronized - collections in order to ensure that the enumeration is thread safe. - - Aleksandar Seovic - - - - Synchronized that, unlike hashtable created - using method, synchronizes - reads from the underlying hashtable in addition to writes. - - -

- In addition to synchronizing reads, this implementation also fixes - IEnumerator/ICollection issue described at - http://msdn.microsoft.com/en-us/netframework/aa570326.aspx - (search for SynchronizedHashtable for issue description), by implementing - interface explicitly, and returns thread safe enumerator - implementations as well. -

-

- This class should be used whenever a truly synchronized - is needed. -

-
- Aleksandar Seovic -
- - - Initializes a new instance of - - - - - Initializes a new instance of - - - - - Initializes a new instance of , copying inital entries from - handling keys depending on . - - - - - Creates a instance that - synchronizes access to the underlying . - - the hashtable to be synchronized - - - - Creates a wrapper that synchronizes - access to the passed . - - the hashtable to be synchronized - - - - Adds an element with the provided key and value to the object. - - The to use as the value of the element to add. - The to use as the key of the element to add. - An element with the same key already exists in the object. - key is null. - The is read-only.-or- The has a fixed size. 2 - - - - Removes all elements from the object. - - The object is read-only. 2 - - - - Creates a new object that is a copy of the current instance. - - - A new object that is a copy of this instance. - - - - - Determines whether the object contains an element with the specified key. - - - true if the contains an element with the key; otherwise, false. - - The key to locate in the object. - key is null. 2 - - - - Returns, whether this contains an entry with the specified . - - The key to look for - , if this contains an entry with this - - - - Returns, whether this contains an entry with the specified . - - The valúe to look for - , if this contains an entry with this - - - - Copies the elements of the to an , starting at a particular index. - - The one-dimensional that is the destination of the elements copied from . The must have zero-based indexing. - The zero-based index in array at which copying begins. - array is null. - The type of the source cannot be cast automatically to the type of the destination array. - index is less than zero. - array is multidimensional.-or- index is equal to or greater than the length of array.-or- The number of elements in the source is greater than the available space from index to the end of the destination array. 2 - - - - Returns an object for the object. - - - An object for the object. - - - - - Removes the element with the specified key from the object. - - The key of the element to remove. - The object is read-only.-or- The has a fixed size. - key is null. 2 - - - - Returns an enumerator that iterates through a collection. - - - An object that can be used to iterate through the collection. - - - - - Gets a value indicating whether the object is read-only. - - - true if the object is read-only; otherwise, false. - - - - - Gets a value indicating whether the object has a fixed size. - - - true if the object has a fixed size; otherwise, false. - - - - - Gets a value indicating whether access to the is synchronized (thread safe). - - - true if access to the is synchronized (thread safe); otherwise, false. - - - - - Gets an object containing the keys of the object. - - - An object containing the keys of the object. - - - - - Gets an object containing the values in the object. - - - An object containing the values in the object. - - - - - Gets an object that can be used to synchronize access to the . - - - An object that can be used to synchronize access to the . - - - - - Gets the number of elements contained in the . - - - The number of elements contained in the . - - - - - Gets or sets the element with the specified key. - - - The element with the specified key. - - The key of the element to get or set. - The property is set and the object is read-only.-or- The property is set, key does not exist in the collection, and the has a fixed size. - key is null. 2 - - - - Implements a thread-safe wrapper. - - -

- The implementation is extremely conservative, serializing critical - sections to prevent possible deadlocks, and locking on everything. The - one exception is for enumeration, which is inherently not thread-safe. - For this, you have to lock the SyncRoot object for the - duration of the enumeration. -

-
- -
- - - Constructs a thread-safe - wrapper. - - - The object that this object - will wrap. - - - If the supplied ecposes a - SyncRoot value. - - - - - Adds the specified element to this set if it is not already present. - - The object to add to the set. - - is the object was added, - if the object was already present. - - - - - Adds all the elements in the specified collection to the set if - they are not already present. - - A collection of objects to add to the set. - - is the set changed as a result of this - operation. - - - - - Removes all objects from this set. - - - - - Returns if this set contains the specified - element. - - The element to look for. - - if this set contains the specified element. - - - - - Returns if the set contains all the - elements in the specified collection. - - A collection of objects. - - if the set contains all the elements in the - specified collection; also if the - supplied is . - - - - - Removes the specified element from the set. - - The element to be removed. - - if the set contained the specified element. - - - - - Remove all the specified elements from this set, if they exist in - this set. - - A collection of elements to remove. - - if the set was modified as a result of this - operation. - - - - - Retains only the elements in this set that are contained in the - specified collection. - - - The collection that defines the set of elements to be retained. - - - if this set changed as a result of this - operation. - - - - - Copies the elements in the to - an array. - - -

- The type of array needs to be compatible with the objects in the - , obviously. -

-
- - An array that will be the target of the copy operation. - - - The zero-based index where copying will start. - -
- - - Gets an enumerator for the elements in the - . - - - An over the elements - in the . - - - - - Returns a clone of the instance. - - A clone of this object. - - - - Returns if this set contains no elements. - - - - - The number of elements currently contained in this collection. - - - - - Returns if the - is synchronized across - threads. - - - - - - An object that can be used to synchronize this collection to make - it thread-safe. - - - An object that can be used to synchronize this collection to make - it thread-safe. - - - - - - Simple listener that logs application events to the console. - - -

- Intended for use during debugging only. -

-
- Rod Johnson - Griffin Caprio (.NET) - -
- - - A listener for application events. - - Rod Johnson - Griffin Caprio (.NET) - - - - Handle an application event. - - - The source of the event. - - - The event that is to be handled. - - - - - Creates a new instance of the - class. - - - - - Handle an application event. - - - The source of the event. - - - The event that is to be handled. - - - - - Event object sent to listeners registered with an - to inform them of - context lifecycle events. - - Griffin Caprio (.NET) - - - - - - - Encapsulates the data associated with an event raised by an - . - - Rod Johnson - Mark Pollack (.NET) - Griffin Caprio (.NET) - - - - - Creates a new instance of the - class. - - - - - The date and time when the event occured. - - - The date and time when the event occured. - - - - - The system time in milliseconds when the event happened. - - - The system time in milliseconds when the event happened. - - - - - Creates a new instance of the ContextEventArgs class to represent the - supplied context event. - - The type of context event. - - - - Returns a string representation of this object. - - A string representation of this object. - - - - The event type. - - - - - The various context event types. - - - - - The event type when the context is refreshed or created. - - - - - The event type when the context is closed. - - - - - Partial implementation of the - interface. - - -

- Does not mandate the type of storage used for configuration, but does - implement common functionality. Uses the Template Method design - pattern, requiring concrete subclasses to implement - methods. -

-

- In contrast to a plain vanilla - , an - is supposed - to detect special objects defined in its object factory: therefore, - this class automatically registers - s, - s - and s that are - defined as objects in the context. -

-

- An may be also supplied as - an object in the context, with the special, well-known-name of - "messageSource". Else, message resolution is delegated to the - parent context. -

-
- Rod Johnson - Juergan Hoeller - Griffin Caprio (.NET) - - -
- - - Configurable implementation of the - interface. - - -

- This implementation - supports the configuration of resource access protocols and the - corresponding .NET types that know how to handle those protocols. -

-

- Basic protocol-to-resource type mappings are also defined by this class, - while others can be added either internally, by application contexts - extending this class, or externally, by the end user configuring the - context. -

-

- Only one resource type can be defined for each protocol, but multiple - protocols can map to the same resource type (for example, the - "http" and "ftp" protocols both map to the - type. The protocols that are - mapped by default can be found in the following list. -

-

- - - assembly - - - config - - - file - - - http - - - https - - -

-
- Aleksandar Seovic - - - -
- - - Describes an object that can load - s. - - -

- An implementation is - generally required to support the functionality described by this - interface. -

-

- The class is a - standalone implementation that is usable outside an - ; the aforementioned - class is also used by the - class. -

-
- Juergen Hoeller - Mark Pollack (.NET) - - - -
- - - Return an handle for the - specified resource. - - -

- The handle should always be a reusable resource descriptor; this - allows one to make repeated calls to the underlying - . -

-

-

    -
  • - Must support fully qualified URLs, e.g. "file:C:/test.dat". -
  • -
  • - Should support relative file paths, e.g. "test.dat" (this will be - implementation-specific, typically provided by an - implementation). -
  • -
-

- - An handle does not imply an - existing resource; you need to check the value of an - 's - property to determine - conclusively whether or not the resource actually exists. - -
- The resource location. - - An appropriate handle. - - - - -
- - - The separator between the protocol name and the resource name. - - - - - Creates a new instance of the - class. - - - - - Creates a new instance of the - class using the specified default protocol for unqualified resources. - - - - - Returns a that has been - mapped to the protocol of the supplied . - - The name of the resource. - - A new instance for the - supplied . - - - If a - mapping does not exist for the supplied . - - - In the case of any errors arising from the instantiation of the - returned instance. - - - - - - Checks that the supplied starts - with one of the protocol names currently mapped by this - instance. - - The name of the resource. - - if the supplied - starts with one of the known - protocols; if not, or if the supplied - is itself . - - - - - Extracts the protocol name from the supplied - . - - The name of the resource. - - The extracted protocol name or if the - supplied is unqualified (or - is itself ). - - - - - The default protocol to use for unqualified resources. - - -

- The initial value is "file". -

-
-
- - - Provides the means to configure an application context in addition to - the methods exposed on the - interface. - - -

- This interface is to be implemented by most (if not all) - implementations. -

-

- Configuration and lifecycle methods are encapsulated here to avoid - making them obvious to - client code. -

-

- Calling will close this - application context, releasing all resources and locks that the - implementation might hold. This includes disposing all cached - singleton objects. -

- - does not invoke the - attendant on any parent - context. - -
- Juergen Hoeller - Mark Pollack (.NET) - - -
- - - The central interface to Spring.NET's IoC container. - - -

- implementations - provide: - - - - Object factory functionality inherited from the - - and - interfaces. - - - - - The ability to resolve messages, supporting internationalization. - Inherited from the - interface. - - - - - The ability to load file resources in a generic fashion. - Inherited from the - interface. - - - - - Acts an an event registry for supporting loosely coupled eventing - between objecs. Inherited from the - interface. - - - - - The ability to raise events related to the context lifecycle. Inherited - from the - interface. - - - - - Inheritance from a parent context. Definitions in a descendant context - will always take priority. - - - -

-

- In addition to standard object factory lifecycle capabilities, - implementations need - to detect - , - , and - objects and supply - their attendant dependencies accordingly. -

-

- This interface is the central client interface in Spring.NET's IoC - container implementation. As such it does inherit a quite sizeable - number of interfaces; implementations are strongly encouraged to use - composition to satisfy each of the inherited interfaces (where - appropriate of course). -

-
- Rod Johnson - Juergen Hoeller - Mark Pollack (.NET) - - - - -
- - - Extension of the interface - to be implemented by object factories that can enumerate all their object instances, - rather than attempting object lookup by name one by one as requested by clients. - - -

- implementations that preload - all their objects (for example, DOM-based XML factories) may implement this - interface. This interface is discussed in - "Expert One-on-One J2EE Design and Development", by Rod Johnson. -

-

- If this is an , - the return values will not take any - hierarchy into account, but - will relate only to the objects defined in the current factory. - Use the helper class to - get all objects. -

-

- With the exception of - , - the methods and properties in this interface are not designed for frequent - invocation. Implementations may be slow. -

-
- Rod Johnson - Rick Evans (.NET) -
- - - The root interface for accessing a Spring.NET IoC container. - - - - This is the basic client view of a Spring.NET IoC container; further interfaces - such as and - - are available for specific purposes such as enumeration and configuration. - - - This is the root interface to be implemented by objects that can hold a number - of object definitions, each uniquely identified by a - name. An independent instance of any of these objects can be obtained - (the Prototype design pattern), or a single shared instance can be obtained - (a superior alternative to the Singleton design pattern, in which the instance is a - singleton in the scope of the factory). Which type of instance - will be returned depends on the object factory configuration - the API is the same. - The Singleton approach is more useful and hence more common in practice. - - - The point of this approach is that the IObjectFactory is a central registry of - application components, and centralizes the configuring of application components - (no more do individual objects need to read properties files, for example). - See chapters 4 and 11 of "Expert One-on-One J2EE Design and Development" for a - discussion of the benefits of this approach. - - - Normally an IObjectFactory will load object definitions stored in a configuration - source (such as an XML document), and use the - namespace to configure the objects. However, an implementation could simply return - .NET objects it creates as necessary directly in .NET code. There are no - constraints on how the definitions could be stored: LDAP, RDBMS, XML, properties - file etc. Implementations are encouraged to support references amongst objects, - to either Singletons or Prototypes. - - - In contrast to the methods in - , all of the methods - in this interface will also check parent factories if this is an - . If an object is - not found in this factory instance, the immediate parent is asked. Objects in - this factory instance are supposed to override objects of the same name in any - parent factory. - - - Object factories are supposed to support the standard object lifecycle interfaces - as far as possible. The maximum set of initialization methods and their standard - order is: - - - - - - 's - property. - - - - - 's - property. - - - - - - (only applicable if running within an ). - - - - - The - - method of - s. - - - - - 's - method. - - - - - A custom init-method definition. - - - - - The - - method of - s. - - - - -

- - On shutdown of an object factory, the following lifecycle methods apply: - - - - - - 's - method. - - - - - A custom destroy-method definition. - - - - - - Rod Johnson - Juergen Hoeller - Rick Evans (.NET) - - -

- Is this object a singleton? - - - - That is, will - always return the same object? - - - Will ask the parent factory if the object cannot be found in this factory - instance. - - - The name of the object to query. - True if the named object is a singleton. - - If there's no such object definition. - -
- - - Determines whether the specified object name is prototype. That is, will GetObject - always return independent instances? - - This method returning false does not clearly indicate a singleton object. - It indicated non-independent instances, which may correspond to a scoped object as - well. use the IsSingleton property to explicitly check for a shared - singleton instance. - Translates aliases back to the corresponding canonical object name. Will ask the - parent factory if the object can not be found in this factory instance. - - - - The name of the object to query - - true if the specified object name will always deliver independent instances; otherwise, false. - - if there is no object with the given name. - - - - Does this object factory contain an object with the given name? - - - - Will ask the parent factory if the object cannot be found in this factory - instance. - - - The name of the object to query. - True if an object with the given name is defined. - - - - Return the aliases for the given object name, if defined. - - - - Will ask the parent factory if the object cannot be found in this factory - instance. - - - The object name to check for aliases. - The aliases, or an empty array if none. - - If there's no such object definition. - - - - - Return an instance (possibly shared or independent) of the given object name. - - - - This method allows an object factory to be used as a replacement for the - Singleton or Prototype design pattern. - - - Note that callers should retain references to returned objects. There is no - guarantee that this method will be implemented to be efficient. For example, - it may be synchronized, or may need to run an RDBMS query. - - - Will ask the parent factory if the object cannot be found in this factory - instance. - - - The name of the object to return. - The instance of the object. - - If there's no such object definition. - - - If the object could not be created. - - - - - Return an instance (possibly shared or independent) of the given object name. - - - - This method allows an object factory to be used as a replacement for the - Singleton or Prototype design pattern. - - - Note that callers should retain references to returned objects. There is no - guarantee that this method will be implemented to be efficient. For example, - it may be synchronized, or may need to run an RDBMS query. - - - Will ask the parent factory if the object cannot be found in this factory - instance. - - - The name of the object to return. - - The arguments to use if creating a prototype using explicit arguments to - a static factory method. If there is no factory method and the - arguments are not null, then match the argument values by type and - call the object's constructor. - - The instance of the object. - - If there's no such object definition. - - - If the object could not be created. - - - If the supplied is . - - - - - Return an instance (possibly shared or independent) of the given object name. - - The name of the object to return. - - The the object may match. Can be an interface or - superclass of the actual class. For example, if the value is the - class, this method will succeed whatever the - class of the returned instance. - - - The arguments to use if creating a prototype using explicit arguments to - a factory method. If there is no factory method and the - supplied array is not , then - match the argument values by type and call the object's constructor. - - The instance of the object. - - If there's no such object definition. - - - If the object could not be created. - - - If the object is not of the required type. - - - If the supplied is . - - - - - - Return an instance (possibly shared or independent) of the given object name. - - - - Provides a measure of type safety by throwing an exception if the object is - not of the required . - - - This method allows an object factory to be used as a replacement for the - Singleton or Prototype design pattern. - - - Note that callers should retain references to returned objects. There is no - guarantee that this method will be implemented to be efficient. For example, - it may be synchronized, or may need to run an RDBMS query. - - - Will ask the parent factory if the object cannot be found in this factory - instance. - - - The name of the object to return. - - the object may match. Can be an interface or - superclass of the actual class. For example, if the value is the - class, this method will succeed whatever the - class of the returned instance. - - The instance of the object. - - If there's no such object definition. - - - If the object could not be created. - - - If the object is not of the required type. - - - - - Determine the type of the object with the given name. - - - - More specifically, checks the type of object that - would return. - For an , returns the type - of object that the creates. - - - The name of the object to query. - - The type of the object or if not determinable. - - - - - Determines whether the object with the given name matches the specified type. - - More specifically, check whether a GetObject call for the given name - would return an object that is assignable to the specified target type. - Translates aliases back to the corresponding canonical bean name. - Will ask the parent factory if the bean cannot be found in this factory instance. - - The name of the object to query. - Type of the target to match against. - - true if the object type matches; otherwise, false - if it doesn't match or cannot be determined yet. - - Ff there is no object with the given name - - - - - Return an unconfigured(!) instance (possibly shared or independent) of the given object name. - - The name of the object to return. - - The the object may match. Can be an interface or - superclass of the actual class. For example, if the value is the - class, this method will succeed whatever the - class of the returned instance. - - - The arguments to use if creating a prototype using explicit arguments to - a factory method. If there is no factory method and the - supplied array is not , then - match the argument values by type and call the object's constructor. - - The unconfigured(!) instance of the object. - - If there's no such object definition. - - - If the object could not be created. - - - If the object is not of the required type. - - - If the supplied is . - - - - This method will only instantiate the requested object. It does NOT inject any dependencies! - - - - - Injects dependencies into the supplied instance - using the named object definition. - - - - In addition to being generally useful, typically this method is used to provide - dependency injection functionality for objects that are instantiated outwith the - control of a developer. A case in point is the way that the current (1.1) - ASP.NET classes instantiate web controls... the instantiation takes place within - a private method of a compiled page, and thus cannot be hooked into the - typical Spring.NET IOC container lifecycle for dependency injection. - - - - The following code snippet assumes that the instantiated factory instance - has been configured with an object definition named - 'ExampleNamespace.BusinessObject' that has been configured to set the - Dao property of any ExampleNamespace.BusinessObject instance - to an instance of an appropriate implementation... - - namespace ExampleNamespace - { - public class BusinessObject - { - private IDao _dao; - - public BusinessObject() {} - - public IDao Dao - { - get { return _dao; } - set { _dao = value; } - } - } - } - - with the corresponding driver code looking like so... - - IObjectFactory factory = GetAnIObjectFactoryImplementation(); - BusinessObject instance = new BusinessObject(); - factory.ConfigureObject(instance, "object_definition_name"); - // at this point the dependencies for the 'instance' object will have been resolved... - - - - The object instance that is to be so configured. - - - The name of the object definition expressing the dependencies that are to - be injected into the supplied instance. - - - If there is no object definition for the supplied . - - - If any of the target object's dependencies could not be created. - - - - - Return an instance (possibly shared or independent) of the given object name. - - - - This method allows an object factory to be used as a replacement for the - Singleton or Prototype design pattern. - - - Note that callers should retain references to returned objects. There is no - guarantee that this method will be implemented to be efficient. For example, - it may be synchronized, or may need to run an RDBMS query. - - - Will ask the parent factory if the object cannot be found in this factory - instance. - - - This is the indexer for the - interface. - - - The name of the object to return. - The instance of the object. - - If there's no such object definition. - - - If the object could not be created. - - - - - Check if this object factory contains an object definition with the given name. - - -

- Does not consider any hierarchy this factory may participate in. -

- - Ignores any singleton objects that have been registered by other means - than object definitions. - -
- The name of the object to look for. - - if this object factory contains an object - definition with the given name. - -
- - - Return the names of all objects defined in this factory. - - - The names of all objects defined in this factory, or an empty array if none - are defined. - - - - - Return the names of objects matching the given - (including subclasses), judging from the object definitions. - - -

- Does consider objects created by s, - or rather it considers the type of objects created by - (which means that - s will be instantiated). -

-

- Does not consider any hierarchy this factory may participate in. -

-
- - The (class or interface) to match, or - for all object names. - - - The names of all objects defined in this factory, or an empty array if none - are defined. - -
- - - Return the names of objects matching the given - (including subclasses), judging from the object definitions. - - -

- Does consider objects created by s, - or rather it considers the type of objects created by - (which means that - s will be instantiated). -

-

- Does not consider any hierarchy this factory may participate in. -

-
- - The (class or interface) to match, or - for all object names. - - - Whether to include prototype objects too or just singletons (also applies to - s). - - - Whether to include s too - or just normal objects. - - - The names of all objects defined in this factory, or an empty array if none - are defined. - -
- - - Return the object instances that match the given object - (including subclasses), judging from either object - definitions or the value of - in the case of - s. - - -

- This version of the - method matches all kinds of object definitions, be they singletons, prototypes, or - s. Typically, the results - of this method call will be the same as a call to - IListableObjectFactory.GetObjectsOfType(type,true,true) . -

-
- - The (class or interface) to match. - - - A of the matching objects, - containing the object names as keys and the corresponding object instances - as values. - - - If the objects could not be created. - -
- - - Return the object instances that match the given object - (including subclasses), judging from either object - definitions or the value of - in the case of - s. - - - The (class or interface) to match. - - - Whether to include prototype objects too or just singletons (also applies to - s). - - - Whether to include s too - or just normal objects. - - - A of the matching objects, - containing the object names as keys and the corresponding object instances - as values. - - - If the objects could not be created. - - - - - Return the number of objects defined in the factory. - - - The number of objects defined in the factory. - - - - - Sub-interface implemented by object factories that can be part - of a hierarchy. - - Rod Johnson - Rick Evans (.NET) - - - - Determines whether the local object factory contains a bean of the given name, - ignoring object defined in ancestor contexts. - This is an alternative to ContainsObject, ignoring an object - of the given name from an ancestor object factory. - - The name of the object to query. - - true if objects with the specified name is defined in the local factory; otherwise, false. - - - - - Return the parent object factory, or - if this factory does not have a parent. - - - The parent object factory, or - if this factory does not have a parent. - - - - - Describes an object that can resolve messages. - - -

- This enables the parameterization and internationalization of messages. -

-

- Spring.NET provides one out-of-the-box implementation for production - use: -

    -
  • .
  • -
-

-
- Rod Johnson - Juergen Hoeller - Mark Pollack (.NET) - Aleksandar Seovic (.NET) - -
- - - Resolve the message identified by the supplied - . - - -

- If the lookup is not successful, implementations are permitted to - take one of two actions. -

- - - Throw an exception. - - - - Return the supplied as is. - - - -
- The name of the message to resolve. - - The resolved message if the lookup was successful (see above for - the return value in the case of an unsuccessful lookup). - -
- - - Resolve the message identified by the supplied - . - - -

- If the lookup is not successful, implementations are permitted to - take one of two actions. -

- - - Throw an exception. - - - - Return the supplied as is. - - - -
- The name of the message to resolve. - - The array of arguments that will be filled in for parameters within - the message, or if there are no parameters - within the message. Parameters within a message should be - referenced using the same syntax as the format string for the - method. - - - The resolved message if the lookup was successful (see above for - the return value in the case of an unsuccessful lookup). - -
- - - Resolve the message identified by the supplied - . - - - Note that the fallback behavior based on CultureInfo seem to - have a bug that is fixed by installed .NET 1.1 Service Pack 1. -

- If the lookup is not successful, implementations are permitted to - take one of two actions. -

- - - Throw an exception. - - - - Return the supplied as is. - - - -
- The name of the message to resolve. - - The that represents - the culture for which the resource is localized. - - - The resolved message if the lookup was successful (see above for - the return value in the case of an unsuccessful lookup). - -
- - - Resolve the message identified by the supplied - . - - - Note that the fallback behavior based on CultureInfo seem to - have a bug that is fixed by installed .NET 1.1 Service Pack 1. -

- If the lookup is not successful, implementations are permitted to - take one of two actions. -

- - - Throw an exception. - - - - Return the supplied as is. - - - -
- The name of the message to resolve. - - The that represents - the culture for which the resource is localized. - - - The array of arguments that will be filled in for parameters within - the message, or if there are no parameters - within the message. Parameters within a message should be - referenced using the same syntax as the format string for the - method. - - - The resolved message if the lookup was successful (see above for - the return value in the case of an unsuccessful lookup). - -
- - - Resolve the message identified by the supplied - . - - - Note that the fallback behavior based on CultureInfo seem to - have a bug that is fixed by installed .NET 1.1 Service Pack 1. -

- If the lookup is not successful, implementations are permitted to - take one of two actions. -

- - - Throw an exception. - - - - Return the supplied as is. - - - -
- The name of the message to resolve. - The default message if name is not found. - - The that represents - the culture for which the resource is localized. - - - The array of arguments that will be filled in for parameters within - the message, or if there are no parameters - within the message. Parameters within a message should be - referenced using the same syntax as the format string for the - method. - - - The resolved message if the lookup was successful (see above for - the return value in the case of an unsuccessful lookup). - -
- - - Resolve the message using all of the attributes contained within - the supplied - argument. - - - The value object storing those attributes that are required to - properly resolve a message. - - - The that represents - the culture for which the resource is localized. - - - The resolved message if the lookup was successful (see above for - the return value in the case of an unsuccessful lookup). - - - If the message could not be resolved. - - - - - Gets a localized resource object identified by the supplied - . - - -

- This method must use the - - value to obtain a resource. -

-

- Examples of resources that may be resolved by this method include - (but are not limited to) objects such as icons and bitmaps. -

-
- - The name of the resource object to resolve. - - - The resolved object, or if not found. - -
- - - Gets a localized resource object identified by the supplied - . - - -

- Examples of resources that may be resolved by this method include - (but are not limited to) objects such as icons and bitmaps. -

-
- - The name of the resource object to resolve. - - - The with which the - resource is associated. - - - The resolved object, or if not found. - -
- - - Applies resources to object properties. - - -

- Resource key names are of the form objectName.propertyName. -

-
- - An object that contains the property values to be applied. - - - The base name of the object to use for key lookup. - - - The with which the - resource is associated. - -
- - - Encapsulates event publication functionality. - - -

- Serves as a super-interface for the - interface. -

-
- Juergen Hoeller - Rick Evans (.NET) -
- - - Publishes an application context event. - - - The source of the event. May be . - - - The event that is to be raised. - - - - - A registry that manages subscriptions to and the - publishing of events. - - Griffin Caprio - - - - Publishes all events of the source object. - - - The source object containing events to publish. - - - - - Subscribes to all events published, if the subscriber - implements compatible handler methods. - - The subscriber to use. - - - - Subscribes to the published events of all objects of a given - , if the subscriber implements - compatible handler methods. - - The subscriber to use. - - The target to subscribe to. - - - - - Unsubscribes to all events published, if the subscriber - implmenets compatible handler methods. - - The subscriber to use - - - - Unsubscribes to the published events of all objects of a given - , if the subscriber implements - compatible handler methods. - - The subscriber to use. - - The target to unsubscribe from - - - - - Raised in response to an application context event. - - - - - Returns the date and time this context was loaded. - - -

- This is to be set immediately after an - has been - instantiated and its configuration has been loaded. Implementations - are permitted to update this value if the context is reset or - refreshed in some way. -

-
- - The representing when this context - was loaded. - - -
- - - Gets the parent context, or if there is no - parent context. - - -

- If the parent context is , then this context - is the root of any context hierarchy. -

-
- - The parent context, or if there is no - parent. - -
- - - Gets and sets a name for this context. - - - A name for this context. - - - - - Interface defining methods for start/stop lifecycle control. - The typical use case for this is to control asynchronous processing. - - - - Can be implemented by both components (typically a Spring object defined in - a spring and containers - (typically a spring . Containers will - propagate start/stop signals to all components that apply. - - - Juergen Hoeller - Mark Pollack (.NET) - - - - Starts this component. - - Should not throw an exception if the component is already running. - In the case of a container, this will propagate the start signal - to all components that apply. - - - - - Stops this component. - - - Should not throw an exception if the component isn't started yet. - In the case of a container, this will propagate the stop signal - to all components that apply. - - - - - Gets a value indicating whether this component is currently running. - - - In the case of a container, this will return true - only if all components that apply are currently running. - - - true if this component is running; otherwise, false. - - - - - Add an - - that will get applied to the internal object factory of this - application context on refresh, before any of the object - definitions are evaluated. - - -

- To be invoked during context configuration. -

-
- - The factory processor to register. - - -
- - - Load or refresh the persistent representation of the configuration, - which might an XML file, properties file, or relational database schema. - - - If the configuration cannot be loaded. - - - If the object factory could not be initialized. - - - - - Return the internal object factory of this application context. - - -

- Can be used to access specific functionality of the factory. -

- - This is just guaranteed to return an instance that is not - after the context has been refreshed - at least once. - - - Do not use this to post-process the object factory; singletons - will already have been instantiated. Use an - - to intercept the object factory setup process before objects even - get touched. - -
- -
- - - Sets the parent of this application context. - - - - The parent should not be changed: it should only be set - outside a constructor if it isn't available when an instance of - this class is created. - - - - The parent context. - - - - - Name of the .Net config section that contains Spring.Net context definition. - - - - - Default name of the root context. - - - - - The special, well-known-name of the default - in the context. - - -

- If no can be found - in the context using this lookup key, then message resolution - will be delegated to the parent context (if any). -

-
-
- - - The special, well-known-name of the default - in the context. - - -

- If no can be found - in the context using this lookup key, then a default - will be used. -

-
-
- - - The instance for this class. - - - - - The instance we delegate - our implementation of said interface to. - - - - - The instance we - delegate our implementation of said interface to. - - - - - Creates a new instance of the - with no parent context. - - -

- This is an class, and as such exposes - no public constructors. -

-
-
- - - Creates a new instance of the - with no parent context. - - -

- This is an class, and as such exposes - no public constructors. -

-
- Flag specifying whether to make this context case sensitive or not. -
- - - Creates a new instance of the - with the supplied parent context. - - -

- This is an class, and as such exposes - no public constructors. -

-
- The application context name. - Flag specifying whether to make this context case sensitive or not. - The parent application context. -
- - - Adds the given to the list of standard - processors being added to the underlying - - - Each time is called on this context, the context ensures, that - all default s are registered with the underlying . - - The instance. - - - - Closes this context and disposes of any resources (such as - singleton objects in the wrapped - ). - - - - - Subclasses must implement this method to perform the actual - configuration loading. - - -

- This method is invoked by - , - before any other initialization occurs. -

-
- - In the case of errors encountered while refreshing the object factory. - -
- - - Returns the internal object factory of the parent context if it implements - ; else, - returns the parent context itself. - - - The parent context's object factory, or the parent itself. - - - - - Raises an application context event. - - - Any arguments to the event. May be . - - - - - Raises an application context event. - - - The source of the event. - - - Any arguments to the event. May be . - - - - - Modify the application context's internal object factory after its standard - initialization. - - -

- All object definitions will have been loaded, but no objects - will have been instantiated yet. This allows for the registration - of special - s - in certain - implementations. -

-
- - The object factory used by the application context. - - - In the case of errors. - . -
- - - Template method which can be overridden to add context-specific - refresh work. - - -

- Called on initialization of special objects, before instantiation - of singletons. -

-
-
- - - Instantiate and invoke all registered - - objects, respecting any explicit ordering. - - - - Must be called before singleton instantiation. - - - In the case of errors. - - - - Resets the well-known ObjectPostProcessorChecker that logs an info - message when an object is created during IObjectPostProcessor - instantiation, i.e. when an object is not eligible for being - processed by all IObjectPostProcessors. - - - - - Initializes the default event registry for this context. - - - - - Returns the internal message source of the parent context if said - parent context is an , else - simply the parent context itself. - - - The internal message source of the parent context if said - parent context is an , else - simply the parent context itself. - - - - - Initializes the default message source for this context. - - -

- Uses any parent context's message source if one is not available - in this context. -

-
-
- - - Add a new - that will get applied to the internal object factory of this application context - on refresh, before any of the object definitions are evaluated. - - - The factory processor to register. - - - - - Load or refresh the persistent representation of the configuration, - which might an XML file, properties file, or relational database schema. - - - If the configuration cannot be loaded. - - - If the object factory could not be initialized. - - - - - Ensures, that predefined ObjectPostProcessors are registered with this ObjectFactory - - - - - - Starts this component. - - Should not throw an exception if the component is already running. - In the case of a container, this will propagate the start signal - to all components that apply. - - - - - Stops this component. - - - Should not throw an exception if the component isn't started yet. - In the case of a container, this will propagate the stop signal - to all components that apply. - - - - - Return the names of objects matching the given - (including subclasses), judging from the object definitions. - - - The (class or interface) to match, or - for all object names. - - - The names of all objects defined in this factory, or an empty array if none - are defined. - - - - - - Return the names of objects matching the given - (including subclasses), judging from the object definitions. - - - The (class or interface) to match, or - for all object names. - - - Whether to include prototype objects too or just singletons (also applies to - s). - - - Whether to include s too - or just normal objects. - - - The names of all objects defined in this factory, or an empty array if none - are defined. - - - - - - Return the names of all objects defined in this factory. - - - The names of all objects defined in this factory, or an empty array if none - are defined. - - - - - - Return the registered - for the - given object, allowing access to its property values and constructor - argument values. - - The name of the object. - - The registered - . - - - If there is no object with the given name. - - - In the case of errors. - - - - - Return the registered - for the - given object, allowing access to its property values and constructor - argument values. - - The name of the object. - Whether to search parent object factories. - - The registered - . - - - If there is no object with the given name. - - - In the case of errors. - - - - - Return the object instances that match the given object - (including subclasses), judging from either object - definitions or the value of - in the case of - s. - - - The (class or interface) to match. - - - A of the matching objects, - containing the object names as keys and the corresponding object instances - as values. - - - If the objects could not be created. - - - - - - Return the object instances that match the given object - (including subclasses), judging from either object - definitions or the value of - in the case of - s. - - - The (class or interface) to match. - - - Whether to include prototype objects too or just singletons (also applies to - s). - - - Whether to include s too - or just normal objects. - - - A of the matching objects, - containing the object names as keys and the corresponding object instances - as values. - - - If the objects could not be created. - - - - - - Check if this object factory contains an object definition with the given name. - - The name of the object to look for. - - True if this object factory contains an object definition with the given name. - - - - - - Does this object factory contain an object with the given name? - - The name of the object to query. - - if an object with the given name is defined. - - - - - - Return the aliases for the given object name, if defined. - - The object name to check for aliases. - The aliases, or an empty array if none. - - If there's no such object definition. - - - - - - Return an unconfigured(!) instance (possibly shared or independent) of the given object name. - - The name of the object to return. - - The the object may match. Can be an interface or - superclass of the actual class. For example, if the value is the - class, this method will succeed whatever the - class of the returned instance. - - - The arguments to use if creating a prototype using explicit arguments to - a factory method. If there is no factory method and the - supplied array is not , then - match the argument values by type and call the object's constructor. - - The unconfigured(!) instance of the object. - - If there's no such object definition. - - - If the object could not be created. - - - If the object is not of the required type. - - - If the supplied is . - - - - This method will only instantiate the requested object. It does NOT inject any dependencies! - - - - - Return an instance (possibly shared or independent) of the given object name. - - The name of the object to return. - - the object may match. Can be an interface or - superclass of the actual class. For example, if the value is the - class, this method will succeed whatever the - class of the returned instance. - - The instance of the object. - - If there's no such object definition. - - - If the object could not be created. - - - If the object is not of the required type. - - - - - - Return an instance (possibly shared or independent) of the given object name. - - The name of the object to return. - The instance of the object. - - If there's no such object definition. - - - If the object could not be created. - - - - - - Return an instance (possibly shared or independent) of the given object name. - - -

- This method allows an object factory to be used as a replacement for the - Singleton or Prototype design pattern. -

-

- Note that callers should retain references to returned objects. There is no - guarantee that this method will be implemented to be efficient. For example, - it may be synchronized, or may need to run an RDBMS query. -

-

- Will ask the parent factory if the object cannot be found in this factory - instance. -

-
- The name of the object to return. - - The arguments to use if creating a prototype using explicit arguments to - a static factory method. If there is no factory method and the - arguments are not null, then match the argument values by type and - call the object's constructor. - - The instance of the object. - - If there's no such object definition. - - - If the object could not be created. - - - If the supplied is . - -
- - - Return an instance (possibly shared or independent) of the given object name. - - The name of the object to return. - - The the object may match. Can be an interface or - superclass of the actual class. For example, if the value is the - class, this method will succeed whatever the - class of the returned instance. - - - The arguments to use if creating a prototype using explicit arguments to - a factory method. If there is no factory method and the - supplied array is not , then - match the argument values by type and call the object's constructor. - - The instance of the object. - - If there's no such object definition. - - - If the object could not be created. - - - If the object is not of the required type. - - - If the supplied is . - - - - - - Is this object a singleton? - - The name of the object to query. - True if the named object is a singleton. - - If there's no such object definition. - - - - - - Determines whether the specified object name is prototype. That is, will GetObject - always return independent instances? - - The name of the object to query - - true if the specified object name will always deliver independent instances; otherwise, false. - - This method returning false does not clearly indicate a singleton object. - It indicated non-independent instances, which may correspond to a scoped object as - well. use the IsSingleton property to explicitly check for a shared - singleton instance. - Translates aliases back to the corresponding canonical object name. Will ask the - parent factory if the object can not be found in this factory instance. - - - if there is no object with the given name. - - - - Determines whether the object with the given name matches the specified type. - - More specifically, check whether a GetObject call for the given name - would return an object that is assignable to the specified target type. - Translates aliases back to the corresponding canonical bean name. - Will ask the parent factory if the bean cannot be found in this factory instance. - - The name of the object to query. - Type of the target to match against. - - true if the object type matches; otherwise, false - if it doesn't match or cannot be determined yet. - - Ff there is no object with the given name - - - - - Determine the of the object with the - given name. - - The name of the object to query. - - The of the object, or - if not determinable. - - - - - - Injects dependencies into the supplied instance - using the named object definition. - - - The object instance that is to be so configured. - - - The name of the object definition expressing the dependencies that are to - be injected into the supplied instance. - - - - - - Injects dependencies into the supplied instance - using the supplied . - - - The object instance that is to be so configured. - - - The name of the object definition expressing the dependencies that are to - be injected into the supplied instance. - - - An object definition that should be used to configure object. - - - - - - Determines whether the local object factory contains a bean of the given name, - ignoring object defined in ancestor contexts. - This is an alternative to ContainsObject, ignoring an object - of the given name from an ancestor object factory. - - The name of the object to query. - - true if objects with the specified name is defined in the local factory; otherwise, false. - - - - - Resolve the message identified by the supplied - . - - The name of the message to resolve. - - The that represents - the culture for which the resource is localized. - - - The array of arguments that will be filled in for parameters within - the message, or if there are no parameters - within the message. Parameters within a message should be - referenced using the same syntax as the format string for the - method. - - - The resolved message if the lookup was successful (see above for - the return value in the case of an unsuccessful lookup). - - - If no message could be resolved. - - - If the supplied is . - - - - - - Resolve the message identified by the supplied - . - - The name of the message to resolve. - The default message. - - The that represents - the culture for which the resource is localized. - - - The array of arguments that will be filled in for parameters within - the message, or if there are no parameters - within the message. Parameters within a message should be - referenced using the same syntax as the format string for the - method. - - - The resolved message if the lookup was successful (see above for - the return value in the case of an unsuccessful lookup). - - - If no message could be resolved. - - - If the supplied is . - - - - - - Resolve the message identified by the supplied - . - - The name of the message to resolve. - - The resolved message if the lookup was successful. - - - If no message could be resolved. - - - - - - Resolve the message identified by the supplied - . - - The name of the message to resolve. - - The array of arguments that will be filled in for parameters within - the message, or if there are no parameters - within the message. Parameters within a message should be - referenced using the same syntax as the format string for the - method. - - - The resolved message if the lookup was successful. - - - If no message could be resolved. - - - If the supplied is . - - - - - - Resolve the message identified by the supplied - . - - The name of the message to resolve. - - The that represents - the culture for which the resource is localized. - - - The resolved message if the lookup was successful (see above for - the return value in the case of an unsuccessful lookup). - - - If no message could be resolved. - - - If the supplied is . - - - - - - Resolve the message using all of the attributes contained within - the supplied - argument. - - - The value object storing those attributes that are required to - properly resolve a message. - - - The that represents - the culture for which the resource is localized. - - - The resolved message if the lookup was successful (see above for - the return value in the case of an unsuccessful lookup). - - - If the message could not be resolved. - - - - - - Gets a localized resource object identified by the supplied - . - - - The name of the resource object to resolve. - - - The with which the - resource is associated. - - - The resolved object, or if not found. - - - - - - Gets a localized resource object identified by the supplied - . - - - The name of the resource object to resolve. - - - The resolved object, or if not found. - - - - - - Gets a localized resource object identified by the supplied - . - - - The name of the resource object to resolve. - - - The with which the - resource is associated. - - - The resolved object, or if not found. - - - - - - Gets a localized resource object identified by the supplied - . - - - The name of the resource object to resolve. - - - The resolved object, or if not found. - - - - - - Applies resources to object properties. - - - An object that contains the property values to be applied. - - - The base name of the object to use for key lookup. - - - The with which the - resource is associated. - - - - - - Publishes all events of the source object. - - - The source object containing events to publish. - - - - - - Subscribes to all events published, if the subscriber - implements compatible handler methods. - - The subscriber to use. - - - - - Subscribes to published events of a all objects of a given - , if the subscriber implements - compatible handler methods. - - The subscriber to use. - - The target to subscribe to. - - - - - - Unsubscribes to all events published, if the subscriber - implmenets compatible handler methods. - - The subscriber to use - - - - Unsubscribes to the published events of all objects of a given - , if the subscriber implements - compatible handler methods. - - The subscriber to use. - - The target to unsubscribe from - - - - - Publishes an application context event. - - -

- -

-
- - The source of the event. May be . - - - The event that is to be raised. - - -
- - - An object that can be used to synchronize access to the - - - - - The timestamp when this context was first loaded. - - - The timestamp (milliseconds) when this context was first loaded. - - - - - Gets a flag indicating whether context should be case sensitive. - - true if object lookups are case sensitive; otherwise, false. - - - - The for this context. - - - If the context has not been initialized yet. - - - - - The for this context. - - - If the context has not been initialized yet. - - - - - Returns the list of the - s - that will be applied to the objects created with this factory. - - -

- The elements of this list are instances of implementations of the - - interface. -

-
- - The list of the - s - that will be applied to the objects created with this factory. - -
- - - Return the internal object factory of this application context. - - - - - Gets the parent context, or if there is no - parent context. - - - The parent context, or if there is no - parent. - - - - - - Gets a value indicating whether this component is currently running. - - - true if this component is running; otherwise, false. - - - In the case of a container, this will return true - only if all components that apply are currently running. - - - - - Gets a dictionary of all singleton beans that implement the - ILifecycle interface in this context. - - A dictionary of ILifecycle objects with object name as key. - - - - Raised in response to an implementation-dependant application - context event. - - - - - The date and time this context was first loaded. - - - The representing when this context - was first loaded. - - - - - A name for this context. - - - A name for this context. - - - - - Return the number of objects defined in the factory. - - - The number of objects defined in the factory. - - - - - - Return an instance (possibly shared or independent) of the given object name. - - The name of the object to return. - The instance of the object. - - If there's no such object definition. - - - If the object could not be created. - - - - - - Return the parent object factory, or if there is none. - - - The parent object factory, or if there is none. - - - - - - Allows for custom modification of new object instances, e.g. - checking for marker interfaces or wrapping them with proxies. - - -

- Application contexts can auto-detect - - objects in their object definitions and apply them before any other - objects get created. Plain object factories allow for programmatic - registration of post-processors. -

-

- Typically, post-processors that populate objects via marker interfaces - or the like will implement - , - and post-processors that wrap objects with proxies will normally implement - . -

-
- Juergen Hoeller - Aleksandar Seovic (.NET) - -
- - - Apply this - to the given new object instance before any object initialization callbacks. - - -

- The object will already be populated with property values. - The returned object instance may be a wrapper around the original. -

-
- - The new object instance. - - - The name of the object. - - - The object instance to use, either the original or a wrapped one. - - - In case of errors. - -
- - - Apply this to the - given new object instance after any object initialization callbacks. - - -

- The object will already be populated with property values. The returned object - instance may be a wrapper around the original. -

-
- - The new object instance. - - - The name of the object. - - - The object instance to use, either the original or a wrapped one. - - - In case of errors. - -
- - - Interface that can be implemented by objects that should be orderable, e.g. in an - . - - -

- The actual order can be interpreted as prioritization, the first object (with the - lowest order value) having the highest priority. -

-
- Juergen Hoeller - Aleksandar Seovic (.Net) -
- - - Return the order value of this object, where a higher value means greater in - terms of sorting. - - -

- Normally starting with 0 or 1, with indicating - greatest. Same order values will result in arbitrary positions for the affected - objects. -

-

- Higher value can be interpreted as lower priority, consequently the first object - has highest priority. -

-
- The order value. -
- - - Abstract implementation of the interface, - implementing common handling of message variants, making it easy - to implement a specific strategy for a concrete . - - -

Subclasses must implement the abstract ResolveObject - method.

-

Note: By default, message texts are only parsed through - String.Format if arguments have been passed in for the message. In case - of no arguments, message texts will be returned as-is. As a consequence, - you should only use String.Format escaping for messages with actual - arguments, and keep all other messages unescaped. -

-

Supports not only IMessageSourceResolvables as primary messages - but also resolution of message arguments that are in turn - IMessageSourceResolvables themselves. -

-

This class does not implement caching of messages per code, thus - subclasses can dynamically change messages over time. Subclasses are - encouraged to cache their messages in a modification-aware fashion, - allowing for hot deployment of updated messages. -

-
- Rod Johnson - Juergen Hoeller - Griffin Caprio (.NET) - Harald Radi (.NET) - - - -
- - - Sub-interface of to be - implemented by objects that can resolve messages hierarchically. - - Rod Johnson - Juergen Hoeller - Mark Pollack (.NET) - - - - - The parent message source used to try and resolve messages that - this object can't resolve. - - -

- If the value of this property is then no - further resolution is possible. -

-
-
- - - holds the logger instance shared with subclasses. - - - - - Initializes this instance. - - - - - Resolve the message identified by the supplied - . - - The name of the message to resolve. - - The resolved message if the lookup was successful (see above for - the return value in the case of an unsuccessful lookup). - - - If the lookup is not successful throw NoSuchMessageException - - - - - Resolve the message identified by the supplied - . - - The name of the message to resolve. - The that represents - the culture for which the resource is localized. - - The resolved message if the lookup was successful (see above for - the return value in the case of an unsuccessful lookup). - - - Note that the fallback behavior based on CultureInfo seem to - have a bug that is fixed by installed .NET 1.1 Service Pack 1. -

- If the lookup is not successful, implementations are permitted to - take one of two actions. -

- If the lookup is not successful throw NoSuchMessageException -
-
- - - Resolve the message identified by the supplied - . - - The name of the message to resolve. - The array of arguments that will be filled in for parameters within - the message, or if there are no parameters - within the message. Parameters within a message should be - referenced using the same syntax as the format string for the - method. - - The resolved message if the lookup was successful (see above for - the return value in the case of an unsuccessful lookup). - - - If the lookup is not successful throw NoSuchMessageException - - - - - Resolve the message identified by the supplied - . - - The name of the message to resolve. - The that represents - the culture for which the resource is localized. - The array of arguments that will be filled in for parameters within - the message, or if there are no parameters - within the message. Parameters within a message should be - referenced using the same syntax as the format string for the - method. - - The resolved message if the lookup was successful (see above for - the return value in the case of an unsuccessful lookup). - - - Note that the fallback behavior based on CultureInfo seem to - have a bug that is fixed by installed .NET 1.1 Service Pack 1. -

- If the lookup is not successful throw NoSuchMessageException. -

-
-
- - - Resolve the message identified by the supplied - . - - The name of the message to resolve. - The default message if name is not found. - The that represents - the culture for which the resource is localized. - The array of arguments that will be filled in for parameters within - the message, or if there are no parameters - within the message. Parameters within a message should be - referenced using the same syntax as the format string for the - method. - - The resolved message if the lookup was successful (see above for - the return value in the case of an unsuccessful lookup). - - - Note that the fallback behavior based on CultureInfo seem to - have a bug that is fixed by installed .NET 1.1 Service Pack 1. -

- If the lookup is not successful throw NoSuchMessageException -

-
-
- - - Resolve the message using all of the attributes contained within - the supplied - argument. - - The value object storing those attributes that are required to - properly resolve a message. - The that represents - the culture for which the resource is localized. - - The resolved message if the lookup was successful. - - - If the message could not be resolved. - - - - - Gets a localized resource object identified by the supplied - . - - - The name of the resource object to resolve. - - - The resolved object, or if not found. - - - - - - Gets a localized resource object identified by the supplied - . - - - Note that the fallback behavior based on CultureInfo seem to - have a bug that is fixed by installed .NET 1.1 Service Pack 1. - - - The name of the resource object to resolve. - - - The with which the - resource is associated. - - - The resolved object, or if not found. If - the resource name resolves to null, then in .NET 1.1 the return - value will be String.Empty whereas in .NET 2.0 it will return - null. - - - - - - Applies resources to object properties. - - - An object that contains the property values to be applied. - - - The base name of the object to use for key lookup. - - - The with which the - resource is associated. - - - - - Resolve the given code and arguments as message in the given culture, - returning null if not found. Does not fall back to the code - as default message. Invoked by GetMessage methods. - - The code to lookup up, such as 'calculator.noRateSet'. - array of arguments that will be filled in for params - within the message. - The with which the - resource is associated. - - The resolved message if the lookup was successful. - - - - - Try to retrieve the given message from the parent MessageSource, if any. - - The code to lookup up, such as 'calculator.noRateSet'. - array of arguments that will be filled in for params - within the message. - The with which the - resource is associated. - - The resolved message if the lookup was successful. - - - - - Return a fallback default message for the given code, if any. - - - Default is to return the code itself if "UseCodeAsDefaultMessage" - is activated, or return no fallback else. In case of no fallback, - the caller will usually receive a NoSuchMessageException from GetMessage - - The code to lookup up, such as 'calculator.noRateSet'. - The default message to use, or null if none. - - - - Renders the default message string. The default message is passed in as specified by the - caller and can be rendered into a fully formatted default message shown to the user. - - Default implementation passed he String for String.Format resolving any - argument placeholders found in them. Subclasses may override this method to plug - in custom processing of default messages. - - The default message. - The array of agruments that will be filled in for parameter - placeholders within the message, or null if none. - The with which the - resource is associated. - The rendered default message (with resolved arguments) - - - - Format the given default message String resolving any - agrument placeholders found in them. - - The message to format. - The array of agruments that will be filled in for parameter - placeholders within the message, or null if none. - The with which the - resource is associated. - The formatted message (with resolved arguments) - - - - Search through the given array of objects, find any - MessageSourceResolvable objects and resolve them. - - - Allows for messages to have MessageSourceResolvables as arguments. - - - The array of arguments for a message. - The with which the - resource is associated. - An array of arguments with any IMessageSourceResolvables resolved - - - - Gets the specified resource (e.g. Icon or Bitmap). - - The name of the resource to resolve. - - The to resolve the - code for. - - The resource if found. otherwise. - - - - Applies resources from the given name on the specified object. - - - An object that contains the property values to be applied. - - - The base name of the object to use for key lookup. - - - The with which the - resource is associated. - - - - - Subclasses must implement this method to resolve a message. - - The code to lookup up, such as 'calculator.noRateSet'. - The with which the - resource is associated. - The resolved message from the backing store of message data. - - - - Resolves an object (typically an icon or bitmap). - - -

- Subclasses must implement this method to resolve an object. -

-
- The code of the object to resolve. - - The to resolve the - code for. - - - The resolved object or if not found. - -
- - - Applies resources to object properties. - - -

- Subclasses must implement this method to apply resources - to an arbitrary object. -

-
- - An object that contains the property values to be applied. - - - The base name of the object to use for key lookup. - - - The with which the - resource is associated. - -
- - Gets or Sets a value indicating whether to use the message code as - default message instead of throwing a NoSuchMessageException. - Useful for development and debugging. Default is "false". - - -

Note: In case of a IMessageSourceResolvable with multiple codes - (like a FieldError) and a MessageSource that has a parent MessageSource, - do not activate "UseCodeAsDefaultMessage" in the parent: - Else, you'll get the first code returned as message by the parent, - without attempts to check further codes.

-

To be able to work with "UseCodeAsDefaultMessage" turned on in the parent, - AbstractMessageSource contains special checks - to delegate to the internal GetMessageInternal method if available. - In general, it is recommended to just use "UseCodeAsDefaultMessage" during - development and not rely on it in production in the first place, though.

-

Alternatively, consider overriding the GetDefaultMessage - method to return a custom fallback message for an unresolvable code.

-
- - true if use the message code as default message instead of - throwing a NoSuchMessageException; otherwise, false. - -
- - - The parent message source used to try and resolve messages that - this object can't resolve. - - - -

- If the value of this property is then no - further resolution is possible. -

-
-
- - - Convenient abstract superclass for - implementations that - draw their configuration from XML documents containing object - definitions as understood by an - . - - Rod Johnson - Juergen Hoeller - Griffin Caprio (.NET) - - - - The instance for this class. - - - - - Creates a new instance of the - - class. - - -

- This is an class, and as such exposes - no public constructors. -

-
-
- - - Creates a new instance of the - class - with the given parent context. - - -

- This is an class, and as such exposes - no public constructors. -

-
- The application context name. - Flag specifying whether to make this context case sensitive or not. - The parent context. -
- - - Instantiates and populates the underlying - with the object - definitions yielded up by the - method. - - - In the case of errors encountered while refreshing the object factory. - - - In the case of errors encountered reading any of the resources - yielded by the method. - - - - - - Initialize the object definition reader used for loading the object - definitions of this context. - - -

- The default implementation of this method is a no-op; i.e. it does - nothing. Can be overridden in subclasses to provide custom - initialization of the supplied - ; for example, a derived - class may want to turn off XML validation. -

-
- - The object definition reader used by this context. - -
- - - Load the object definitions with the given - . - - -

- The lifecycle of the object factory is handled by - ; - therefore this method is just supposed to load and / or register - object definitions. -

-
- - The reader containing object definitions. - - In case of object registration errors. - - - In the case of errors encountered reading any of the resources - yielded by the method. - -
- - - Loads the object definitions into the given object factory, typically through - delegating to one or more object definition readers. - - The object factory to lead object definitions into - - - - - - Customizes the internal object factory used by this context. - - Called for each attempt. -

- The default implementation is empty. Can be overriden in subclassses to customize - DefaultListableBeanFatory's standard settings. -

- The newly created object factory for this context -
- - - Create an internal object factory for this context. - - -

- Called for each attempt. - This default implementation creates a - - with the internal object factory of this context's parent serving - as the parent object factory. Can be overridden in subclasse,s - for example to customize DefaultListableBeanFactory's settings. -

-
- The object factory for this context. -
- - - An array of resource locations, referring to the XML object - definition files that this context is to be built with. - - -

- Examples of the format of the various strings that would be - returned by accessing this property can be found in the overview - documentation of with the - class. -

-
- - An array of resource locations, or if none. - -
- - - Subclasses must return their internal object factory here. - - - The internal object factory for the application context. - - - - - - - implementation that passes the application context to object that - implement the - , - , and - interfaces. - - -

- If an object's class implements more than one of the - , - , and - interfaces, then the - order in which the interfaces are satisfied is as follows... - - - - - - - - - - - -

-

- Application contexts will automatically register this with their - underlying object factory. Applications should thus never need to use - this class directly. -

-
- Juergen Hoeller - Griffin Caprio (.NET) -
- - - Creates a new instance of the - class. - - - The that this - instance will work with. - - - - - Apply this - to the given new object instance before any object - initialization callbacks. - - - The new object instance. - - - The name of the object. - - - The the object instance to use, either the original or a wrapped one. - - - In case of errors. - - - - - - Apply this to the - given new object instance after any object initialization - callbacks. - - - The new object instance. - - - The name of the object. - - - The object instance to use, either the original or a wrapped one. - - - In case of errors. - - - - - - Convenient superclass for application objects that want to be aware of - the application context, e.g. for custom lookup of collaborating object - or for context-specific resource access. - - -

- It saves the application context reference and provides an - initialization callback method. Furthermore, it offers numerous - convenience methods for message lookup. -

-

- There is no requirement to subclass this class: it just makes things - a little easier if you need access to the context, e.g. for access to - file resources or to the message source. Note that many application - objects do not need to be aware of the application context at all, - as they can receive collaborating objects via object references. -

-
- Rod Johnson - Juergen Hoeller - Griffin Caprio (.NET) -
- - - To be implemented by any object that wishes to be notified - of the that it runs in. - - -

- Implementing this interface makes sense when an object requires access - to a set of collaborating objects. Note that configuration via object - references is preferable to implementing this interface just for object - lookup purposes. -

-

- This interface can also be implemented if an object needs access to - file resources, i.e. wants to call - , or access to - the . However, it is - preferable to implement the more specific - - interface to receive a reference to the - object in that scenario. -

-

- Note that dependencies can also - be exposed as object properties of the - type, populated via strings with - automatic type conversion performed by an object factory. This obviates - the need for implementing any callback interface just for the purpose - of accessing a specific file resource. -

-

- - is a convenience implementation of this interface for your - application objects. -

-

- For a list of all object lifecycle methods, see the overview for the - interface. -

-
- Rod Johnson - Mark Pollack (.NET) - - - -
- - - Sets the that this - object runs in. - - -

- Normally this call will be used to initialize the object. -

-

- Invoked after population of normal object properties but before an - init callback such as - 's - - or a custom init-method. Invoked after the setting of any - 's - - property. -

-
- - In the case of application context initialization errors. - - - If thrown by any application context methods. - - -
- - - Creates a new instance of the - class. - - -

- This is an class, and as such exposes no - public constructors. -

-
-
- - - Creates a new instance of the - class. - - -

- This is an class, and as such exposes no - public constructors. -

-
- - The that this - object runs in. - -
- - - Intializes the wrapped - . - - -

- This is a template method that subclasses can override for custom - initialization behavior. -

-

- Gets called by the - - instance directly after setting the context instance. -

- - Does not get called on reinitialization of the context. - -
- - In the case of any initialization errors. - - - If thrown by application context methods. - -
- - - The context class that any context passed to the - - must be an instance of. - - - The - . - - - - - Return a for the - application context used by this object, for easy message access. - - - - - Gets or sets the that this - object runs in. - - - When passed an unexpected - implementation - instance that is not compatible with the - defined by the value of the - . - property. Also, thrown when trying to re-initialize with a - different than was - originally used. - - - If thrown by any application context methods. - - - - - - - Creates an instance - using context definitions supplied in a custom configuration and - configures the with that instance. - - - Implementations of the - interface must provide the following two constructors: - - - - A constructor that takes a string array of resource locations. - - - - - A constructor that takes a reference to a parent application context - and a string array of resource locations (and in that order). - - - -

- Note that if the type attribute is not present in the declaration - of a particular context, then a default - - is assumed. This default - - is currently the - ; please note the exact - of this default is an - implementation detail, that, while unlikely, may do so in the future. - to -

-
- -

- This is an example of specifying a context that reads its resources from - an embedded Spring.NET XML object configuration file... -

- - - - -
- - - - - - - - - -

- This is an example of specifying a context that reads its resources from - a custom configuration section within the same application / web - configuration file and uses case insensitive object lookups. -

-

- Please note that you must adhere to the naming - of the various sections (i.e. '<sectionGroup name="spring">' and - '<section name="context">'. -

- - - - -
-
- - - - - - - - - - - - -

- And this is an example of specifying a hierarchy of contexts. The - hierarchy in this case is only a simple parent->child hierarchy, but - hopefully it illustrates the nesting of context configurations. This - nesting of contexts can be arbitrarily deep, and is one way... child - contexts know about their parent contexts, but parent contexts do not - know how many child contexts they have (if any), or have references - to any such child contexts. -

- - - - -
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Mark Pollack - Aleksandar Seovic - Rick Evans - - - - - Creates an instance - using the context definitions supplied in a custom - configuration section. - - -

- This instance is - also used to configure the . -

-
- - The configuration settings in a corresponding parent - configuration section. - - - The configuration context when called from the ASP.NET - configuration system. Otherwise, this parameter is reserved and - is . - - - The for the section. - - - An instance - populated with the object definitions supplied in the configuration - section. - -
- - - Create all child-contexts in the given for the given context. - - The parent context to use - The current configContext - The list of child context elements - - - - Instantiates a new context. - - - - - Gets the context's name specified in the name attribute of the context element. - - The current configContext - The context element - - - - Extracts the context-type from the context element. - If none is specified, returns the parent's type. - - - - - Extracts the case-sensitivity attribute from the context element - - - - - Gets the context specified in the type - attribute of the context element. - - -

- If this attribute is not defined it defaults to the - type. -

-
- - If the context type does not implement the - interface. - -
- - - Returns the array of resources containing object definitions for - this context. - - - - - Returns the array of child contexts for this context. - - - - - The of - created if no type attribute is specified on a context element. - - - - - - Get the context's case-sensitivity to use if none is specified - - -

- Derived handlers may override this property to change their default case-sensitivity. -

-

- Defaults to 'true'. -

-
-
- - - Returns if the context should be lazily - initialized. - - - - - Constants defining the structure and values associated with the - schema for laying out Spring.NET contexts in XML. - - - - - Defines a single - . - - - - - Specifies a context name. - - - - - Specifies if context should be case sensitive or not. Default is true. - - - - - Specifies a . - - -

- Does not have to be fully assembly qualified, but its generally regarded - as better form if the names of one's objects - are specified explicitly. -

-
-
- - - Specifies whether context should be lazy initialized. - - - - - Defines an - - - - - Specifies the URI for an - . - - - - - Provides access to a central registry of - s. - - -

- A singleton implementation to access one or more application contexts. Application - context instances are cached. -

-

Note that the use of this class or similar is unnecessary except (sometimes) for - a small amount of glue code. Excessive usage will lead to code that is more tightly - coupled, and harder to modify or test. Consider refactoring your code to use standard - Dependency Injection techniques or implement the interface IApplicationContextAware to - obtain a reference to an application context.

-
- Mark Pollack - Aleksandar Seovic - -
- - - The shared instance for this class (and derived classes). - - - - - Creates a new instance of the ContextRegistry class. - - -

- Explicit static constructor to tell C# compiler - not to mark type as beforefieldinit. -

-
-
- - - Registers an instance of an - . - - -

- This is usually called via a - inside a .NET - application configuration file. -

-
- The application context to be registered. - - If a context has previously been registered using the same name - -
- - - Returns the root application context. - - -

- The first call to GetContext will create the context - as specified in the .NET application configuration file - under the location spring/context. -

-
- The root application context. -
- - - Returns context based on specified name. - - -

- The first call to GetContext will create the context - as specified in the .NET application configuration file - under the location spring/context. -

-
- The context name. - The specified context, or null, if context with that name doesn't exists. - - If the context name is null or empty - -
- - - Removes all registered - s from this - registry. - - - Raises the event while still holding a lock on - - - - - Allows to check, if a context is already registered - - The context name. - true, if the context is already registered. false otherwise - - - - This event is fired, if ContextRegistry.Clear() is called.
- Clients may register to get informed -
- - This event is fired while still holding a lock on the Registry.
- 'sender' parameter is sent as typeof(ContextRegistry), EventArgs are not used -
-
- - - Gets an object that should be used to synchronize access to ContextRegistry - from the calling code. - - - - - Default implementation of the - interface. - - -

- Provides easy ways to store all the necessary values needed to resolve - messages from an . -

-
- Juergen Hoeller - Griffin Caprio (.NET) - -
- - - Describes objects that are suitable for message resolution in a - . - - -

- Spring.NET's own validation error classes implement this interface. -

-
- Juergen Hoeller - Mark Pollack (.NET) - - -
- - - Return the codes to be used to resolve this message, in the order - that they are to be tried. - - -

- The last code will therefore be the default one. -

-
- - A array of codes which are associated - with this message. - -
- - - Return the array of arguments to be used to resolve this message. - - - An array of objects to be used as parameters to replace - placeholders within the message text. - - - - - Return the default message to be used to resolve this message. - - - The default message, or if there is no - default. - - - - - Creates a new instance of the - class - using a single code. - - The message code to be resolved. - - - - Initializes a new instance of the class. - - The codes to be used to resolve this message - - - - Creates a new instance of the - class - using multiple codes. - - The message codes to be resolved. - - The arguments used to resolve the supplied . - - - - - Creates a new instance of the - class - using multiple codes and a default message. - - The message codes to be resolved. - - The arguments used to resolve the supplied . - - - The default message used if no code could be resolved. - - - - - Creates a new instance of the - class - from another resolvable. - - -

- This is the copy constructor for the - class. -

-
- - The to be copied. - - - If the supplied is . - -
- - - Returns a representation of this - . - - - A representation of this - . - - - - - Calls the visit method on the supplied - to output a version of this class. - - The visitor to use. - - A representation of this - . - - - - - Return the codes to be used to resolve this message, in the order - that they are to be tried. - - - A array of codes which are associated - with this message. - - - - - - Return the array of arguments to be used to resolve this message. - - - An array of objects to be used as parameters to replace - placeholders within the message text. - - - - - - Return the default code for this resolvable. - - - The default code of this resolvable; this will be the last code in - the codes array, or if this instance has no - codes. - - - - - - Return the default message to be used to resolve this message. - - - The default message, or if there is no - default. - - - - - - Default section handler that can handle any configuration section. - - -

- Simply returns the configuration section as an . -

-
- Aleksandar Seovic -
- - - Returns the configuration section as an - - - The configuration settings in a corresponding parent - configuration section. - - - The configuration context when called from the ASP.NET - configuration system. Otherwise, this parameter is reserved and - is a null reference. - - - The for the section. - - Config section as XmlElement. - - - - Empty implementation that - simply delegates all method calls to it's parent - . - - -

- If no parent is available, - no messages will be resolved (and a - will be thrown). -

-

- Used as placeholder by the - class, - if the context definition doesn't define its own - . Not intended for direct use - in applications. -

-
- Juergan Hoeller - Rick Evans (.NET) - -
- - - Creates a new instance of the - class. - - - - - Creates a new instance of the - class. - - - The parent message source used to try and resolve messages that - this object can't resolve. - - - - - Resolve the message identified by the supplied - . - - The name of the message to resolve. - - The resolved message if the lookup was successful (see above for - the return value in the case of an unsuccessful lookup). - - - If the message could not be resolved. - - - - - - Resolve the message identified by the supplied - . - - The name of the message to resolve. - - The array of arguments that will be filled in for parameters within - the message, or if there are no parameters - within the message. Parameters within a message should be - referenced using the same syntax as the format string for the - method. - - - The resolved message if the lookup was successful (see above for - the return value in the case of an unsuccessful lookup). - - - If the message could not be resolved. - - - - - - Resolve the message identified by the supplied - . - - The name of the message to resolve. - - The that represents - the culture for which the resource is localized. - - - The resolved message if the lookup was successful (see above for - the return value in the case of an unsuccessful lookup). - - - If the message could not be resolved. - - - - - - Resolve the message identified by the supplied - . - - The name of the message to resolve. - - The that represents - the culture for which the resource is localized. - - - The array of arguments that will be filled in for parameters within - the message, or if there are no parameters - within the message. Parameters within a message should be - referenced using the same syntax as the format string for the - method. - - - The resolved message if the lookup was successful (see above for - the return value in the case of an unsuccessful lookup). - - - If the message could not be resolved. - - - - - - Resolve the message identified by the supplied - . - - The name of the message to resolve. - The default message. - - The that represents - the culture for which the resource is localized. - - - The array of arguments that will be filled in for parameters within - the message, or if there are no parameters - within the message. Parameters within a message should be - referenced using the same syntax as the format string for the - method. - - - The resolved message if the lookup was successful (see above for - the return value in the case of an unsuccessful lookup). - - - If the message could not be resolved. - - - - - - Resolve the message using all of the attributes contained within - the supplied - argument. - - - The value object storing those attributes that are required to - properly resolve a message. - - - The that represents - the culture for which the resource is localized. - - - The resolved message if the lookup was successful (see above for - the return value in the case of an unsuccessful lookup). - - - If the message could not be resolved. - - - If the message could not be resolved. - - - - - - Gets a localized resource object identified by the supplied - . - - - The name of the resource object to resolve. - - - The resolved object, or if not found. - - - - - - Gets a localized resource object identified by the supplied - . - - - The name of the resource object to resolve. - - - The with which the - resource is associated. - - - The resolved object, or if not found. - - - - - - Applies resources to object properties. - - - An object that contains the property values to be applied. - - - The base name of the object to use for key lookup. - - - The with which the - resource is associated. - - - - - - The parent message source used to try and resolve messages that - this object can't resolve. - - - - - - Generic ApplicationContext implementation that holds a single internal - instance and does not - assume a specific object definition format. - - - Implements the interface in order - to allow for aplying any object definition readers to it. - Typical usage is to register a variety of object definitions via the - interface and then call - to initialize those - objects with application context semantics (handling - , auto-detecting - ObjectFactoryPostProcessors, etc). - - In contrast to other IApplicationContext implementations that create a new internal - IObjectFactory instance for each refresh, the internal IObjectFactory of this context - is available right from the start, to be able to register object definitions on it. - may only be called once - Usage examples - - GenericApplicationContext ctx = new GenericApplicationContext(); - - - - Mark Pollack - - - - Interface for registries that hold object definitions, i.e. - - and - - instances. - - -

- Typically implemented by object factories that work with the - - hierarchy internally. -

-
- Juergen Hoeller - Rick Evans (.NET) -
- - - Return the names of all objects defined in this registry. - - - The names of all objects defined in this registry, or an empty array - if none defined - - - - - Check if this registry contains a object definition with the given name. - - - The name of the object to look for. - - - True if this object factory contains an object definition with the - given name. - - - - - Returns the - - for the given object name. - - - The name of the object to find a definition for. - - - The for - the given name (never null). - - - If the object definition cannot be resolved. - - - In case of errors. - - - - - Register a new object definition with this registry. - Must support - - and . - - - The name of the object instance to register. - - - The definition of the object instance to register. - - -

- Must support - and - . -

-
- - If the object definition is invalid. - -
- - - Return the aliases for the given object name, if defined. - - the object name to check for aliases - - -

- Will ask the parent factory if the object cannot be found in this - factory instance. -

-
- - The aliases, or an empty array if none. - - - If there's no such object definition. - -
- - - Given a object name, create an alias. We typically use this method to - support names that are illegal within XML ids (used for object names). - - - The name of the object. - - - The alias that will behave the same as the object name. - - - If there is no object with the given name. - - - If the alias is already in use. - - - - - Return the number of objects defined in the registry. - - - The number of objects defined in the registry. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - if set to true names in the context are case sensitive. - - - - Initializes a new instance of the class. - - The object factory instance to use for this context. - - - - Initializes a new instance of the class. - - The parent application context. - - - - Initializes a new instance of the class. - - The name of the application context. - if set to true names in the context are case sensitive. - The parent application context. - - - - Initializes a new instance of the class. - - The object factory to use for this context - The parent applicaiton context. - - - - Do nothing operation. We hold a single internal ObjectFactory and rely on callers - to register objects throug our public methods (or the ObjectFactory's). - - - In the case of errors encountered while refreshing the object factory. - - - - - Returns the - - for the given object name. - - The name of the object to find a definition for. - - The for - the given name (never null). - - - If the object definition cannot be resolved. - - - In case of errors. - - - - - Register a new object definition with this registry. - Must support - - and . - - The name of the object instance to register. - The definition of the object instance to register. - -

- Must support - and - . -

-
- - If the object definition is invalid. - -
- - - Given a object name, create an alias. We typically use this method to - support names that are illegal within XML ids (used for object names). - - The name of the object. - The alias that will behave the same as the object name. - - If there is no object with the given name. - - - If the alias is already in use. - - - - - Gets the parent context, or if there is no - parent context. Set the parent of this application context also setting - the parent of the interanl ObjectFactory accordingly. - - The parent context - - The parent context, or if there is no - parent. - - - - - - Return the internal object factory of this application context. - - - - - - Gets the underlying object factory of this context, available for - registering object definitions. - - You need to call Refresh to initialize the - objects factory and its contained objects with application context - semantics (autodecting IObjectFactoryPostProcessors, etc). - The internal object factory (as DefaultListableObjectFactory). - - - - Helper class for easy access to messages from an - , providing various - overloaded GetMessage methods. - - -

- Available from - , but also - reusable as a standalone helper to delegate to in application objects. -

-
- Juergen Hoeller - Griffin Caprio (.NET) - - -
- - - Creates a new instance of the - class - that uses the current - for all locale specific lookups. - - - The to use to locate messages. - - - - - Creates a new instance of the - class - - - The to use to locate - messages. - - - The to use for - locale specific messages. - - - - - Retrieve the message for the given code and the default - . - - The code of the message. - The message. - - - - Retrieve the message for the given code and the given - . - - The code of the message. - - The to use for - lookups. - - The message. - - - - Retrieve the message for the given code and the default - . - - The code of the message. - - The arguments for the message, or if none. - - The message. - - If the message could not be found. - - - - - Retrieve the message for the given code and the given - . - - The code of the message. - - The to use for - lookups. - - - The arguments for the message, or if none. - - The message. - - If the message could not be found. - - - - - Retrieve a mesage using the given - . - - - The . - - The message. - - If the message could not be found. - - - - - Retrieve a mesage using the given - in the given - . - - - The . - - - The to use for - lookups. - - The message - - If the message could not be found. - - - - - Visitor class to represent - instances. - - -

- Used in the first instance to supply stringified versions of - instances. -

-

- Other methods can be added here to return different representations, - including XML, CSV, etc.. -

-
- Griffin Caprio (.NET) -
- - - Creates a new instance of the - class. - - - - - Outputs the supplied - as a nicely formatted . - - - The to output. - - - - - Configuration section handler for the (recommended, Spring.NET standard) parsers - config section. - - -

- Spring.NET allows the registration of custom configuration parsers that - can be used to create simplified configuration schemas that better - describe object definitions. -

-

- For example, Spring.NET uses this facility internally in order to - define simplified schemas for various AOP, Data and Services definitions. -

-
- -

- The following example shows how to configure both this section handler - and how to define custom configuration parsers within a Spring.NET - config section. -

- - - - -
- - - - - - - ... - - ... - - - - - Aleksandar Seovic - - - - - Registers parsers specified in the (recommended, Spring.NET standard) - parsers config section with the . - - - The configuration settings in a corresponding parent - configuration section. - - - The configuration context when called from the ASP.NET - configuration system. Otherwise, this parameter is reserved and - is . - - - The for the section. - - - This method always returns , because parsers - are registered as a side-effect of this object's execution and there - is thus no need to return anything. - - - - - An that doesn't do a whole lot. - - -

- is an implementation of - the NullObject pattern. It should be used in those situations where a - needs to be passed (say to a - method) but where the resolution of messages is not required. -

-

- There should not (typically) be a need to instantiate instances of this class; - does not maintan any state - and the instance is - thus safe to pass around. -

-
- Aleksandar Seovic -
- - - The canonical instance of the - class. - - - - - Creates a new instance of the class. - - -

- Consider using - instead. -

-
-
- - - Simply returns the supplied message as-is. - - The code of the message to resolve. - - The to resolve the - code for. - - - The supplied message as-is. - - - - - Always returns . - - The code of the object to resolve. - - The to resolve the - code for. - - - (always). - - - - - Does nothing. - - - An object that contains the property values to be applied. - - - The base name of the object to use for key lookup. - - - The with which the - resource is associated. - - - - - Handler for Spring.NET resourceHandlers config section. - - -

- Spring allows registration of custom resource handlers that can be used to load - object definitions from. -

-

- For example, if you wanted to store your object definitions in a database instead - of in the config file, you could write a custom implementation - and register it with Spring using 'db' as a protocol name. -

-

- Afterwards, you would simply specify resource URI within the context config element - using your custom resource handler. -

-
- -

- The following example shows how to configure both this section handler, - how to define custom resource within Spring config section, and how to load - object definitions using custom resource handler: -

- - - - -
- - - - - - - - - - - - - - Aleksandar Seovic - - - - - Registers resource handlers that are specified in - the resources config section with the . - - - The configuration settings in a corresponding parent - configuration section. Ignored. - - - The configuration context when called from the ASP.NET - configuration system. Otherwise, this parameter is reserved and - is . - - - The for the section. - - - This method always returns null, because resource handlers are registered - as a sideffect of its execution and there is no need to return anything. - - - - - An implementation that - accesses resources from .resx / .resource files. - - Note that for the method - GetResourceObject if the resource name resolves to null, then in - .NET 1.1 the return value will be String.Empty whereas - in .NET 2.0 it will return null. - Griffin Caprio (.NET) - Mark Pollack (.NET) - Aleksandar Seovic (.NET) - - - - Defines a simple initialization callback for objects that need to to some - post-initialization logic after all of their dependencies have been injected. - - -

- An implementation of the - - method might perform some additional custom initialization (over and above that - performed by the constructor), or merely check that all mandatory properties - have been set (this last example is a very typical use case of this interface). -

- - The use of the - interface - by non-Spring.NET framework code can be avoided (and is generally - discouraged). The Spring.NET container provides support for a generic - initialization method given to the object definition in the object - configuration store (be it XML, or a database, etc). This requires - slightly more configuration (one attribute-value pair in the case of - XML configuration), but removes any dependency on Spring.NET from the - class definition. - -
- Rod Johnson - Rick Evans (.NET) - -
- - - Invoked by an - after it has injected all of an object's dependencies. - - -

- This method allows the object instance to perform the kind of - initialization only possible when all of it's dependencies have - been injected (set), and to throw an appropriate exception in the - event of misconfiguration. -

-

- Please do consult the class level documentation for the - interface for a - description of exactly when this method is invoked. In - particular, it is worth noting that the - - and - callbacks will have been invoked prior to this method being - called. -

-
- - In the event of misconfiguration (such as the failure to set a - required property) or if initialization fails. - -
- - - Creates a new instance of the - class. - - - - - Resolves a given code by searching through each assembly name in - the base names array. - - The code to resolve. - - The to use for lookups. - - The message from the resource set. - - - - Resolves a given code by searching through each assembly name in the array. - - The code to resolve. - - The to use for lookups. - - The object from the resource set. - - - - Uses a System.ComponentModel.ComponentResourceManager - to apply resources to object properties. - Resource key names are of the form objectName.propertyName - - - This feature is not currently supported on version 1.0 of the .NET platform. - - - An object that contains the property values to be applied. - - - The base name of the object to use for the key lookup. - - - The to use for lookups. - If , uses the - value. - - - This feature is not currently supported on version 1.0 of the .NET platform. - - - - - Resolves a code into an object given a base name. - - The to search. - The code to resolve. - - The to use for lookups. - - The object from the resource file. - - - - Returns a representation of the - . - - A representation of the - . - - - - Invoked by an - after it has set all object properties supplied. - - -

- The list may contain objects of type or - . types - are converted to instances using the notation - resourcename, assembly partial name. -

-
- - If the conversion from a to a - can't be performed. - -
- - - The collection of s - in this . - - - - - that allows concrete registration of - objects and messages in code, rather than from external configuration sources. - - -

- Mainly useful for testing. -

-
- Rod Johnson - Griffin Caprio (.NET) -
- - - Creates a new instance of the StaticApplicationContext class. - - - - - Creates a new instance of the StaticApplicationContext class. - - The parent application context. - - - - Do nothing: we rely on callers to update our public methods. - - - - - Register a singleton object with the default object factory. - - The name of the object. - The of the object. - The property values for the singleton instance. - - - - Registers a prototype object with the default object factory. - - The name of the prototype object. - The of the prototype object. - The property values for the prototype instance. - - - - Associate the given message with the given code. - - The lookup code. - - The that the message should be found within. - - The message associated with the lookup code. - - - - Simple implementation of - that allows messages to be held in an object and added programmatically. - - -

- Mainly useful for testing. -

-

- This supports internationalization. -

-
- Rod Johnson - Juergen Hoeller - Griffin Caprio (.NET) - -
- - - Creates a new instance of the - class. - - - - - Returns a format string. - - The code of the message to resolve. - - The to resolve the - code for. - - - A format string or if not found. - - - - - - Resolves an object (typically an icon or bitmap). - - The code of the object to resolve. - - The to resolve the - code for. - - - The resolved object or if not found. - - - - - - Applies resources to object properties. - - -

- Uses a System.ComponentModel.ComponentResourceManager - internally to apply resources to object properties. Resource key - names are of the form objectName.propertyName. -

-

- This feature is not currently supported on version 1.0 of the .NET platform. -

-
- - An object that contains the property values to be applied. - - - The base name of the object to use for key lookup. - - - The with which the - resource is associated. - - - This feature is not currently supported on version 1.0 of the .NET platform. - - -
- - - Associate the supplied with the - supplied . - - The lookup code. - - The to resolve the - code for. - - - The message format associated with this lookup code. - - - - - Associate the supplied with the - supplied . - - The lookup code. - - The to resolve the - code for. - - - The object associated with this lookup code. - - - - - Returns a representation of this - message source. - - - A containing all of this message - source's messages. - - - - - Configuration section handler for the Spring.NET typeAliases - config section. - - -

- Type aliases can be used instead of fully qualified type names anywhere - a type name is expected in a Spring.NET configuration file. -

-

- This includes type names specified within an object definition, as well - as values of the properties or constructor arguments that expect - instances. -

-
- -

- The following example shows how to configure both this section handler and - how to define type aliases within a Spring.NET config section: -

- - - - -
- - - - - - - ... - - ... - - - - - Aleksandar Seovic - - - - - Populates using values specified in - the typeAliases config section. - - - The configuration settings in a corresponding parent - configuration section. - - - The configuration context when called from the ASP.NET - configuration system. Otherwise, this parameter is reserved and - is . - - - The for the section. - - - This method always returns , because the - is populated as a side-effect of this - object's execution and thus there is no need to return anything. - - - - - Configuration section handler for the Spring.NET typeConverters - config section. - - -

- Type converters are used to convert objects from one type into another - when injecting property values, evaluating expressions, performing data - binding, etc. -

-

- They are a very powerful mechanism as they allow Spring.NET to automatically - convert string-based property values from the configuration file into the appropriate - type based on the target property's type or to convert string values submitted - via a web form into a type that is used by your data model when Spring.NET data - binding is used. Because they offer such tremendous help, you should always provide - a type converter implementation for your custom types that you want to be able to use - for injected properties or for data binding. -

-

- The standard .NET mechanism for specifying type converter for a particular type is - to decorate the type with a , passing the type - of the -derived class as a parameter. -

-

- This mechanism will still work and is a preferred way of defining type converters if - you control the source code for the type that you want to define a converter for. However, - this configuration section allows you to specify converters for the types that you don't - control and it also allows you to override some of the standard type converters, such as - the ones that are defined for some of the types in the .NET Base Class Library. -

-
- -

- The following example shows how to configure both this section handler and - how to define type converters within a Spring.NET config section: -

- - - - -
- - - - - - - ... - - ... - - - - - Aleksandar Seovic - - - - - Populates using values specified in - the typeConverters config section. - - - The configuration settings in a corresponding parent - configuration section. - - - The configuration context when called from the ASP.NET - configuration system. Otherwise, this parameter is reserved and - is . - - - The for the section. - - - This method always returns , because the - is populated as a side-effect of - its execution and thus there is no need to return anything. - - - - - An implementation that - reads context definitions from XML based resources. - - -

- Currently, the resources that are supported are the file, - http, ftp, config and assembly resource - types. -

-

- You can provide custom implementations of the - interface and and register them - with any that inherits - from the - - interface. -

- - In case of multiple config locations, later object definitions will - override ones defined in previously loaded resources. This can be - leveraged to deliberately override certain object definitions via an - extra XML file. - -
- -

- Find below some examples of instantiating an - using a - variety of different XML resources. -

- - // an XmlApplicationContext that reads its object definitions from an - // XML file that has been embedded in an assembly... - IApplicationContext context = new XmlApplicationContext - ( - "assembly://AssemblyName/NameSpace/ResourceName" - ); - - // an XmlApplicationContext that reads its object definitions from a - // number of disparate XML resources... - IApplicationContext context = new XmlApplicationContext - ( - // from an XML file that has been embedded in an assembly... - "assembly://AssemblyName/NameSpace/ResourceName", - // and from a (relative) filesystem-based resource... - "file://Objects/services.xml", - // and from an App.config / Web.config resource... - "config://spring/objects" - ); - -
- Rod Johnson - Juergen Hoeller - Griffin Caprio (.NET) - - - -
- - - Creates a new instance of the - class, - loading the definitions from the supplied XML resource locations. - - The created context will be case sensitive. - - Any number of XML based object definition resource locations. - - - - - Creates a new instance of the - class, - loading the definitions from the supplied XML resource locations. - - Flag specifying whether to make this context case sensitive or not. - - Any number of XML based object definition resource locations. - - - - - Creates a new instance of the - class, - loading the definitions from the supplied XML resource locations. - - The application context name. - Flag specifying whether to make this context case sensitive or not. - - Any number of XML based object definition resource locations. - - - - - Creates a new instance of the - class, - loading the definitions from the supplied XML resource locations, - with the given . - - - The parent context (may be ). - - - Any number of XML based object definition resource locations. - - - - - Creates a new instance of the - class, - loading the definitions from the supplied XML resource locations, - with the given . - - Flag specifying whether to make this context case sensitive or not. - - The parent context (may be ). - - - Any number of XML based object definition resource locations. - - - - - Creates a new instance of the - class, - loading the definitions from the supplied XML resource locations, - with the given . - - The application context name. - Flag specifying whether to make this context case sensitive or not. - - The parent context (may be ). - - - Any number of XML based object definition resource locations. - - - - - Creates a new instance of the - class, - loading the definitions from the supplied XML resource locations, - with the given . - - - This constructor is meant to be used by derived classes. By passing =false, it is - the responsibility of the deriving class to call to initialize the context instance. - - if true, is called automatically. - The application context name. - Flag specifying whether to make this context case sensitive or not. - - The parent context (may be ). - - - Any number of XML based object definition resource locations. - - - - - An array of resource locations, referring to the XML object - definition files that this context is to be built with. - - - An array of resource locations, or if none. - - - - - Exception thrown during application context initialization. - Rod Johnson - Mark Pollack (.NET) - - - - Thrown on an unrecoverable problem encountered in the - objects namespace or sub-namespaces, e.g. bad class or field. - - Rod Johnson - Mark Pollack (.NET) - - - - Superclass for all exceptions thrown in the Objects namespace and sub-namespaces. - - Rod Johnson - Mark Pollack (.NET) - - - Creates a new instance of the ObjectsException class. - - - - Creates a new instance of the ObjectsException class. with the specified message. - - - A message about the exception. - - - - - Creates a new instance of the ObjectsException class with the specified message - and root cause. - - - A message about the exception. - - - The root exception that is being wrapped. - - - - - Creates a new instance of the ObjectsException class. - - - The - that holds the serialized object data about the exception being thrown. - - - The - that contains contextual information about the source or destination. - - - - - Creates a new instance of the FatalObjectException class. - - - - - Creates a new instance of the FatalObjectException class with the - specified message. - - - A message about the exception. - - - - - Creates a new instance of the FatalObjectException class with the - specified message. - - - A message about the exception. - - - The root exception that is being wrapped. - - - - - Creates a new instance of the FatalObjectException class. - - - The - that holds the serialized object data about the exception being thrown. - - - The - that contains contextual information about the source or destination. - - - - - Creates a new instance of the - class. - - - - - Creates a new instance of the - class. - - - The - that holds the serialized object data about the exception being thrown. - - - The - that contains contextual information about the source or destination. - - - - - Creates a new instance of the - class with the - specified message. - - - A message about the exception. - - - - - Creates a new instance of the - class with the - specified message. - - - A message about the exception. - - - The root exception that is being wrapped. - - - - - Marks an interface as being an application event listener. - - Griffin Caprio - - - - - Creates a new instance of the - class. - - - - - The callback for application events. - - - - - To be implemented by any object that wishes to be notified - of the associated with it. - - -

- In the current implementation, the - will typically be the - associated that - spawned the implementing object. -

-

- The can usually also be - passed on as an object reference to arbitrary object properties or - constructor arguments, because a - is typically defined as an - object with the well known name "messageSource" in the - associated application context. -

-
- Juergen Hoeller - Rick Evans (.NET) - -
- - - Sets the associated - with this object. - - -

- Invoked after population of normal object properties but - before an initializing callback such as the - - method of the - interface - or a custom init-method. -

-

- It is also invoked before the - - property of any - - implementation. -

-
- - The associated - with this object. - -
- - - Interface to be implemented by any object that wishes to be notified - of the (typically the - ) that it runs in. - - -

- Note that dependencies can also - be exposed as object properties of type - , populated via strings with - automatic type conversion by the object factory. This obviates the - need for implementing any callback interface just for the purpose of - accessing a specific resource. -

-

- You typically need an - when your application object has to access a variety of file resources - whose names are calculated. A good strategy is to make the object use - a default resource loader but still implement the - interface to allow - for overriding when running in an - . -

-
- Juergen Hoeller - Mark Pollack (.NET) - - - -
- - - Sets the - that this object runs in. - - -

- Invoked after population of normal objects properties but - before an init callback such as - 's - - or a custom init-method. Invoked before setting - 's - - property. -

-
-
- - - Thrown when a message cannot be resolved. - - Rod Johnson - Mark Pollack (.NET) - - - - - - Creates a new instance of the - class. - - - - - Creates a new instance of the - class with the - specified message. - - - A message about the exception. - - - The root exception that is being wrapped. - - - - - Creates a new instance of the - class. - - - The - that holds the serialized object data about the exception being - thrown. - - - The - that contains contextual information about the source or - destination. - - - - - Creates a new instance of the - class. - - - The code that could not be resolved for given culture. - - - The that was used - to search for the code. - - - - - Creates a new instance of the - class. - - - The code that could not be resolved for the current UI culture. - - - - - Convenience base class for - implementations, pre-implementing typical behavior. - - -

- The method will - check whether a or - can be opened; - will always return - ; - and - throw an exception; - and will - return the value of the - property. -

-
- Juergen Hoeller - Rick Evans (.NET) - Aleksandar Seovic (.NET) - -
- - - The central abstraction for Spring.NET's access to resources such as - s. - - -

- This interface encapsulates a resource descriptor that abstracts away - from the underlying type of resource; possible resource types include - files, memory streams, and databases (this list is not exhaustive). -

-

- A can definitely be opened and accessed - for every such resource; if the resource exists in a physical form (for - example, the resource is not an in-memory stream or one that has been - extracted from an assembly or ZIP file), a or - can also be accessed. The actual - behavior is implementation-specific. -

-

- This interface, when used in tandem with the - interface, forms the backbone of - Spring.NET's resource handling. Third party extensions or libraries - that want to integrate external resources with Spring.NET's IoC - container are encouraged expose such resources via this abstraction. -

-

- Interfaces cannot obviously mandate implementation, but derived classes - are strongly encouraged to expose a constructor that takes a - single as it's sole argument (see example). - Exposing such a constructor will make your custom - implementation integrate nicely - with the class. -

-
- Juergen Hoeller - Rick Evans (.NET) - - -
- - - Simple interface for objects that are sources for - s. - - -

- This is the base interface for the abstraction encapsulated by - Spring.NET's interface. -

-
- Juergen Hoeller - Rick Evans (.NET) - -
- - - Return an for this resource. - - - - Clients of this interface must be aware that every access of this - property will create a fresh ; - it is the responsibility of the calling code to close any such - . - - - - An . - - - If the stream could not be opened. - - - - - Creates a resource relative to this resource. - - - The path (always resolved as relative to this resource). - - - The relative resource. - - - If the relative resource could not be created from the supplied - path. - - - If the resource does not support the notion of a relative path. - - - - - Does this resource represent a handle with an open stream? - - -

- If , the - cannot be read multiple times, and must be read and then closed to - avoid resource leaks. -

-

- Will be for all usual resource descriptors. -

-
- - if this resource represents a handle with an - open stream. - - -
- - - Returns the handle for this resource. - - -

- For safety, always check the value of the - property prior to - accessing this property; resources that cannot be exposed as - a will typically return - from a call to the - property. -

-
- - The handle for this resource. - - - If the resource is not available or cannot be exposed as a - . - - - -
- - - Returns a handle for this resource. - - -

- For safety, always check the value of the - property prior to - accessing this property; resources that cannot be exposed as - a will typically return - from a call to the - property. -

-
- - The handle for this resource. - - - If the resource is not available on a filesystem, or cannot be - exposed as a handle. - - - -
- - - Returns a description for this resource. - - -

- The description is typically used for diagnostics and other such - logging when working with the resource. -

-

- Implementations are also encouraged to return this value from their - method. -

-
- - A description for this resource. - -
- - - Does this resource actually exist in physical form? - - -

- An example of a resource that physically exists would be a - file on a local filesystem. An example of a resource that does not - physically exist would be an in-memory stream. -

-
- - if this resource actually exists in physical - form (for example on a filesystem). - - - -
- - - The default special character that denotes the base (home, or root) - path. - - -

- Will be resolved (by those - implementations that support it) to the home (or root) path for - the specific implementation. -

-

- For example, in the case of a web application this will (probably) - resolve to the virtual directory of said web application. -

-
-
- - - Creates a new instance of the - class. - - -

- This is an class, and as such exposes no - public constructors. -

-
-
- - - Creates a new instance of the - class. - - -

- This is an class, and as such exposes no - public constructors. -

-
- - A string representation of the resource. - - - If the supplied is - or contains only whitespace character(s). - -
- - - Strips any protocol name from the supplied - . - - -

- If the supplied does not - have any protocol associated with it, then the supplied - will be returned as-is. -

-
- - - GetResourceNameWithoutProtocol("http://www.mycompany.com/resource.txt"); - // returns www.mycompany.com/resource.txt - - - - The name of the resource. - - - The name of the resource without the protocol name. - -
- - - Resolves the supplied to its value - sans any leading protocol. - - - The name of the resource. - - - The name of the resource without the protocol name. - - - - - - Resolves the presence of the - value - in the supplied into a path. - - -

- The default implementation simply returns the supplied - as is. -

-
- - The name of the resource. - - - The string that is a placeholder for a base path. - - - The name of the resource with any - value having been resolved into an actual path. - -
- - - This implementation returns the - of this resource. - - - - - - Determines whether the specified is - equal to the current . - - -

- This implementation compares values. -

-
- -
- - - Serves as a hash function for a particular type, suitable for use - in hashing algorithms and data structures like a hash table. - - -

- This implementation returns the hashcode of the - property. -

-
- -
- - - Factory Method. Create a new instance of the current resource type using the given resourceName - - - - - The ResourceLoader to be used for resolving relative resources - - - - - Does the supplied relative ? - - - The name of the resource to test. - - - if resource name is relative; - otherwise . - - - - - Creates a new resource that is relative to this resource based on the - supplied . - - -

- This method can accept either a fully qualified resource name or a - relative resource name as it's parameter. -

-

- A fully qualified resource is one that has a protocol prefix and - all elements of the resource name. All other resources are treated - as relative to this resource, and the following rules are used to - locate a relative resource: -

- - - If the starts with '..', - the current resource path is navigated backwards before the - is concatenated to the current - of - this resource. - - - If the starts with '/', the - current resource path is ignored and a new resource name is - appended to the - of - this resource. - - - If the starts with '.' or a - letter, a new path is appended to the current - of - this resource. - - -
- - The name of the resource to create. - - The relative resource. - - If the process of resolving the relative resource yielded an - invalid URI. - - - If this resource does not support the resolution of relative - resources (as determined by the value of the - - property). - - -
- - - Calculates a new resource path based on the supplied - . - - - The relative path to evaluate. - - The newly calculated resource path. - - - - The special character that denotes the base (home, or root) - path. - - -

- Will be resolved (by those - implementations that support it) to the home (or root) path for - the specific implementation. -

-

- For example, in the case of a web application this will (probably) - resolve to the virtual directory of said web application. -

-
- -
- - - Return an for this resource. - - - An . - - - If the stream could not be opened. - - - - - - Returns a description for this resource. - - - A description for this resource. - - - - - - Returns the protocol associated with this resource (if any). - - -

- The value of this property may be if no - protocol is associated with the resource type (for example if the - resource is a memory stream). -

-
- - The protocol associated with this resource (if any). - -
- - - Does this resource represent a handle with an open stream? - - -

- This, the default implementation, always returns - . -

-
- - if this resource represents a handle with an - open stream. - - -
- - - Returns the handle for this resource. - - - - - - Returns a handle for this resource. - - -

- This, the default implementation, always throws a - , assuming that the - resource cannot be resolved to an absolute file path. -

-
- - The handle for this resource. - - - This implementation always throws a - . - - - -
- - - Does this resource actually exist in physical form? - - -

- This implementation checks whether a - can be opened, falling back to whether a - can be opened. -

-

- This will cover both directories and content resources. -

-

- This implementation will also return if - permission to the (file's) path is denied. -

-
- - if this resource actually exists in physical - form (for example on a filesystem). - - - -
- - - Does this support relative - resource retrieval? - - -

- This property is generally to be consulted prior to attempting - to attempting to access a resource that is relative to this - resource (via a call to - ). -

-

- This, the default implementation, always returns - . -

-
- - if this - supports relative resource - retrieval. - -
- - - Gets the root location of the resource. - - -

- Where root resource can be taken to mean that part of the resource - descriptor that doesn't change when a relative resource is looked - up. Examples of such a root location would include a drive letter, - a web server name, an assembly name, etc. -

-
- - The root location of the resource. - - - This, the default implementation, always throws a - . - -
- - - Gets the current path of the resource. - - -

- An example value of this property would be the name of the - directory containing a filesystem based resource. -

-
- - The current path of the resource. - - - This, the default implementation, always throws a - . - -
- - - Gets those characters that are valid path separators for the - resource type. - - -

- An example value of this property would be the - and - values for a - filesystem based resource. -

-

- Any derived classes that override this method are expected to - return a new array for each access of this property. -

-
- - Those characters that are valid path separators for the resource - type. - - - This, the default implementation, always throws a - . - -
- - - An implementation for - resources stored within assemblies. - - -

- This implementation expects any resource name passed to the - constructor to adhere to the following format: -

-

- assembly://assemblyName/namespace/resourceName -

-
- Aleksandar Seovic (.NET) - Federico Spinazzi (.NET) -
- - - Creates a new instance of the - class. - - - The name of the assembly resource. - - - If the supplied did not conform - to the expected format. - - - If the assembly specified in the supplied - was loaded twice with two - different evidences. - - - If the assembly specified in the supplied - could not be found. - - - If the caller does not have the required permission to load - the assembly specified in the supplied - . - - - - - - Does the supplied relative ? - - - The name of the resource to test. - - - if resource name is relative; - otherwise . - - - - - Return an for this resource. - - - An . - - - If the stream could not be opened. - - - If the caller does not have the required permission to load - the underlying assembly's manifest. - - - - - - - Does the embedded resource specified in the value passed to the - constructor exist? - - - if this resource actually exists in physical - form (for example on a filesystem). - - - - - - - - Does this support relative - resource retrieval? - - -

- This implementation does support relative resource retrieval, and - so will always return . -

-
- - if this - supports relative resource - retrieval. - - -
- - - Gets the root location of the resource (the assembly name in this - case). - - - The root location of the resource. - - - - - - Gets the current path of the resource (the namespace in which the - target resource was embedded in this case). - - - The current path of the resource. - - - - - - Gets those characters that are valid path separators for the - resource type. - - - Those characters that are valid path separators for the resource - type. - - - - - - Returns a description for this resource. - - - A description for this resource. - - - - - - Returns the handle for this resource. - - - - - - Used when retrieving information from the standard .NET configuration - files (App.config / Web.config). - - -

- If created with the name of a configuration section, then all methods - aside from the description return , - , or throw an exception. If created with an - , then the - property - will return a corresponding to parse. -

-
- Mark Pollack - Rick Evans -
- - - Creates new instance of the - class. - - - The actual XML configuration section. - - - If the supplied is . - - - - - Creates new instance of the - class. - - - The name of the configuration section. - - - If the supplied is - or contains only whitespace character(s). - - - - - Returns the handle for this resource. - - -

- This implementation always returns . -

-
- - . - - -
- - - Returns a handle for this resource. - - -

- This implementation always returns . -

-
- - . - - -
- - - Returns a description for this resource (the name of the - configuration section in this case). - - - A description for this resource. - - - - - - Does this resource actually exist in physical form? - - -

- This implementation always returns . -

-
- - - - - -
- - - Return an for this resource. - - - An . - - - If the stream could not be opened. - - - - - - Exposes the actual for the - configuration section. - - -

- Introduced to accomodate line info tracking during parsing. -

-
-
- - - A backed resource. - - -

- Supports resolution as both a and a - . -

-

- Also supports the use of the ~ character. If the ~ character - is the first character in a resource path (sans protocol), the ~ - character will be replaced with the value of the - System.AppDomain.CurrentDomain.BaseDirectory property (an example of - this can be seen in the examples below). -

-
- -

- Consider the example of an application that is running (has been launched - from) the C:\App\ directory. The following resource paths will map - to the following resources on the filesystem... -

- - strings.txt C:\App\strings.txt - ~/strings.txt C:\App\strings.txt - file://~/strings.txt C:\App\strings.txt - file://~/../strings.txt C:\strings.txt - ../strings.txt C:\strings.txt - ~/../strings.txt C:\strings.txt - - // note that only a leading ~ character is resolved to the executing directory... - stri~ngs.txt C:\App\stri~ngs.txt - -
- Juergen Hoeller - Leonardo Susatyo (.NET) - Aleksandar Seovic (.NET) -
- - - Creates a new instance of the - class. - - - - - Creates a new instance of the - class. - - - The name of the file system resource. - - - If the supplied is - or contains only whitespace character(s). - - - - - Creates a new instance of the - class. - - - The name of the file system resource. - - - Supresses initialization of this instance. Used from derived classes. - - - If the supplied is - or contains only whitespace character(s). - - - - - Initializes this instance. - - - - - - Resolves the handle - for the supplied . - - - The name of the file system resource. - - - The handle for this resource. - - - - - Resolves the root location for the supplied . - - - The name of the file system resource. - - - The root location of the resource. - - - - - Resolves the path for the supplied . - - - The name of the file system resource. - - - The current path of the resource. - - - - - Resolves the presence of the - value - in the supplied into a path. - - - The name of the resource. - - - The string that is a placeholder for a base path. - - - The name of the resource with any - value having been resolved into an actual path. - - - - - Does the supplied relative ? - - - The name of the resource to test. - - - if resource name is relative; - otherwise . - - - - - Returns the underlying handle for - this resource. - - - The handle for this resource. - - - - - - Does this support relative - resource retrieval? - - -

- This implementation does support relative resource retrieval, and - so will always return . -

-
- - if this - supports relative resource - retrieval. - - -
- - - Gets the root location of the resource (a drive or UNC file share - name in this case). - - - The root location of the resource. - - - - - - Gets the current path of the resource. - - - The current path of the resource. - - - - - - Gets those characters that are valid path separators for the - resource type. - - - Those characters that are valid path separators for the resource - type. - - - - - - - Return an for this resource. - - - An . - - - If the stream could not be opened. - - - If the underlying file could not be found. - - - - - - Returns a description for this resource. - - - A description for this resource. - - - - - - Returns the handle for this resource. - - - The handle for this resource. - - - If the resource is not available or cannot be exposed as a - . - - - - - - adapter implementation for a - . - - -

- Should only be used if no other - implementation is applicable. -

-

- In contrast to other - implementations, this is an adapter for an already opened - resource - the - therefore always returns . Do not use this class - if you need to keep the resource descriptor somewhere, or if you need - to read a stream multiple times. -

-
- Juergen Hoeller - Rick Evans (.NET) -
- - - Creates a new instance of the - class. - - - The input to use. - - - Where the input comes from. - - - If the supplied is - . - - - - - The input to use. - - - If the underlying has already - been read. - - - - - Returns a description for this resource. - - - A description for this resource. - - - - - - This implementation always returns true - - - - - This implemementation always returns true - - - - - Custom type converter for instances. - - -

- A resource path may contain placeholder variables of the form ${...} - that will be expended to environment variables. -

-

- Currently only supports conversion from a - instance. -

-
- -

- On Win9x boxes, this resource path, ${userprofile}\objects.xml will - be expanded at runtime with the value of the 'userprofile' environment - variable substituted for the '${userprofile}' portion of the path. -

- - // assuming a user called Rick, running on a plain vanilla Windows XP setup... - // this resource path... - - ${userprofile}\objects.xml - - // will become (after expansion)... - - C:\Documents and Settings\Rick\objects.xml - -
- Mark Pollack - - -
- - - Creates a new instance of the - class. - - - - - Creates a new instance of the - class using the specified resourceLoader. - - the underlying IResourceLoader to be used to resolve resources - - - - Returns whether this converter can convert an object of one - to a - - - A - that provides a format context. - - - A that represents the - you want to convert from. - - - if the conversion is possible. - - - - - Convert from a string value to a - instance. - - - A - that provides a format context. - - - The to use - as the current culture. - - - The value that is to be converted. - - - An if successful. - - - If the resource name objectained form the supplied - is malformed. - - - In the case of any errors arising from the instantiation of the - returned instance. - - - - - Resolve the given path, replacing placeholder values with - corresponding property values if necessary. - - -

- This implementation resolves environment variables only. -

-
- The original resource path. - The resolved resource path. -
- - - Return the used to - resolve the string. - - - The used to resolve - the string. - - - - - Registry class that allows users to register and retrieve protocol handlers. - - - - Resource handler is an implementation of interface - that should be used to process resources with the specified protocol. - - - They are used throughout the framework to access resources from various - sources. For example, application context loads object definitions from the resources - that are processed using one of the registered resource handlers. - - Following resource handlers are registered by default: - - - Protocol - Handler Type - Description - - - config - - Resolves the resources by loading specified configuration section from the standard .NET config file. - - - file - - Resolves filesystem resources. - - - http - - Resolves remote web resources. - - - https - - Resolves remote web resources via HTTPS. - - - ftp - - Resolves ftp resources. - - - assembly - - Resolves resources that are embedded into an assembly. - - - web - Spring.Core.IO.WebResource, Spring.Web* - Resolves resources relative to the web application's virtual directory. - - - * only available in web applications. - - Users can create and register their own protocol handlers by implementing interface - and mapping custom protocol name to that implementation. See for details - on how to register custom protocol handler. - - - Aleksandar Seovic - - - - Name of the .Net config section that contains definitions - for custom resource handlers. - - - - - Registers standard and user-configured resource handlers. - - - - - Returns resource handler for the specified protocol name. - - - - This method returns object that should be used - to create an instance of the -derived type by passing - resource location as a parameter. - - - Name of the protocol to get the handler for. - Resource handler constructor for the specified protocol name. - If is null. - - - - Returns true if a handler is registered for the specified protocol, - false otherwise. - - Name of the protocol. - - true if a handler is registered for the specified protocol, false otherwise. - - If is null. - - - - Registers resource handler and maps it to the specified protocol name. - - -

- If the mapping already exists, the existing mapping will be - silently overwritten with the new mapping. -

-
- - The protocol to add (or override). - - - The type name of the concrete implementation of the - interface that will handle - the specified protocol. - - - If the supplied is - or contains only whitespace character(s); or - if the supplied is - . - - - If the supplied is not a - that derives from the - interface; or (having passed - this first check), the supplied - does not expose a constructor that takes a single - parameter. - -
- - - Registers resource handler and maps it to the specified protocol name. - - -

- If the mapping already exists, the existing mapping will be - silently overwritten with the new mapping. -

-
- - The protocol to add (or override). - - - The concrete implementation of the - interface that will handle - the specified protocol. - - - If the supplied is - or contains only whitespace character(s); or - if the supplied is - . - - - If the supplied is not a - that derives from the - interface; or (having passed - this first check), the supplied - does not expose a constructor that takes a single - parameter. - -
- - - Allows to create any arbitrary Url format - - - - - A adapter implementation encapsulating a simple string. - - Erich Eichinger - - - - Creates a new instance of the class. - - - - - Creates a new instance of the class. - - - - - Creates a new instance of the class. - - - - - Get the to - for accessing this resource. - - - - - Returns a description for this resource. - - - A description for this resource. - - - - - - This implementation always returns true - - - - - This implemementation always returns true - - - - - Gets the encoding used to create a byte stream of the string. - - - - - Gets the content encapsulated by this . - - - - - A backed resource - on top of - - -

- Obviously supports resolution as a , and also - as a in the case of the "file:" - protocol. -

-
- -

- Some examples of the strings that can be used to initialize a new - instance of the class - include... - - - file:///Config/objects.xml - - - http://www.mycompany.com/services.txt - - -

-
- Juergen Hoeller - Leonardo Susatyo (.NET) - Aleksandar Seovic (.NET) - - - -
- - - Creates a new instance of the - class. - - -

- Some examples of the values that the - can typically be expected to hold include... - - - file:///Config/objects.xml - - - http://www.mycompany.com/services.txt - - -

-
- - A string representation of the resource. - -
- - - Does the supplied relative ? - - - The name of the resource to test. - - - if resource name is relative; - otherwise . - - - - - Returns the instance - used for the resource resolution. - - - A instance. - - - - - - - Return an for this resource. - - - An . - - - If the stream could not be opened. - - - - - - Returns the handle for this resource. - - - The handle for this resource. - - - If the resource is not available or cannot be exposed as a - . - - - - - - Returns a handle for this resource. - - - The handle for this resource. - - - If the resource is not available on a filesystem. - - - - - - Does this support relative - resource retrieval? - - -

- This implementation does support relative resource retrieval, and - so will always return . -

-
- - if this - supports relative resource - retrieval. - - -
- - - Gets the root location of the resource. - - - The root location of the resource. - - - - - - Gets the current path of the resource. - - - The current path of the resource. - - - - - - Gets those characters that are valid path separators for the - resource type. - - - Those characters that are valid path separators for the resource - type. - - - - - - Returns a description for this resource. - - - A description for this resource. - - - - - - Converts string representation of a credential for Web client authentication - into an instance of . - - -

- Find below some examples of the XML formatted strings that this - converter will sucessfully convert. -

- - - - - - -
- Bruno Baia -
- - - Can we convert from the sourcetype - to a instance ? - - -

- Currently only supports conversion from a instance. -

-
- - A - that provides a format context. - - - A that represents the - you want to convert from. - - if the conversion is possible. -
- - - Convert from a value to an - instance. - - - A - that provides a format context. - - - The to use - as the current culture. - - - The value that is to be converted. - - - A instance if successful. - - - - - A custom for any - primitive numeric type such as , - , , etc. - - -

- Can use a given for - (locale-specific) parsing and rendering. -

-

- This is not meant to be used as a system - but rather as a - locale-specific number converter within custom controller code, to - parse user-entered number strings into number properties of objects, - and render them in a UI form. -

-
- Juergen Hoeller - Simon White (.NET) -
- - - Creates a new instance of the - class. - - - The primitive numeric to convert to. - - - The to use for - (locale-specific) parsing and rendering - - - Is an empty string allowed to be converted? If - , an empty string value will be converted to - numeric 0. - - Id the supplied is not a primitive - . - - - - - - Returns whether this converter can convert an object of one - to a - - -

- Currently only supports conversion from a - instance. -

-
- - A - that provides a format context. - - - A that represents the - you want to convert from. - - - if the conversion is possible. - -
- - - Converts the specified object (a string) to the required primitive - type. - - - A - that provides a format context. - - - The to use - as the current culture. - - - The value that is to be converted. - - A primitive representation of the string value. - - - - Converter for instances. - - Juergen Hoeller - Mark Pollack (.NET) - - - - Creates a new instance of the - class. - - - - - Returns whether this converter can convert an object of one - to a - - -

- Currently only supports conversion from a - instance. -

-
- - A - that provides a format context. - - - A that represents the - you want to convert from. - - True if the conversion is possible. -
- - - Convert from a string value to a instance. - - - A - that provides a format context. - - - The to use - as the current culture. - - - The value that is to be converted. - - - A if successful. - - - - - Custom implementation for - objects. - - -

- Handles conversion from an XML formatted string to a - object - (see below for an example of the expected XML format). -

-

- This converter must be registered before it will be available. Standard - converters in this namespace are automatically registered by the - class. -

-
- -

- Find below some examples of the XML formatted strings that this - converter will sucessfully convert. Note that the name of the top level - (document) element is quite arbitrary... it is only the content that - matters (and which must be in the format - <add key="..." value="..."/>. For your continued sanity - though, you may wish to standardize on the top level name of - 'dictionary' (although you are of course free to not do so). -

- - - - - - -

- The following example uses a different top level (document) element - name, but is equivalent to the first example. -

- - - - - - -
- Rod Johnson - Juergen Hoeller - Simon White (.NET) -
- - - Creates a new instance of the - class. - - - - - Returns whether this converter can convert an object of one - to a - - - -

- Currently only supports conversion from an - XML formatted instance. -

-
- - A - that provides a format context. - - - A that represents the - you want to convert from. - - True if the conversion is possible. -
- - - Convert from a string value to a - instance. - - - A - that provides a format context. - - - The to use - as the current culture. - - - The value that is to be converted. - - - A - if successful. - - - - - Converts string representation of a regular expression into an instance of . - - Aleksandar Seovic - - - - Can we convert from the sourcetype to a ? - - -

- Currently only supports conversion from a instance. -

-
- - A - that provides a format context. - - - A that represents the - you want to convert from. - - if the conversion is possible. -
- - - Convert from a value to an - instance. - - - A - that provides a format context. - - - The to use - as the current culture. - - - The value that is to be converted. - - - A if successful. - - - - - Converts string representation of the registry key - into instance. - - Aleksandar Seovic - - - - Can we convert from a the sourcetype to a ? - - -

- Currently only supports conversion from a instance. -

-
- - A - that provides a format context. - - - A that represents the - you want to convert from. - - if the conversion is possible. -
- - - Convert from a value to an - instance. - - - A - that provides a format context. - - - The to use - as the current culture. - - - The value that is to be converted. - - - A array if successful. - - - - - Generates partial registry key name. - - - Key elements. - - - Index of the last element to use. - - - Friendly key name containing key element from - 0 to , inclusive. - - - - - Returns for the specified - root hive name. - - - Root hive name. - - - Registry key for the specified name. - - - - - Converts a two part string, (resource name, assembly name) - to a ResourceManager instance. - - - - - This constant represents the name of the folder/assembly containing global resources. - - - - - Creates a new instance of the - class. - - - - - Returns whether this converter can convert an object of one - to a - - - -

- Currently only supports conversion from a - instance. -

-
- - A - that provides a format context. - - - A that represents the - you want to convert from. - - True if the conversion is possible. -
- - - Convert from a string value to a - instance. - - - A - that provides a format context. - - - The to use - as the current culture. - - - The value that is to be converted. - - - A - if successful. - - If the specified does not denote a valid resource - - - - Converter for from a comma separated - list of RBG values. - - -

- Please note that this class does not implement converting - to a comma separated list of RBG values from a - . -

-
- Federico Spinazzi -
- - - Returns whether this converter can convert an object of one - to a - . - - -

- Currently only supports conversion from a - instance. -

-
- - A - that provides a format context. - - - A that represents the - you want to convert from. - - if the conversion is possible. -
- - - Converts the specified object (a string) a - instance. - - - A - that provides a format context. - - - The to use - as the current culture: currently ignored. - - - The value that is to be converted, in "R,G,B", "A,R,G,B", or - symbolic color name (). - - - A representation of the string value. - - - If the input string is not in a supported format, or is not one of the - predefined system colors (). - - - - - A custom for - runtime type references. - - -

- Currently only supports conversion to and from a - . -

-
- Rick Evans (.NET) -
- - - Creates a new instance of the - class. - - - - - Returns whether this converter can convert an object of one - to the - of this converter. - - -

- Currently only supports conversion from a - instance. -

-
- - A - that provides a format context. - - - A that represents the - you want to convert from. - - True if the conversion is possible. -
- - - Returns whether this converter can convert the object to the specified - . - - - A - that provides a format context. - - - A that represents the - you want to convert to. - - True if the conversion is possible. - - - - Converts the given value to the type of this converter. - - - A - that provides a format context. - - - The to use - as the current culture. - - - The value that is to be converted. - - - An that represents the converted value. - - - - - Converts the given value object to the specified type, - using the specified context and culture information. - - - A - that provides a format context. - - - The to use - as the current culture. - - - The value that is to be converted. - - - The to convert the - parameter to. - - - An that represents the converted value. - - - - - Converter for to directly set a - property. - - Jurgen Hoeller - Mark Pollack (.NET) - - - - Create a new StreamConverter using the default - . - - - - - Create a new StreamConverter using the given - . - - - The to use. - - - - Returns whether this converter can convert an object of one - to a - - -

- Currently only supports conversion from a - instance. -

-
- - A - that provides a format context. - - - A that represents the - you want to convert from. - - True if the conversion is possible. -
- - - Convert from a string value to a instance. - - - A - that provides a format context. - - - The to use - as the current culture. - - - The value that is to be converted. - - - A if successful. - - - - - Converts a separated to a - array. - - -

- Defaults to using the , (comma) as the list separator. Note that the value - of the current is - not used. -

-

- If you want to provide your own list separator, you can set the value of the - - property to the value that you want. Please note that this value will be used - for all future conversions in preference to the default list separator. -

-

- Please note that the individual elements of a string will be passed - through as is (i.e. no conversion or trimming of surrounding - whitespace will be performed). -

-

- This should be - automatically registered with any - implementations. -

-
- - - public class StringArrayConverterExample - { - public static void Main() - { - StringArrayConverter converter = new StringArrayConverter(); - - string csvWords = "This,Is,It"; - string[] frankBoothWords = converter.ConvertFrom(csvWords); - - // the 'frankBoothWords' array will have 3 elements, namely - // "This", "Is", "It". - - // please note that extraneous whitespace is NOT trimmed off - // in the current implementation... - string csv = " Cogito ,ergo ,sum "; - string[] descartesWords = converter.ConvertFrom(csv); - - // the 'descartesWords' array will have 3 elements, namely - // " Cogito ", "ergo ", "sum ". - // notice how the whitespace has NOT been trimmed. - } - } - - - -
- - - Can we convert from a the sourcetype to a array? - - -

- Currently only supports conversion from a instance. -

-
- - A - that provides a format context. - - - A that represents the - you want to convert from. - - if the conversion is possible. -
- - - Convert from a value to a - array. - - - A - that provides a format context. - - - The to use - as the current culture. - - - The value that is to be converted. - - - A array if successful. - - - - - The value that will be used as the list separator when performing - conversions. - - - A 'single' string character that will be used as the list separator - when performing conversions. - - - If the supplied value is not and is an empty - string, or has more than one character. - - - - - Converter for instances. - - Bruno Baia - - - - Creates a new instance of the - class. - - - - - Convert from a string value to a instance. - - - A - that provides a format context. - - - The to use - as the current culture. - - - The value that is to be converted. - - - A if successful. - - - - - Utility methods that are used to convert objects from one type into another. - - Aleksandar Seovic - - - - Convert the value to the required (if necessary from a string). - - The proposed change value. - - The we must convert to. - - Property name, used for error reporting purposes... - - If there is an internal error. - - The new value, possibly the result of type conversion. - - - - Utility method to create a property change event. - - - The full name of the property that has changed. - - The property old value - The property new value - - A new . - - - - - Registry class that allows users to register and retrieve type converters. - - Aleksandar Seovic - - - - Name of the .Net config section that contains Spring.Net type aliases. - - - - - Registers standard and configured type converters. - - - - - Returns for the specified type. - - Type to get the converter for. - a type converter for the specified type. - If is null. - - - - Registers for the specified type. - - Type to register the converter for. - Type converter to register. - If either of arguments is null. - - - - Registers for the specified type. - - - This is a convinience method that accepts the names of both - type to register converter for and the converter itself, - resolves them using , creates an - instance of type converter and calls overloaded - method. - - Type name of the type to register the converter for (can be a type alias). - Type name of the type converter to register (can be a type alias). - If either of arguments is null or empty string. - - If either of arguments fails to resolve to a valid . - - - If type converter does not derive from or if it cannot be instantiated. - - - - - Converts between instances of and their string representations. - - Erich Eichinger - - - - Can we convert from the sourcetype to a ? - - -

- Currently only supports conversion from a instance. -

-
- - A that provides a format context. - - - A that represents the you want to convert from. - - if the conversion is possible. -
- - - Convert from a value to an instance. - - - A - that provides a format context. - - - The to use - as the current culture. - - - The value that is to be converted. - - - A if successful, otherwise. - - The conversion cannot be performed. - - - - Returns whether this converter can convert the object to the specified type, using the specified context. - - An that provides a format context. - A that represents the type you want to convert to. - - true if this converter can perform the conversion; otherwise, false. - - - At the moment only conversion to string is supported. - - - - - Converts the given value object to the specified type, using the specified context and culture information. - - - - An that represents the converted value. - - - A . If null is passed, the current culture is assumed. - An that provides a format context. - The to convert the value parameter to. - The to convert. - The conversion cannot be performed. - The destinationType parameter is null. - - - - Converter for instances. - - Juergen Hoeller - Mark Pollack (.NET) - - - - Creates a new instance of the - class. - - - - - Returns whether this converter can convert an object of one - to a - - -

- Currently only supports conversion from a - instance. -

-
- - A - that provides a format context. - - - A that represents the - you want to convert from. - - True if the conversion is possible. -
- - - Convert from a string value to a instance. - - - A - that provides a format context. - - - The to use - as the current culture. - - - The value that is to be converted. - - - A if successful. - - - - - Resolves (instantiates) a by it's (possibly - assembly qualified) name, and caches the - instance against the type name. - - Rick Evans - Bruno Baia - Erich Eichinger - - - - Resolves a by name. - - -

- The rationale behind the creation of this interface is to centralise - the resolution of type names to instances - beyond that offered by the plain vanilla - method call. -

-
- Rick Evans -
- - - Resolves the supplied to a - - instance. - - - The (possibly partially assembly qualified) name of a - . - - - A resolved instance. - - - If the supplied could not be resolved - to a . - - - - - The cache, mapping type names ( instances) against - instances. - - - - - Creates a new instance of the class. - - - The that this instance will delegate - actual resolution to if a - cannot be found in this instance's cache. - - - If the supplied is . - - - - - Resolves the supplied to a - - instance. - - - The (possibly partially assembly qualified) name of a - . - - - A resolved instance. - - - If the supplied could not be resolved - to a . - - - - - Holder for the generic arguments when using type parameters. - - -

- Type parameters can be applied to classes, interfaces, - structures, methods, delegates, etc... -

-
-
- - - The generic arguments prefix. - - - - - The generic arguments suffix. - - - - - The character that separates a list of generic arguments. - - - - - Creates a new instance of the GenericArgumentsHolder class. - - - The string value to parse looking for a generic definition - and retrieving its generic arguments. - - - - - Returns an array of unresolved generic arguments types. - - -

- A empty string represents a type parameter that - did not have been substituted by a specific type. -

-
- - An array of strings that represents the unresolved generic - arguments types or an empty array if not generic. - -
- - - The (unresolved) generic type name portion - of the original value when parsing a generic type. - - - - - The (unresolved) generic method name portion - of the original value when parsing a generic method. - - - - - Is the string value contains generic arguments ? - - -

- A generic argument can be a type parameter or a type argument. -

-
-
- - - Is generic arguments only contains type parameters ? - - - - - Resolves a generic by name. - - Bruno Baia - - - - Resolves a by name. - - Rick Evans - Aleksandar Seovic - Bruno Baia - - - - Resolves the supplied to a - instance. - - - The unresolved (possibly partially assembly qualified) name - of a . - - - A resolved instance. - - - If the supplied could not be resolved - to a . - - - - - Uses - to load an and then the attendant - referred to by the - parameter. - - -

- is - deprecated in .NET 2.0, but is still used here (even when this class is - compiled for .NET 2.0); - will - still resolve (non-.NET Framework) local assemblies when given only the - display name of an assembly (the behaviour for .NET Framework assemblies - and strongly named assemblies is documented in the docs for the - method). -

-
- - The assembly and type to be loaded. - - - A , or . - - - - -
- - - Uses - to load the attendant referred to by - the parameter. - - - The type to be loaded. - - - A , or . - - - - - Creates a new instance - from the given - - - - - Creates a new instance - from the given with the given inner - - - - - Resolves the supplied generic to a - instance. - - - The unresolved (possibly generic) name of a . - - - A resolved instance. - - - If the supplied could not be resolved - to a . - - - - - Holds data about a and it's - attendant . - - - - - The string that separates a name - from the name of it's attendant - in an assembly qualified type name. - - - - - Creates a new instance of the TypeAssemblyHolder class. - - - The unresolved name of a . - - - - - The (unresolved) type name portion of the original type name. - - - - - The (unresolved, possibly partial) name of the attandant assembly. - - - - - Is the type name being resolved assembly qualified? - - - - - Provides access to a central registry of aliased s. - - -

- Simplifies configuration by allowing aliases to be used instead of - fully qualified type names. -

-

- Comes 'pre-loaded' with a number of convenience alias' for the more - common types; an example would be the 'int' (or 'Integer' - for Visual Basic.NET developers) alias for the - type. -

-
- Aleksandar Seovic - -
- - - Name of the .Net config section that contains Spring.Net type aliases. - - - - - The alias around the 'int' type. - - - - - The alias around the 'Integer' type (Visual Basic.NET style). - - - - - The alias around the 'int[]' array type. - - - - - The alias around the 'Integer()' array type (Visual Basic.NET style). - - - - - The alias around the 'decimal' type. - - - - - The alias around the 'Decimal' type (Visual Basic.NET style). - - - - - The alias around the 'decimal[]' array type. - - - - - The alias around the 'Decimal()' array type (Visual Basic.NET style). - - - - - The alias around the 'char' type. - - - - - The alias around the 'Char' type (Visual Basic.NET style). - - - - - The alias around the 'char[]' array type. - - - - - The alias around the 'Char()' array type (Visual Basic.NET style). - - - - - The alias around the 'long' type. - - - - - The alias around the 'Long' type (Visual Basic.NET style). - - - - - The alias around the 'long[]' array type. - - - - - The alias around the 'Long()' array type (Visual Basic.NET style). - - - - - The alias around the 'short' type. - - - - - The alias around the 'Short' type (Visual Basic.NET style). - - - - - The alias around the 'short[]' array type. - - - - - The alias around the 'Short()' array type (Visual Basic.NET style). - - - - - The alias around the 'unsigned int' type. - - - - - The alias around the 'unsigned long' type. - - - - - The alias around the 'ulong[]' array type. - - - - - The alias around the 'uint[]' array type. - - - - - The alias around the 'unsigned short' type. - - - - - The alias around the 'ushort[]' array type. - - - - - The alias around the 'double' type. - - - - - The alias around the 'Double' type (Visual Basic.NET style). - - - - - The alias around the 'double[]' array type. - - - - - The alias around the 'Double()' array type (Visual Basic.NET style). - - - - - The alias around the 'float' type. - - - - - The alias around the 'Single' type (Visual Basic.NET style). - - - - - The alias around the 'float[]' array type. - - - - - The alias around the 'Single()' array type (Visual Basic.NET style). - - - - - The alias around the 'DateTime' type. - - - - - The alias around the 'DateTime' type (C# style). - - - - - The alias around the 'DateTime' type (Visual Basic.NET style). - - - - - The alias around the 'DateTime[]' array type. - - - - - The alias around the 'DateTime[]' array type. - - - - - The alias around the 'DateTime()' array type (Visual Basic.NET style). - - - - - The alias around the 'bool' type. - - - - - The alias around the 'Boolean' type (Visual Basic.NET style). - - - - - The alias around the 'bool[]' array type. - - - - - The alias around the 'Boolean()' array type (Visual Basic.NET style). - - - - - The alias around the 'string' type. - - - - - The alias around the 'string' type (Visual Basic.NET style). - - - - - The alias around the 'string[]' array type. - - - - - The alias around the 'string[]' array type (Visual Basic.NET style). - - - - - The alias around the 'object' type. - - - - - The alias around the 'object' type (Visual Basic.NET style). - - - - - The alias around the 'object[]' array type. - - - - - The alias around the 'object[]' array type (Visual Basic.NET style). - - - - - The alias around the 'int?' type. - - - - - The alias around the 'int?[]' array type. - - - - - The alias around the 'decimal?' type. - - - - - The alias around the 'decimal?[]' array type. - - - - - The alias around the 'char?' type. - - - - - The alias around the 'char?[]' array type. - - - - - The alias around the 'long?' type. - - - - - The alias around the 'long?[]' array type. - - - - - The alias around the 'short?' type. - - - - - The alias around the 'short?[]' array type. - - - - - The alias around the 'unsigned int?' type. - - - - - The alias around the 'unsigned long?' type. - - - - - The alias around the 'ulong?[]' array type. - - - - - The alias around the 'uint?[]' array type. - - - - - The alias around the 'unsigned short?' type. - - - - - The alias around the 'ushort?[]' array type. - - - - - The alias around the 'double?' type. - - - - - The alias around the 'double?[]' array type. - - - - - The alias around the 'float?' type. - - - - - The alias around the 'float?[]' array type. - - - - - The alias around the 'bool?' type. - - - - - The alias around the 'bool?[]' array type. - - - - - Registers standard and user-configured type aliases. - - - - - Registers an alias for the specified . - - -

- This overload does eager resolution of the - referred to by the parameter. It will throw a - if the referred - to by the parameter cannot be resolved. -

-
- - A string that will be used as an alias for the specified - . - - - The (possibly partially assembly qualified) name of the - to register the alias for. - - - If either of the supplied parameters is or - contains only whitespace character(s). - - - If the referred to by the supplied - cannot be loaded. - -
- - - Registers short type name as an alias for - the supplied . - - - The to register. - - - If the supplied is . - - - - - Registers an alias for the supplied . - - - The alias for the supplied . - - - The to register the supplied under. - - - If the supplied is ; or if - the supplied is or - contains only whitespace character(s). - - - - - Resolves the supplied to a . - - - The alias to resolve. - - - The the supplied was - associated with, or if no - was previously registered for the supplied . - - - If the supplied is or - contains only whitespace character(s). - - - - - Returns a flag specifying whether TypeRegistry contains - specified alias or not. - - - Alias to check. - - - true if the specified type alias is registered, - false otherwise. - - - - - Helper methods with regard to type resolution. - - -

- Not intended to be used directly by applications. -

-
- Bruno Baia -
- - - Creates a new instance of the class. - - -

- This is a utility class, and as such exposes no public constructors. -

-
-
- - - Resolves the supplied type name into a - instance. - - -

- If you require special resolution, do - not use this method, but rather instantiate - your own . -

-
- - The (possibly partially assembly qualified) name of a - . - - - A resolved instance. - - - If the type cannot be resolved. - -
- - - Resolves a string array of interface names to - a array. - - - An array of valid interface names. Each name must include the full - interface and assembly name. - - An array of interface s. - - If any of the interfaces can't be loaded. - - - If any of the s specified is not an interface. - - - If (or any of its elements ) is - . - - - - - Match a method against the given pattern. - - the pattern to match against. - the method to match. - - if the method matches the given pattern; otherwise . - - - If the supplied is invalid. - - - - - Exception thrown when the ObjectFactory cannot load the specified type of a given object. - - Mark Pollack - - - - Thrown on an unrecoverable problem encountered in the - objects namespace or sub-namespaces, e.g. bad class or field. - - Rod Johnson - Mark Pollack (.NET) - - - - Superclass for all exceptions thrown in the Objects namespace and sub-namespaces. - - Rod Johnson - Mark Pollack (.NET) - - - Creates a new instance of the ObjectsException class. - - - - Creates a new instance of the ObjectsException class. with the specified message. - - - A message about the exception. - - - - - Creates a new instance of the ObjectsException class with the specified message - and root cause. - - - A message about the exception. - - - The root exception that is being wrapped. - - - - - Creates a new instance of the ObjectsException class. - - - The - that holds the serialized object data about the exception being thrown. - - - The - that contains contextual information about the source or destination. - - - - - Creates a new instance of the FatalObjectException class. - - - - - Creates a new instance of the FatalObjectException class with the - specified message. - - - A message about the exception. - - - - - Creates a new instance of the FatalObjectException class with the - specified message. - - - A message about the exception. - - - The root exception that is being wrapped. - - - - - Creates a new instance of the FatalObjectException class. - - - The - that holds the serialized object data about the exception being thrown. - - - The - that contains contextual information about the source or destination. - - - - - Initializes a new instance of the class. - - - - - Creates a new instance of the - class. - - - A message about the exception. - - - - - Creates a new instance of the - class. - - - A message about the exception. - - - The root exception that is being wrapped. - - - - - Initializes a new instance of the class. - - The resource description that the object definition came from. - Name of the object requested - Name of the object type. - The root cause. - - - - Creates a new instance of the - class. - - - The - that holds the serialized object data about the exception being thrown. - - - The - that contains contextual information about the source or destination. - - - - - Populates a with - the data needed to serialize the target object. - - - The to populate - with data. - - - The destination (see ) - for this serialization. - - - - - Gets he name of the object we are trying to load. - - The name of the object. - - - - Gets the name of the object type we are trying to load. - - The name of the object type. - - - - Gets the resource description that the object definition came from - - The resource description. - - - - A implementation that represents - a composed collection of instances. - - - - - The criteria for an arbitrary filter. - - Rick Evans - - - - Does the supplied satisfy the criteria - encapsulated by this instance? - - - The datum to be checked by this criteria instance. - - - if the supplied - satisfies the criteria encapsulated by this instance; - if not, or the supplied - is . - - - - - Creates a new instance of the - class. - - - - - Creates a new instance of the - class. - - - A user-defined (child) criteria that will be composed into this instance. - - - - - Does the supplied satisfy the criteria encapsulated by - this instance? - - The data to be checked by this criteria instance. - - True if the supplied satisfies the criteria encapsulated - by this instance; false if not or the supplied is null. - - - - - Adds the supplied into the criteria - composed within this instance. - - - The to be added. - - - - - The list of composing this - instance. - - - - - Factory class to conceal any default implementation. - - Rod Johnson - Simon White (.NET) - - - - Creates a new instance of the - implementation provided by this factory. - - - A new instance of the - implementation provided by this factory. - - - - - Interface to be implemented by objects that can return information about - the current call stack. - - -

- Useful in AOP (as an expression of the AspectJ cflow concept) but not AOP-specific. -

-
- Rod Johnson - Aleksandar Seovic (.Net) -
- - - Detects whether the caller is under the supplied , - according to the current stacktrace. - - - The to look for. - - - if the caller is under the supplied . - - - - - Detects whether the caller is under the supplied - and , according to the current stacktrace. - - - The to look for. - - The name of the method to look for. - - if the caller is under the supplied - and . - - - - - Does the current stack trace contain the supplied ? - - The token to match against. - - if the current stack trace contains the supplied - . - - - - - Creates a new instance of the - class. - - - - - Detects whether the caller is under the supplied , - according to the current stacktrace. - - - - - - Detects whether the caller is under the supplied - and , according to the current stacktrace. - - -

- Matches the whole method name. -

-
- -
- - - Does the current stack trace contain the supplied ? - - -

- This leaves it up to the caller to decide what matches, but is obviously less of - an abstraction because the caller must know the exact format of the underlying - stack trace. -

-
- -
- - - Provides methods to support various naming and other conventions used throughout the framework. - Mainly for internal use within the framework. - - Rob Harrop - Juergen Hoeller - Mark Pollack (.NET) - - - Convert Strings in attribute name format (lowercase, hyphens separating words) - into property name format (camel-cased). For example, transaction-manager is - converted into transactionManager. - - - - - Convenience class that exposes a signature that matches the - delegate. - - -

- Useful when filtering members via the - mechanism. -

-
- Rick Evans -
- - - Creates a new instance of the - class. - - - - - Returns true if the supplied instance - satisfies the supplied (which must be an - implementation). - - - The instance that will be checked to see if - it matches the supplied . - - - The criteria against which to filter the supplied - instance. - - - True if the supplied instance - satisfies the supplied (which must be an - implementation); false if not or the - supplied is not an - implementation or is null. - - - - - Interface that can be implemented by exceptions etc that are error coded. - - -

- The error code is a , rather than a number, so it can - be given user-readable values, such as "object.failureDescription". -

-
- Rod Johnson - Aleksandar Seovic (.Net) -
- - - Return the error code associated with this failure. - - -

- The GUI can render this anyway it pleases, allowing for I18n etc. -

-
- - The error code associated with this failure, - or the empty string instance if not error-coded. - -
- - - Thrown in response to referring to an invalid property (most often via reflection). - - Rick Evans - - - - Creates a new instance of the - class. - - - - - Creates a new instance of the - class. - - - A message about the exception. - - - - - Creates a new instance of the - class. - - - The that is (or rather was) the source of the - offending property. - - - The name of the offending property. - - - - - Creates a new instance of the - class. - - - The that is (or rather was) the source of the - offending property. - - - The name of the offending property. - - - A message about the exception. - - - - - Creates a new instance of the InvalidPropertyException class. - - - The that is (or rather was) the source of the - offending property. - - - The name of the offending property. - - - A message about the exception. - - - The root exception that is being wrapped. - - - - - Creates a new instance of the - class. - - - A message about the exception. - - - The root exception that is being wrapped. - - - - - Creates a new instance of the - class. - - - The - that holds the serialized object data about the exception being thrown. - - - The - that contains contextual information about the source or destination. - - - - - Populates a with - the data needed to serialize the target object. - - - The to populate - with data. - - - The destination (see ) - for this serialization. - - - - - The that is (or rather was) the source of the - offending property. - - - - - The name of the offending property. - - - - - Criteria that is satisfied if the number of generic arguments to a given - matches an arbitrary number. - - -

- This class supports checking the generic arguments count of both - generic methods and constructors. -

-
- Bruno Baia -
- - - Creates a new instance of the - class. - - -

- This constructor sets the - - property to zero (0). -

-
-
- - - Creates a new instance of the - class. - - - The number of generic arguments that a - must have to satisfy this criteria. - - - If the supplied is less - than zero. - - - - - Does the supplied satisfy the criteria encapsulated by - this instance? - - The datum to be checked by this criteria instance. - - True if the supplied satisfies the criteria encapsulated - by this instance; false if not or the supplied is null. - - - - - The number of generic arguments that a - must have to satisfy this criteria. - - - If the supplied value is less than zero. - - - - - Thrown when a method (typically a property getter or setter invoked via reflection) - throws an exception, analogous to a . - - Rod Johnson - Mark Pollack (.NET) - - - - Superclass for exceptions related to a property access, such as a - mismatch or a target invocation exception. - - Rod Johnson - Mark Pollack (.NET) - - - - Populates a with - the data needed to serialize the target object. - - - The to populate - with data. - - - The destination (see ) - for this serialization. - - - - - Create a new instance of the PropertyAccessException class. - - - A message about the exception. - - Describes the change attempted on the property. - - - - Create a new instance of the PropertyAccessException class. - - - A message about the exception. - - Describes the change attempted on the property. - - The root exception that is being wrapped. - - - - - Creates a new instance of the PropertyAccessException class. - - - - - Creates a new instance of the PropertyAccessException class. - - - A message about the exception. - - - - - Creates a new instance of the PropertyAccessExceptionsException class. - - - A message about the exception. - - - The root exception that is being wrapped. - - - - - Creates a new instance of the PropertyAccessExceptionsException class. - - - The - that holds the serialized object data about the exception being thrown. - - - The - that contains contextual information about the source or destination. - - - - - Returns the PropertyChangeEventArgs that resulted in the problem. - - - - - The string error code used to classify the error. - - - - - Creates a new instance of the MethodInvocationException class. - - - - - Creates a new instance of the MethodInvocationException class. - - - A message about the exception. - - - - - Creates a new instance of the MethodInvocationException class. - - - A message about the exception. - - - The root exception that is being wrapped. - - - - - Constructor to use when an exception results from a - . - - - The raised by the invoked property. - - - The that - resulted in an exception. - - - - - Creates a new instance of the MethodInvocationException class. - - - The - that holds the serialized object data about the exception being thrown. - - - The - that contains contextual information about the source or destination. - - - - - The error code string for this exception. - - - - - Criteria that is satisfied if the method Name of an - instance matches a - supplied string pattern. - - - - Supports the following simple pattern styles: - "xxx*", "*xxx" and "*xxx*" matches, as well as direct equality. - - - Bruno Baia - - - - Creates a new instance of the - class. - - -

- This constructor sets the - - property to * (any method name). -

-
-
- - - Creates a new instance of the - class. - - The pattern that names - must match against in order to satisfy this criteria. - - If the supplied is null or resolve to an empty string. - - - - - Does the supplied satisfy the criteria encapsulated by - this instance? - - The datum to be checked by this criteria instance. - - True if the supplied satisfies the criteria encapsulated - by this instance; false if not or the supplied is null. - - - - - The number of parameters that a - must have to satisfy this criteria. - - - If the supplied value is null or resolve to an empty string. - - - - - Helper class that encapsulates the specification of a method parameter, i.e. - a MethodInfo or ConstructorInfo plus a parameter index. - Useful as a specification object to pass along. - - Juergen Hoeller - Rob Harrop - Mark Pollack (.NET) - - - - Initializes a new instance of the class for the given - MethodInfo. - - The MethodInfo to specify a parameter for. - Index of the parameter. - - - - Initializes a new instance of the class. - - The ConstructorInfo to specify a parameter for. - Index of the parameter. - - - - Create a new MethodParameter for the given method or donstructor. - This is a convenience constructor for scenarios where a - Method or Constructor reference is treated in a generic fashion. - - The method or constructor to specify a parameter for. - Index of the parameter. - the corresponding MethodParameter instance - - - - Parameters the name of the method/constructor parameter. - - the parameter name. - - - - Gets the type of the method/constructor parameter. - - The type of the parameter. (never null) - - - - Gets the wrapped MethodInfo, if any. Note Either MethodInfo or ConstructorInfo is available. - - The MethodInfo, or null if none. - - - - Gets wrapped ConstructorInfo, if any. Note Either MethodInfo or ConstructorInfo is available. - - The ConstructorInfo, or null if none - - - - Criteria that is satisfied if the number of parameters to a given - matches an arbitrary number. - - -

- This class supports checking the parameter count of both methods and - constructors. -

-

- Default parameters, etc need to taken into account. -

-
- Rick Evans -
- - - Creates a new instance of the - class. - - -

- This constructor sets the - - property to zero (0). -

-
-
- - - Creates a new instance of the - class. - - - The number of parameters that a - must have to satisfy this criteria. - - - If the supplied is less - than zero. - - - - - Does the supplied satisfy the criteria encapsulated by - this instance? - - The datum to be checked by this criteria instance. - - True if the supplied satisfies the criteria encapsulated - by this instance; false if not or the supplied is null. - - - - - The number of parameters that a - must have to satisfy this criteria. - - - If the supplied value is less than zero. - - - - - Criteria that is satisfied if the of each of the - parameters of a given matches each - of the parameter s of a given - . - - -

- If no array is passed to the overloaded constructor, - any method that has no parameters will satisfy an instance of this - class. The same effect could be achieved by passing the - array to the overloaded constructor. -

-
- Rick Evans -
- - - Creates a new instance of the - class. - - - - - Creates a new instance of the - class. - - -

- If the supplied array is null, then this - constructor uses the array. -

-
- - The array that this criteria will use to - check parameter s. - -
- - - Does the supplied satisfy the criteria encapsulated by - this instance? - - -

- This implementation respects the inheritance chain of any parameter - s... i.e. methods that have a base type (or - interface) that is assignable to the in the - same corresponding index of the parameter types will satisfy this - criteria instance. -

-
- The datum to be checked by this criteria instance. - - True if the supplied satisfies the criteria encapsulated - by this instance; false if not or the supplied is null. - -
- - - Criteria that is satisfied if the return of a given - matches a given . - - Rick Evans - - - - The return to match against if no - is provided explictly. - - - - - Creates a new instance of the - class. - - - - - Creates a new instance of the - class. - - - The that the return type of a given - must match in order to satisfy - this criteria. - - - - - Does the supplied satisfy the criteria encapsulated by - this instance? - - The datum to be checked by this criteria instance. - - True if the supplied satisfies the criteria encapsulated - by this instance; false if not or the supplied is null. - - - - - The that the return type of a given - must match in order to satisfy - this criteria. - - - - - Thrown in response to a failed attempt to read a property. - - -

- Typically thrown when attempting to read the value of a write-only - property via reflection. -

-
- Juergen Hoeller - Rick Evans (.NET) -
- - - Creates a new instance of the - class. - - - - - Creates a new instance of the - class. - - - A message about the exception. - - - - - Creates a new instance of the - class. - - - The that is (or rather was) the source of the - offending property. - - - The name of the offending property. - - - - - Creates a new instance of the - class. - - - A message about the exception. - - - The root exception that is being wrapped. - - - - - Creates a new instance of the - class. - - - The - that holds the serialized object data about the exception being thrown. - - - The - that contains contextual information about the source or destination. - - - - - Thrown in response to a failed attempt to write a property. - - Mark Pollack (.NET) - - - - Creates a new instance of the NotWritablePropertyException class. - - - - - Creates a new instance of the NotWritablePropertyException class. - - - A message about the exception. - - - - - Creates a new instance of the NotWritablePropertyException class. - - - A message about the exception. - - - The root exception that is being wrapped. - - - - - Creates a new instance of the NotWritablePropertyException class. - - - The that is (or rather was) the source of the - offending property. - - - The name of the offending property. - - - A message about the exception. - - - The root exception that is being wrapped. - - - - - Creates a new instance of the NotWritablePropertyException class - summarizing what property was not writable. - - - The name of the property that is not writable. - - - The in which the property is not writable. - - - - - Creates new NotWritablePropertyException with a root cause. - - - The name of the property that is not writable. - - - The in which the property is not writable. - - - The root cause indicating why the property was not writable. - - - - - Creates a new instance of the NotWritablePropertyException class. - - - The - that holds the serialized object data about the exception being thrown. - - - The - that contains contextual information about the source or destination. - - - - - Thrown in response to encountering a value - when traversing a nested path expression. - - - - - Creates a new instance of the - class. - - - - - Creates a new instance of the - class. - - - A message about the exception. - - - - - Creates a new instance of the - class. - - - A message about the exception. - - - The root exception that is being wrapped. - - - - - Creates a new instance of the - class. - - - The of the object where the property was not found. - - The name of the property not found. - - - - Creates a new instance of the - class. - - - The of the object where the property was not found. - - The name of the property not found. - A message about the exception. - - - - Creates a new instance of the - class. - - - The - that holds the serialized object data about the exception being thrown. - - - The - that contains contextual information about the source or destination. - - - - - Populates a with - the data needed to serialize the target object. - - - The to populate - with data. - - - The destination (see ) - for this serialization. - - - - - The name of the offending property. - - - - - The of the class where the property was last looked for. - - - - - Comparator implementation for objects, sorting by - order value ascending (resp. by priority descending). - - -

- Non- objects are treated as greatest order values, - thus ending up at the end of a list, in arbitrary order (just like same order values of - objects). -

-
- Juergen Hoeller - Aleksandar Seovic (.Net) -
- - - Compares two objects and returns a value indicating whether one is less than, - equal to or greater than the other. - - -

- Uses direct evaluation instead of - to avoid unnecessary boxing. -

-
- The first object to compare. - The second object to compare. - - -1 if first object is less then second, 1 if it is greater, or 0 if they are equal. - -
- - - Handle the case when both objects have equal sort order priority. By default returns 0, - but may be overriden for handling special cases. - - The first object to compare. - The second object to compare. - - -1 if first object is less then second, 1 if it is greater, or 0 if they are equal. - - - - - Provides additional data for the PropertyChanged event. - - -

- Provides some additional properties over and above the name of the - property that has changed (which is inherited from the - base class). - This allows calling code to determine whether or not a property has - actually changed (i.e. a PropertyChanged event may have been - raised, but the value itself may be equivalent). -

-
- -
- - - Create a new instance of the - class. - - - The name of the property that was changed. - The old value of the property. - the new value of the property. - - - - Get the old value for the property. - - - - - - Get the new value of the property. - - - - - - A base class for all - implementations that are regular expression based. - - Rick Evans - - - - The default pattern... matches absolutely anything. - - - - - Creates a new instance of the - class. - - - - - Creates a new instance of the - class. - - - The regular expression pattern to be applied. - - - - - Does the supplied satisfy the criteria encapsulated by - this instance? - - The datum to be checked by this criteria instance. - - True if the supplied satisfies the criteria encapsulated - by this instance; false if not or the supplied is null. - - - - - Convenience method that calls the - - on the supplied . - - The input to match against. - True if the matches. - - - - The regular expression pattern to be applied. - - - - - The regular expression options to be applied. - - - - - The regular expression to be applied. - - - - - Criteria that is satisfied if the Name property of an - instance matches a - supplied regular expression pattern. - - Rick Evans - - - - The default event name pattern... matches pretty much any event name. - - - - - Creates a new instance of the - class. - - - - - Creates a new instance of the - class. - - - The pattern that names - must match against in order to satisfy this criteria. - - - - - Does the supplied satisfy the criteria encapsulated by - this instance? - - The datum to be checked by this criteria instance. - - True if the supplied satisfies the criteria encapsulated - by this instance; false if not or the supplied is null. - - - - - Criteria that is satisfied if the Name property of an - instance matches a - supplied regular expression pattern. - - Rick Evans - - - - The default method name pattern... matches pretty much any method name. - - - - - Creates a new instance of the - class. - - - - - Creates a new instance of the - class. - - - The pattern that names - must match against in order to satisfy this criteria. - - - - - Does the supplied satisfy the criteria encapsulated by - this instance? - - The datum to be checked by this criteria instance. - - True if the supplied satisfies the criteria encapsulated - by this instance; false if not or the supplied is null. - - - - - Exception thrown on a mismatch when trying to set a property - or resolve an argument to a method invocation. - - Rod Johnson - Juergen Hoeller - Mark Pollack (.NET) - - - - Creates a new instance of the TypeMismatchException class. - - - - - Creates a new instance of the TypeMismatchException class. - - - A message about the exception. - - - - - Creates a new instance of the TypeMismatchException class. - - - A message about the exception. - - - The root exception that is being wrapped. - - - - - Creates a new instance of the TypeMismatchException class describing the - property and required type that could not used to set a property on the target object. - - - The description of the property that was to be changed. - - The target conversion type. - - - - Creates a new instance of the TypeMismatchException class describing the - property, required type, and underlying exception that could not be used - to set a property on the target object. - - - The description of the property that was to be changed. - - The target conversion type. - The underlying exception. - - - - Creates a new instance of the TypeMismatchException class. - - - The - that holds the serialized object data about the exception being thrown. - - - The - that contains contextual information about the source or destination. - - - - - The string error code used to classify the exception. - - - - - Abstract base class for implementations. - - Aleksandar Seovic - - - - An interface that defines the methods that have to be implemented by all data bindings. - - Aleksandar Seovic - - - - Binds source object to target object. - - - The source object. - - - The target object. - - - Validation errors collection that type conversion errors should be added to. - - - - - Binds source object to target object. - - - The source object. - - - The target object. - - - Validation errors collection that type conversion errors should be added to. - - - Variables that should be used during expression evaluation. - - - - - Binds target object to source object. - - - The source object. - - - The target object. - - - Validation errors collection that type conversion errors should be added to. - - - - - Binds target object to source object. - - - The source object. - - - The target object. - - - Validation errors collection that type conversion errors should be added to. - - - Variables that should be used during expression evaluation. - - - - - Sets error message that should be displayed in the case - of a non-fatal binding error. - - - Resource ID of the error message. - - - List of error providers message should be added to. - - - - - The name of the always filled error provider - - - - - Gets or sets a flag specifying whether this binding is valid. - - - true if this binding evaluated without errors; - false otherwise. - - - - - Marks this binding's state as invalid for this validationErrors collection. - Returns false if is null. - - - false, if validationErrors is null - - - - Initializes a new instance of the class. - - - - - Binds source object to target object. - - - The source object. - - - The target object. - - - Validation errors collection that type conversion errors should be added to. - - - - - Binds target object to source object. - - - The source object. - - - The target object. - - - Validation errors collection that type conversion errors should be added to. - - - - - Binds source object to target object. - - - The source object. - - - The target object. - - - Validation errors collection that type conversion errors should be added to. - - - Variables that should be used during expression evaluation. - - - - - Binds target object to source object. - - - The source object. - - - The target object. - - - Validation errors collection that type conversion errors should be added to. - - - Variables that should be used during expression evaluation. - - - - - Sets error message that should be displayed in the case - of a non-fatal binding error. - - - Resource ID of the error message. - - - List of error providers message should be added to. - - - - - Determines whether the specified is equal to the current . - - - true if the specified is equal to the current ; otherwise, false. - - The to compare with the current . 2 - - - - Serves as a hash function for a particular type. is suitable for use in hashing algorithms and data structures like a hash table. - - - A hash code for the current . - - - - - Gets the unique ID of this binding instance. - - - - - Gets or sets the . - - The binding direction. - - - - Gets the error message. - - The error message. - - - - Gets the error providers. - - - - - Abstract base class for simple, one-to-one implementations. - - Aleksandar Seovic - - - - Initialize a new instance of without any - - - - - Initialize a new instance of with the - specified . - - - - - Binds source object to target object. - - - The source object. - - - The target object. - - - Validation errors collection that type conversion errors should be added to. - - - Variables that should be used during expression evaluation. - - - - - Concrete implementation if source to target binding. - - - The source object. - - - The target object. - - - Variables that should be used during expression evaluation. - - - - - Binds target object to source object. - - - The source object. - - - The target object. - - - Validation errors collection that type conversion errors should be added to. - - - Variables that should be used during expression evaluation. - - - - - Concrete implementation of target to source binding. - - - The source object. - - - The target object. - - - Variables that should be used during expression evaluation. - - - - - Gets the source value for the binding. - - - Source object to extract value from. - - - Variables for expression evaluation. - - - The source value for the binding. - - - - - Sets the source value for the binding. - - - The source object to set the value on. - - - The value to set. - - - Variables for expression evaluation. - - - - - Gets the target value for the binding. - - - Source object to extract value from. - - - Variables for expression evaluation. - - - The target value for the binding. - - - - - Sets the target value for the binding. - - - The target object to set the value on. - - - The value to set. - - - Variables for expression evaluation. - - - - - Gets or sets the to use. - - The formatter to use. - - - - Base implementation of the . - - Aleksandar Seovic - - - - An interface that has to be implemented by all data binding containers. - - Aleksandar Seovic - - - - Adds the binding. - - - Binding definition to add. - - - Added instance. - - - - - Adds the binding with a default - binding direction of . - - - This is a convinience method for adding SimpleExpressionBinding, - one of the most often used binding types, to the bindings list. - - - The source expression. - - - The target expression. - - - Added instance. - - - - - Adds the binding. - - - This is a convinience method for adding SimpleExpressionBinding, - one of the most often used binding types, to the bindings list. - - - The source expression. - - - The target expression. - - - Binding direction. - - - Added instance. - - - - - Adds the binding with a default - binding direction of . - - - This is a convinience method for adding SimpleExpressionBinding, - one of the most often used binding types, to the bindings list. - - - The source expression. - - - The target expression. - - - to use for value formatting and parsing. - - - Added instance. - - - - - Adds the binding. - - - This is a convinience method for adding SimpleExpressionBinding, - one of the most often used binding types, to the bindings list. - - - The source expression. - - - The target expression. - - - Binding direction. - - - to use for value formatting and parsing. - - - Added instance. - - - - - Gets a value indicating whether this data binding container - has bindings. - - - true if this data binding container has bindings; - false otherwise. - - - - - Creates a new instance of . - - - - - Adds the binding. - - - Binding definition to add. - - - Added instance. - - - - - Adds the binding with a default - binding direction of . - - - The source expression. - - - The target expression. - - - Added instance. - - - - - Adds the binding. - - - The source expression. - - - The target expression. - - - Binding direction. - - - Added instance. - - - - - Adds the binding with a default - binding direction of . - - - The source expression. - - - The target expression. - - - to use for value formatting and parsing. - - - Added instance. - - - - - Adds the binding. - - - The source expression. - - - The target expression. - - - Binding direction. - - - to use for value formatting and parsing. - - - Added instance. - - - - - Binds source object to target object. - - - The source object. - - - The target object. - - - Validation errors collection that type conversion errors should be added to. - - - - - Binds source object to target object. - - - The source object. - - - The target object. - - - Validation errors collection that type conversion errors should be added to. - - - Variables that should be used during expression evaluation. - - - - - Binds target object to source object. - - - The source object. - - - The target object. - - - Validation errors collection that type conversion errors should be added to. - - - - - Binds target object to source object. - - - The source object. - - - The target object. - - - Validation errors collection that type conversion errors should be added to. - - - Variables that should be used during expression evaluation. - - - - - Implemented as a NOOP for containers. - of a non-fatal binding error. - - - Resource ID of the error message. - - - List of error providers message should be added to. - - - - - Gets a list of bindings for this container. - - - A list of bindings for this container. - - - - - Gets a value indicating whether this instance has bindings. - - - true if this instance has bindings; otherwise, false. - - - - - BaseBindingManager keeps track of all registered bindings and - represents an entry point for the binding and unbinding process. - - Aleksandar Seovic - - - - Initializes a new instance of the class. - - - - - Enumeration that defines possible values for data binding direction. - - Aleksandar Seovic - - - - Specifies that value from the control property should be bound to a data model. - - - - - Specifies that value from the data model should be bound to control property. - - - - - Specifies that binding is bidirectional. - - - - - Represents an ErrorMessage specific to a binding instance. - - Erich Eichinger - - - - Represents a single validation error message. - - Aleksandar Seovic - Goran Milosavljevic - - - - Default constructor. - - - - - Initializes a new instance of the class. - - Error message resource identifier. - Parameters that should be used for message resolution. - - - - Initializes a new instance of the class copying values from another instance. - - Another Error message instance to copy values from. - - - - This property is reserved, apply the - - to the class instead. - - - An - that describes the XML representation of the object that - is produced by the - - method and consumed by the - - method. - - - - - - Generates an object from its XML representation. - - - The stream - from which the object is deserialized. - - - - - Converts an object into its XML representation. - - - The stream - to which the object is serialized. - - - - - Resolves the message against specified . - - Message source to resolve this error message against. - Resolved error message. - - - - Determines whether the specified is equal to the current . - - - true if the specified is equal to the current ; otherwise, false. - - The to compare with the current . 2 - - - - Serves as a hash function for a particular type. is suitable for use in hashing algorithms and data structures like a hash table. - - - A hash code for the current . - - - - - Gets or sets the resource identifier for this message. - - The resource identifier for this message. - - - - Gets or sets the message parameters. - - The message parameters. - - - - Initializes a new instance of the class. - - the id of the binding this error message is associated with - the message id - optional parameters to this message - - - - Generates an object from its XML representation. - - - The stream - from which the object is deserialized. - - - - - Converts an object into its XML representation. - - - The stream - to which the object is serialized. - - - - - Determines whether the specified is equal to the current . - - - true if the specified is equal to the current ; otherwise, false. - - The to compare with the current . 2 - - - - Serves as a hash function for a particular type. is suitable for use in hashing algorithms and data structures like a hash table. - - - A hash code for the current . - - - - - Get the ID of the binding this message instance relates to. - - - - - Interface that should be implemented by data bound objects, such as - web pages, user controls, windows forms, etc. - - Aleksandar Seovic - - - - Gets the binding manager. - - The binding manager. - - - - implementation that allows - data binding between collections that implement - interface. - - Aleksandar Seovic - - - - Binds source object to target object. - - - The source object. - - - The target object. - - - Validation errors collection that type conversion errors should be added to. - - - Variables that should be used during expression evaluation. - - - - - Binds target object to source object. - - - The source object. - - - The target object. - - - Validation errors collection that type conversion errors should be added to. - - - Variables that should be used during expression evaluation. - - - - - Simple, expression-based implementation of that - binds source to target one-to-one. - - Aleksandar Seovic - - - - Initializes a new instance of the class. - - - The source expression. - - - The target expression. - - - - - Initializes a new instance of the class. - - - The source expression. - - - The target expression. - - - The formatter to use. - - - - - Gets the source value for the binding. - - - Source object to extract value from. - - - Variables for expression evaluation. - - - The source value for the binding. - - - - - Sets the source value for the binding. - - - The source object to set the value on. - - - The value to set. - - - Variables for expression evaluation. - - - - - Gets the target value for the binding. - - - Source object to extract value from. - - - Variables for expression evaluation. - - - The target value for the binding. - - - - - Sets the target value for the binding. - - - The target object to set the value on. - - - The value to set. - - - Variables for expression evaluation. - - - - - Gets the source expression. - - The source expression. - - - - Gets the target expression. - - The target expression. - - - - Implementation of the average aggregator. - - Aleksandar Seovic - - - - Defines an interface that should be implemented - by all collection processors and aggregators. - - - - - Processes a list of source items and returns a result. - - - The source list to process. - - - An optional processor arguments array. - - - The processing result. - - - - - Returns the average of the numeric values in the source collection. - - - The source collection to process. - - - Ignored. - - - The average of the numeric values in the source collection. - - - - - Converts all elements in the input list to a given target type. - - Erich Eichinger - - - - Processes a list of source items and returns a result. - - - The source list to process. - - - An optional processor arguments array. - - - The processing result. - - - - - Implementation of the count aggregator. - - Aleksandar Seovic - - - - Returns the number of items in the source collection. - - - The source collection to process. - - - Ignored. - - - The number of items in the source collection, - or zero if the collection is empty or null. - - - - - Implementation of the distinct processor. - - Aleksandar Seovic - - - - Returns distinct items from the collection. - - - The source collection to process. - - - 0: boolean flag specifying whether to include null - in the results or not. Default is false, which means that - null values will not be included in the results. - - - A collection containing distinct source collection elements. - - - If there is more than one argument, or if the single optional argument - is not Boolean. - - - - - Implementation of the maximum aggregator. - - Aleksandar Seovic - - - - Returns the largest item in the source collection. - - - The source collection to process. - - - Ignored. - - - The largest item in the source collection. - - - - - Implementation of the minimum aggregator. - - Aleksandar Seovic - - - - Returns the smallest item in the source collection. - - - The source collection to process. - - - Ignored. - - - The smallest item in the source collection. - - - - - Implementation of the non-null processor. - - Aleksandar Seovic - - - - Returns non-null items from the collection. - - - The source collection to process. - - - Ignored. - - - A collection containing non-null source collection elements. - - - - - Implementation of the 'order by' processor. - - Aleksandar Seovic - Erich Eichinger - - - - Sorts the source collection using custom sort criteria. - - - Please note that your compare function needs to take care about - proper conversion of types to be comparable! - - - The source collection to sort. - - - Sort criteria to use. - - - A sorted array containing collection elements. - - - - - Reverts order of elements in the list - - Erich Eichinger - - - - Processes a list of source items and returns a result. - - - The source list to process. - - - An optional processor arguments array. - - - The processing result. - - - - - Implementation of the sort processor. - - Aleksandar Seovic - - - - Sorts the source collection. - - - Please not that this processor requires that collection elements - are of a uniform type and that they implement - interface. -

- If you want to perform custom sorting based on element properties - you should consider using instead. - - - The source collection to sort. - - - Ignored. - - - An array containing sorted collection elements. - - - If collection is not empty and it is - neither nor . - - - -

- Implementation of the sum aggregator. - - Aleksandar Seovic -
- - - Returns the sum of the numeric values in the source collection. - - - The source collection to process. - - - Ignored. - - - The sum of the numeric values in the source collection. - - - - - Represents parsed method node in the navigation expression. - - Aleksandar Seovic - - - - Base type for nodes that accept arguments. - - Aleksandar Seovic - - - - Base type for all expression nodes. - - Aleksandar Seovic - - - - For internal purposes only. Use for expression node implementations. - - - This class is only required to enable serialization of parsed Spring expressions since antlr.CommonAST - unfortunately is not marked as [Serializable].
-
- Note:Since SpringAST implements , deriving classes - have to explicitely override if they need to persist additional - data during serialization. -
-
- - - The global SpringAST node factory - - - - - Create an instance - - - - - Create an instance from a token - - - - - initialize this instance from an AST - - - - - initialize this instance from an IToken - - - - - initialize this instance from a token type number and a text - - - - - sets the text of this node - - - - - gets the text of this node - - - - - Create a new instance from SerializationInfo - - - - - populate SerializationInfo from this instance - - - - - gets or sets the token type of this node - - - - - gets or sets the text of this node - - - - - Interface that all navigation expression nodes have to implement. - - Aleksandar Seovic - - - - Returns expression value. - - Value of the expression. - - - - Returns expression value. - - Object to evaluate expression against. - Value of the expression. - - - - Returns expression value. - - Object to evaluate expression against. - Expression variables map. - Value of the expression. - - - - Sets expression value. - - Object to evaluate expression against. - New value for the last node of the expression. - - - - Sets expression value. - - Object to evaluate expression against. - Expression variables map. - New value for the last node of the expression. - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns node's value. - - Node's value. - - - - Returns node's value for the given context. - - Object to evaluate node against. - Node's value. - - - - Returns node's value for the given context. - - Object to evaluate node against. - Expression variables map. - Node's value. - - - - This is the entrypoint into evaluating this expression. - - - - - Called internally during expression evaluation - - Object to evaluate node against. - Current expression evaluation context. - - - - - Returns node's value for the given context. - - Node's value. - - - - Sets node's value for the given context. - - Object to evaluate node against. - New value for this node. - - - - Sets node's value for the given context. - - Object to evaluate node against. - Expression variables map. - New value for this node. - - - - This is the entrypoint into evaluating this expression. - - - - - Called internally during expression evaluation. - - - - - Sets node's value for the given context. - - -

- This is a default implementation of Set method, which - simply throws . -

-

- This was done in order to avoid redundant Set method implementations, - because most of the node types do not support value setting. -

-
-
- - - Returns a string representation of this node instance. - - - - - Holds the state during evaluating an expression. - - - - - Gets/Sets the root context of the current evaluation - - - - - Gets/Sets the current context of the current evaluation - - - - - Gets/Sets global variables of the current evaluation - - - - - Gets/Sets local variables of the current evaluation - - - - - Initializes a new EvaluationContext instance. - - The root context for this evaluation - dictionary of global variables used during this evaluation - - - - Switches current ThisContext. - - - - - Switches current LocalVariables. - - - - - Gets the type of the - - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Initializes the node. - - - - - Asserts the argument count. - - The required count. - - - - Resolves the arguments. - - Current expression evaluation context. - An array of argument values - - - - Resolves the named arguments. - - Current expression evaluation context. - A dictionary of argument name to value mappings. - - - - Resolves the argument. - - Argument position. - Current expression evaluation context. - Resolved argument value. - - - - Resolves the named argument. - - Argument name. - Current expression evaluation context. - Resolved named argument value. - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Creates new instance of the type defined by this node. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Represents parsed assignment node in the navigation expression. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Assigns value of the right operand to the left one. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Represents parsed attribute node in the navigation expression. - - Aleksandar Seovic - - - - Represents parsed method node in the navigation expression. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Creates new instance of the type defined by this node. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Determines the type of object that should be instantiated. - - - The type name to resolve. - - - The type of object that should be instantiated. - - - If the type cannot be resolved. - - - - - Initializes this node by caching necessary constructor and property info. - - - - - - - Sets the named arguments (properties). - - Instance to set property values on. - Argument (property) name to value mappings. - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Tries to determine attribute type based on the specified - attribute type name. - - - Attribute type name to resolve. - - - Resolved attribute type. - - - If type cannot be resolved. - - - - - Base class for unary operators. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Gets the left operand. - - The left operand. - - - - Gets the right operand. - - The right operand. - - - - Represents parsed boolean literal node. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns a value for the boolean literal node. - - - This is the entrypoint into evaluating this expression. - - Node's value. - - - - Represents parsed node in the navigation expression. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns node's value for the given context. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Represents parsed default node in the navigation expression. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns left operand if it is not null, or the right operand if it is. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Container object for the parsed expression. - - -

- Preparing this object once and reusing it many times for expression - evaluation can result in significant performance improvements, as - expression parsing and reflection lookups are only performed once. -

-
- Aleksandar Seovic -
- - - Initializes a new instance of the class - by parsing specified expression string. - - Expression to parse. - - - - Registers lambda expression under the specified . - - Function name to register expression as. - Lambda expression to register. - Variables dictionary that the function will be registered in. - - - - Initializes a new instance of the class - by parsing specified primary expression string. - - Primary expression to parse. - - - - Initializes a new instance of the class - by parsing specified property expression string. - - Property expression to parse. - - - - Initializes a new instance of the class. - - - - - Create a new instance from SerializationInfo - - - - - Evaluates this expression for the specified root object and returns - value of the last node. - - Context to evaluate expressions against. - Current expression evaluation context. - Value of the last node. - - - - Evaluates this expression for the specified root object and sets - value of the last node. - - Context to evaluate expressions against. - Current expression evaluation context. - Value to set last node to. - If navigation expression is empty. - - - - Evaluates this expression for the specified root object and returns - of the last node, if possible. - - Context to evaluate expression against. - Expression variables map. - Value of the last node. - - - - Contains a list of reserved variable names. - You must not use any variable names with the reserved prefix! - - - - - Variable Names using this prefix are reserved for internal framework use - - - - - variable name of the currently processed object factory, if any - - - - - Converts string representation of expression into an instance of . - - Aleksandar Seovic - - - - Can we convert from a the sourcetype to a ? - - -

- Currently only supports conversion from a instance. -

-
- - A - that provides a format context. - - - A that represents the - you want to convert from. - - if the conversion is possible. -
- - - Convert from a value to an - instance. - - - A - that provides a format context. - - - The to use - as the current culture. - - - The value that is to be converted. - - - A array if successful. - - - - - Utility class that enables easy expression evaluation. - - -

- This class allows users to get or set properties, execute methods, and evaluate - logical and arithmetic expressions. -

-

- Methods in this class parse expression on every invocation. - If you plan to reuse the same expression many times, you should prepare - the expression once using the static method, - and then call to evaluate it. -

-

- This can result in significant performance improvements as it avoids expression - parsing and node resolution every time it is called. -

-

-

-
- Aleksandar Seovic -
- - - Parses and evaluates specified expression. - - Root object. - Expression to evaluate. - Value of the last node in the expression. - - - - Parses and evaluates specified expression. - - Root object. - Expression to evaluate. - Expression variables map. - Value of the last node in the expression. - - - - Parses and specified expression and sets the value of the - last node to the value of the newValue parameter. - - Root object. - Expression to evaluate. - Value to set last node to. - - - - Parses and specified expression and sets the value of the - last node to the value of the newValue parameter. - - Root object. - Expression to evaluate. - Expression variables map. - Value to set last node to. - - - - Represents parsed expression list node in the navigation expression. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns a result of the last expression in a list. - - Context to evaluate expressions against. - Current expression evaluation context. - Result of the last expression in a list - - - - Represents parsed function node. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Evaluates function represented by this node. - - Context to evaluate expressions against. - Current expression evaluation context. - Result of the function evaluation. - - - - Represents parsed hexadecimal integer literal node. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns a value for the hexadecimal integer literal node. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Represents parsed indexer node in the navigation expression. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns node's value for the given context. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Sets node's value for the given context. - - Context to evaluate expressions against. - Current expression evaluation context. - New value for this node. - - - - Utility method that is needed by ObjectWrapper and AbstractAutowireCapableObjectFactory. - - Context to resolve property against. - Expression variables map. - PropertyInfo for this node. - - - - Represents parsed integer literal node. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns a value for the integer literal node. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Represents lambda expression. - - Aleksandar Seovic - - - - caches argumentNames of this instance - - - - - caches body expression of this lambda function - - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Assigns value of the right operand to the left one. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Returns Lambda Expression's value for the given context. - - Context to evaluate expressions against. - Current expression evaluation context. - A dictionary containing argument map for this lambda expression. - Node's value. - - - - Gets argument names for this lambda expression. - - - - - Represents parsed list initializer node in the navigation expression. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Creates new instance of the list defined by this node. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Represents local function node. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Evaluates function represented by this node. - - Context to evaluate expressions against. - Current expression evaluation context. - Result of the function evaluation. - - - - Represents parsed variable node. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns value of the local variable represented by this node. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Sets value of the local variable represented by this node. - - Context to evaluate expressions against. - Current expression evaluation context. - New value for this node. - - - - Represents parsed map entry node. - - Aleksandar Seovic - - - - Creates a new instance of . - - - - - Create a new instance from SerializationInfo - - - - - Creates new instance of the map entry defined by this node. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Represents parsed map initializer node in the navigation expression. - - Aleksandar Seovic - - - - Creates a new instance of . - - - - - Create a new instance from SerializationInfo - - - - - Creates new instance of the map defined by this node. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Represents parsed method node in the navigation expression. - - Aleksandar Seovic - - - - Static constructor. Initializes a map of special collection processor methods. - - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns node's value for the given context. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Gets the best method given the name, argument values, for a given type. - - The type on which to search for the method. - Name of the method. - The binding flags. - The arg values. - Best matching method or null if none found. - - - - Represents parsed named argument node in the expression. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns the value of the named argument defined by this node. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Represents parsed null literal node. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns a value for the null literal node. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Represents arithmetic addition operator. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns a value for the arithmetic addition operator node. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Represents logical AND operator. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns a value for the logical AND operator node. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Represents logical BETWEEN operator. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns a value for the logical IN operator node. - - Context to evaluate expressions against. - Current expression evaluation context. - - true if the left operand is contained within the right operand, false otherwise. - - - - - Represents arithmetic division operator. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns a value for the arithmetic division operator node. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Represents logical equality operator. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns a value for the logical equality operator node. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Represents logical "greater than" operator. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns a value for the logical "greater than" operator node. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Represents logical "greater than or equal" operator. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns a value for the logical "greater than or equal" operator node. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Represents logical IN operator. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns a value for the logical IN operator node. - - Context to evaluate expressions against. - Current expression evaluation context. - - true if the left operand is contained within the right operand, false otherwise. - - - - - Represents logical IS operator. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns a value for the logical IS operator node. - - Context to evaluate expressions against. - Current expression evaluation context. - - true if the left operand is contained within the right operand, false otherwise. - - - - - Represents logical "less than" operator. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns a value for the logical "less than" operator node. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Represents logical "less than or equal" operator. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns a value for the logical "less than or equal" operator node. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Represents VB-style logical LIKE operator. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns a value for the logical LIKE operator node. - - Context to evaluate expressions against. - Current expression evaluation context. - - true if the left operand matches the right operand, false otherwise. - - - - - Represents logical MATCHES operator. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns a value for the logical MATCHES operator node. - - Context to evaluate expressions against. - Current expression evaluation context. - - true if the left operand matches the right operand, false otherwise. - - - - - Represents arithmetic modulus operator. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns a value for the arithmetic modulus operator node. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Represents arithmetic multiplication operator. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns a value for the arithmetic multiplication operator node. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Represents logical NOT operator. - - Aleksandar Seovic - - - - Base class for unary operators. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Gets the operand. - - The operand. - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns a value for the logical NOT operator node. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Represents logical inequality operator. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns a value for the logical inequality operator node. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Represents logical OR operator. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns a value for the logical OR operator node. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Represents arithmetic exponent operator. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns a value for the arithmetic exponent operator node. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Represents arithmetic subtraction operator. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns a value for the arithmetic subtraction operator node. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Represents unary minus operator. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns a value for the unary plus operator node. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Represents unary plus operator. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns a value for the unary plus operator node. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Represents parsed projection node in the navigation expression. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns a containing results of evaluation - of projection expression against each node in the context. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Represents node that navigates to object's property or public field. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Initializes the node. - - The parent. - - - - Attempts to resolve property or field. - - - Type to search for a property or a field. - - - Property or field name. - - - Binding flags to use. - - - Resolved property or field accessor, or null - if specified cannot be resolved. - - - - - Returns node's value for the given context. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Sets node's value for the given context. - - Context to evaluate expressions against. - Current expression evaluation context. - New value for this node. - - - - Retrieves property or field value. - - Context to evaluate expressions against. - Current expression evaluation context. - Property or field value. - - - - Sets property value, doing any type conversions that are necessary along the way. - - Context to evaluate expressions against. - Current expression evaluation context. - New value for this node. - - - - Sets property or field value using either dynamic or standard reflection. - - Object to evaluate node against. - New value for this node, converted to appropriate type. - - - - In the case of read only collections or custom collections that are not assignable from - IList, try to add to the collection. - - Context to evaluate expressions against. - Current expression evaluation context. - New value for this node. - true if was able add to IList, IDictionary, or ISet - - - - Utility method that is needed by ObjectWrapper and AbstractAutowireCapableObjectFactory. - We try as hard as we can, but there are instances when we won't be able to obtain PropertyInfo... - - Context to resolve property against. - PropertyInfo for this node. - - - - Gets a value indicating whether this node represents a property. - - - true if this node is a property; otherwise, false. - - - - - Gets a value indicating whether this node represents a field. - - - true if this node is a field; otherwise, false. - - - - - Represents parsed named argument node in the expression. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns the value of the named argument defined by this node. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Overrides getText to allow easy way to get fully - qualified identifier. - - - Fully qualified identifier as a string. - - - - - Represents parsed real literal node. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns a value for the real literal node. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Represents a reference to a Spring-managed object. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns a value for the integer literal node. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Represents parsed selection node in the navigation expression. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns the first context item that matches selection expression. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Represents parsed selection node in the navigation expression. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns the last context item that matches selection expression. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Represents parsed selection node in the navigation expression. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns a containing results of evaluation - of selection expression against each node in the context. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Represents parsed string literal node. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns a value for the string literal node. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Exception thrown when detecting invalid SpEL syntax - - Erich Eichinger - - - - TODO - - - - - TODO - - - - - - - - - - - - - - - - - - - - Gets a message that provides details on the syntax error. - - - - - The expression that caused the error - - - - - Represents ternary expression node. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns a value for the string literal node. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Represents parsed type node in the navigation expression. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns node's value for the given context. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Represents parsed variable node. - - Aleksandar Seovic - - - - Create a new instance - - - - - Create a new instance from SerializationInfo - - - - - Returns value of the variable represented by this node. - - Context to evaluate expressions against. - Current expression evaluation context. - Node's value. - - - - Sets value of the variable represented by this node. - - Context to evaluate expressions against. - Current expression evaluation context. - New value for this node. - - - - Implementation of that can be used to - format and parse boolean values. - - Erich Eichinger - - - - Interface that should be implemented by all formatters. - - - - Formatters assume that source value is a string, and make no assumptions - about the target value's type, which means that Parse method can return - object of any type. - - - Aleksandar Seovic - - - - Formats the specified value. - - The value to format. - Formatted . - - - - Parses the specified value. - - The value to parse. - Parsed . - - - - Initializes a new instance of the class - using default values - - - - - Initializes a new instance of the class - - - - - Formats the specified boolean value. - - The value to format. - Formatted boolean value. - If is null. - If is not of type . - - - - Parses the specified boolean value according to settings of and - - The boolean value to parse. - Parsed boolean value as a . - If does not match or . - - - - Set/Get value to control casesensitivity of - - - Defaults to true - - - - - Set/Get value to recognize as boolean "true" value - - - Defaults to - - - - - Set/Get value to recognize as boolean "false" value - - - Defaults to - - - - - Implementation of that can be used to - format and parse currency values. - - - - CurrencyFormatter uses currency related properties of the - to format and parse currency values. - - - If you use one of the constructors that accept culture as a parameter - to create an instance of CurrencyFormatter, default NumberFormatInfo - for the specified culture will be used. - - - You can also use properties exposed by the CurrencyFormatter in order - to override some of the default currency formatting parameters. - - - Aleksandar Seovic - - - - Initializes a new instance of the class - using default for the current thread's culture. - - - - - Initializes a new instance of the class - using default for the specified culture. - - The culture name. - - - - Initializes a new instance of the class - using default for the specified culture. - - The culture. - - - - Initializes a new instance of the class - using specified . - - - The instance that defines how - currency values are formatted. - - - - - Formats the specified currency value. - - The value to format. - Formatted currency . - If is null. - If is not a number. - - - - Parses the specified currency value. - - The currency value to parse. - Parsed currency value as a . - - - - Gets or sets the currency decimal digits. - - The currency decimal digits. - - - - - Gets or sets the currency decimal separator. - - The currency decimal separator. - - - - - Gets or sets the currency group sizes. - - The currency group sizes. - - - - - Gets or sets the currency group separator. - - The currency group separator. - - - - - Gets or sets the currency symbol. - - The currency symbol. - - - - - Gets or sets the currency negative pattern. - - The currency negative pattern. - - - - - Gets or sets the currency positive pattern. - - The currency positive pattern. - - - - - Implementation of that can be used to - format and parse values. - - - - DateTimeFormatter uses properties of the - to format and parse values. - - - If you use one of the constructors that accept culture as a parameter - to create an instance of DateTimeFormatter, default DateTimeFormatInfo - for the specified culture will be used. - - - You can also use properties exposed by the DateTimeFormatter in order - to override some of the default formatting parameters. - - - Aleksandar Seovic - - - - Initializes a new instance of the class - using default for the current thread's culture. - - Date/time format string. - - - - Initializes a new instance of the class - using default for the specified culture. - - Date/time format string. - The culture name. - - - - Initializes a new instance of the class - using default for the specified culture. - - Date/time format string. - The culture. - - - - Formats the specified value. - - The value to format. - Formatted value. - If is null. - If is not an instance of . - - - - Parses the specified value. - - The string to parse. - Parsed value. - - - - Provides base functionality for filtering values before they actually get parsed/formatted. - - Erich Eichinger - - - - Creates a new instance of this FilteringFormatter. - - an optional underlying formatter - - If no underlying formatter is specified, the values - get passed through "as-is" after being filtered - - - - - Parses the specified value. - - The value to parse. - Parsed . - - - - Formats the specified value. - - The value to format. - Formatted . - - - - Allows to rewrite a value before it gets parsed by the underlying formatter - - - - - Allows to change a value before it gets formatted by the underlying formatter - - - - - Implementation of that can be used to - format and parse floating point numbers. - - - - This formatter allows you to format and parse numbers that conform - to number style (leading and trailing - white space, leading sign, decimal point, exponent). - - - Aleksandar Seovic - - - - Default format string. - - - - - Initializes a new instance of the class, - using default format string of '{0:F}' and current thread's culture. - - - - - Initializes a new instance of the class, - using specified format string and current thread's culture. - - The format string. - - - - Initializes a new instance of the class, - using default format string of '{0:F}' and specified culture. - - The culture. - - - - Initializes a new instance of the class, - using specified format string and current thread's culture. - - The format string. - The culture name. - - - - Initializes a new instance of the class, - using specified format string and culture. - - The format string. - The culture. - - - - Formats the specified float value. - - The value to format. - Formatted floating point number. - If is null. - If is not a number. - - - - Parses the specified float value. - - The float value to parse. - Parsed float value as a . - - - - Replaces input strings with a given default value, - if they are null or contain whitespaces only, - - Erich Eichinger - - - - Creates a new instance of this HasTextFilteringFormatter using null as default value. - - an optional underlying formatter - - If no underlying formatter is specified, the values - get passed through "as-is" after being filtered - - - - - Creates a new instance of this HasTextFilteringFormatter. - - the default value to be returned, if input text doesn't contain text - an optional underlying formatter - - If no underlying formatter is specified, the values - get passed through "as-is" after being filtered - - - - - If value contains no text, it will be replaced by a defaultValue. - - - - - Implementation of that can be used to - format and parse integer numbers. - - - - This formatter allows you to format and parse numbers that conform - to number style (leading and trailing - white space, leading sign). - - - Aleksandar Seovic - - - - Initializes a new instance of the class, - using default format string of '{0:D}'. - - - - - Initializes a new instance of the class, - using specified format string. - - - - - Formats the specified integer value. - - The value to format. - Formatted integer number. - If is null. - If is not an integer number. - - - - Parses the specified integer value. - - The integer value to parse. - Parsed number value as a . - - - - Implementation of that simply calls . - - - This formatter is a no-operation implementation. - - Erich Eichinger - - - - Initializes a new instance of the class. - - - - - Converts the passed value to a string by calling . - - The value to convert. - to string converted value. - - - - Returns the passed string "as is". - - The value to return. - The value passed into this method. - - - - Implementation of that can be used to - format and parse numbers. - - - - NumberFormatter uses number-related properties of the - to format and parse numbers. - - - This formatter works with both integer and decimal numbers and allows - you to format and parse numbers that conform to - number style (leading and trailing white space and/or sign, thousands separator, - decimal point) - - - If you use one of the constructors that accept culture as a parameter - to create an instance of NumberFormatter, default NumberFormatInfo - for the specified culture will be used. - - - You can also use properties exposed by the NumberFormatter in order - to override some of the default number formatting parameters. - - - Aleksandar Seovic - - - - Initializes a new instance of the class - using default for the current thread's culture. - - - - - Initializes a new instance of the class - using default for the specified culture. - - The culture name. - - - - Initializes a new instance of the class - using default for the specified culture. - - The culture. - - - - Initializes a new instance of the class - using specified . - - - The instance that defines how - numbers are formatted and parsed. - - - - - Formats the specified number value. - - The value to format. - Formatted number . - If is null. - If is not a number. - - - - Parses the specified number value. - - The number value to parse. - Parsed number value as a . - - - - Gets or sets the number of decimal digits. - - The number of decimal digits. - - - - - Gets or sets the decimal separator. - - The decimal separator. - - - - - Gets or sets the number group sizes. - - The number group sizes. - - - - - Gets or sets the number group separator. - - The number group separator. - - - - - Gets or sets the negative pattern. - - The number negative pattern. - - - - - Implementation of that can be used to - format and parse numbers. - - - - PercentFormatter uses percent-related properties of the - to format and parse percentages. - - - If you use one of the constructors that accept culture as a parameter - to create an instance of PercentFormatter, default NumberFormatInfo - for the specified culture will be used. - - - You can also use properties exposed by the PercentFormatter in order - to override some of the default number formatting parameters. - - - Aleksandar Seovic - - - - Initializes a new instance of the class - using default for the current thread's culture. - - - - - Initializes a new instance of the class - using default for the specified culture. - - The culture name. - - - - Initializes a new instance of the class - using default for the specified culture. - - The culture. - - - - Initializes a new instance of the class - using specified . - - - The instance that defines how - numbers are formatted and parsed. - - - - - Formats the specified percentage value. - - The value to format. - Formatted percentage. - If is null. - If is not a number. - - - - Parses the specified percentage value. - - The percentage value to parse. - Parsed percentage value as a . - - - - Gets or sets the number of decimal digits. - - The number of decimal digits. - - - - - Gets or sets the decimal separator. - - The decimal separator. - - - - - Gets or sets the percent group sizes. - - The percent group sizes. - - - - - Gets or sets the percent group separator. - - The percent group separator. - - - - - Gets or sets the negative pattern. - - The percent negative pattern. - - - - - Gets or sets the positive pattern. - - The percent positive pattern. - - - - - Gets or sets the percent symbol. - - The percent symbol. - - - - - Gets or sets the per mille symbol. - - The per mille symbol. - - - - - Loads a list of resources that should be applied from the .NET . - - -

- This implementation will iterate over all resource managers - within the message source and return a list of all the resources whose name starts with '$this'. -

-

- All other resources will be ignored, but you can retrieve them by calling one of - GetMessage methods on the message source directly. -

-
- Aleksandar Seovic -
- - - Abstract base class that all localizers should extend - - -

- This class contains the bulk of the localizer logic, including implementation - of the ApplyResources methods that are defined in - interface. -

-

- All specific localizers need to do is inherit this class and implement - GetResources method that will return a list of - objects that should be applied to a specified target. -

-

- Custom implementations can use whatever type of resource storage they want, - such as standard .NET resource sets, custom XML files, database, etc. -

-
- Aleksandar Seovic -
- - - Defines an interface that localizers have to implement. - - -

- Localizers are used to automatically apply resources to object's members - using reflection. -

-
- Aleksandar Seovic -
- - - Applies resources of the specified culture to the specified target object. - - Target object to apply resources to. - instance to retrieve resources from. - Resource culture to use for resource lookup. - - - - Applies resources to the specified target object, using current thread's culture to resolve resources. - - Target object to apply resources to. - instance to retrieve resources from. - - - - Gets or sets the resource cache instance. - - The resource cache instance. - - - - Applies resources of the specified culture to the specified target object. - - Target object to apply resources to. - instance to retrieve resources from. - Resource culture to use for resource lookup. - - - - Applies resources to the specified target object, using current thread's uiCulture to resolve resources. - - Target object to apply resources to. - instance to retrieve resources from. - - - - Returns a list of instances that should be applied to the target. - - Target to get a list of resources for. - instance to retrieve resources from. - Resource locale. - A list of resources to apply. - - - - Loads resources from the storage and creates a list of instances that should be applied to the target. - - Target to get a list of resources for. - instance to retrieve resources from. - Resource locale. - A list of resources to apply. - - - - Gets or sets the resource cache instance. - - The resource cache instance. - - - - Loads resources from the storage and creates a list of instances that should be applied to the target. - - - This feature is not currently supported on version 1.0 of the .NET platform. - - Target to get a list of resources for. - instance to retrieve resources from. - Resource locale. - A list of resources to apply. - - - - implementation - that simply returns the - value of the - - property (if said property value is not ), or the - of the current thread if it is - . - - Aleksandar Seovic - - - - Strategy interface for - resolution. - - Aleksandar Seovic - - - - Resolves the - from some context. - - -

- The 'context' is determined by the appropriate implementation class. - An example of such a context might be a thread local bound - , or a - sourced from an HTTP - session. -

-
- - The that should be used - by the caller. - -
- - - Sets the . - - -

- This is an optional operation and does not need to be implemented - such that it actually does anything useful (i.e. it can be a no-op). -

-
- - The new or - to clear the current . - -
- - - Returns the default . - - -

- It tries to get the - from the value of the - - property and falls back to the of the - current thread if the - - is . -

-
- - The default - -
- - - Resolves the - from some context. - - -

- The 'context' in this implementation is the - value of the - - property (if said property value is not ), or the - of the current thread if it is - . -

-
- - The that should be used - by the caller. - -
- - - Sets the . - - - The new or - to clear the current . - - - - - - - The default . - - - The default . - - - - - Abstract base class that all resource cache implementations should extend. - - Aleksandar Seovic - - - - Defines an interface that resource cache adapters have to implement. - - Aleksandar Seovic - - - - Gets the list of resources from cache. - - Target to get a list of resources for. - Resource culture. - A list of cached resources for the specified target object and culture. - - - - Puts the list of resources in the cache. - - Target to cache a list of resources for. - Resource culture. - A list of resources to cache. - A list of cached resources for the specified target object and culture. - - - - Gets the list of resources from the cache. - - Target to get a list of resources for. - Resource culture. - A list of cached resources for the specified target object and culture. - - - - Puts the list of resources in the cache. - - Target to cache a list of resources for. - Resource culture. - A list of resources to cache. - A list of cached resources for the specified target object and culture. - - - - Crates resource cache key for the specified target object and culture. - - Target object to apply resources to. - Resource culture to use for resource lookup. - - - - Gets the list of resources from cache. - - Cache key to use for lookup. - A list of cached resources for the specified target object and culture. - - - - Puts the list of resources in the cache. - - Cache key to use for the specified resources. - A list of resources to cache. - A list of cached resources for the specified target object and culture. - - - - Resource cache implementation that doesn't cache resources. - - Aleksandar Seovic - - - - Gets the list of resources from cache. - - Cache key to use for lookup. - Always returns null. - - - - Puts the list of resources in the cache. - - Cache key to use for the specified resources. - A list of resources to cache. - - - - Holds mapping between control property and it's value - as read from the resource file. - - Aleksandar Seovic - - - - Creates instance of resource mapper. - - Target property. - Resource value. - - - - Gets parsed target property expression. See - for more information on object navigation expressions. - - - - - Value of the resource that target property should be set to. - - - - - Utility class to aid in the manipulation of events and delegates. - - Griffin Caprio - - - - Returns a new instance of the requested . - - -

- Often used to wire subscribers to event publishers. -

-
- - The of delegate to create. - - - The target subscriber object that contains the delegate implementation. - - - referencing the delegate method on the subscriber. - - - A delegate handler that can be added to an events list of handlers, or called directly. - -
- - - Queries the input type for a signature matching the input - signature. - - - Typically used to query a potential subscriber to see if they implement an event handler. - - to match against - to query - - matching input - signature, or if there is no match. - - - - - Creates a new instance of the EventManipulationUtilities class. - - -

- This is a utility class, and as such has no publicly visible constructors. -

-
-
- - - Default implementation of the - interface. - - Griffin Caprio - - - - Creates a new instance of the EventRegistry class. - - - - - Adds the input object to the list of publishers. - - - This publishes all events of the source object to any object - wishing to subscribe - - The source object to publish. - - - - Subscribes to all events published, if the subscriber implements - compatible handler methods. - - The subscriber to use. - - - - Subscribes to published events of all objects of a given type, if the - subscriber implements compatible handler methods. - - The subscriber to use. - - The target to subscribe to. - - - - - Unsubscribes to all events published, if the subscriber - implmenets compatible handler methods. - - The subscriber to use - - - - Unsubscribes to the published events of all objects of a given - , if the subscriber implements - compatible handler methods. - - The subscriber to use. - The target to unsubscribe from - - - - The list of event publishers. - - The list of event publishers. - - - - To be implemented by any object that wishes to receive a reference to - an . - - -

- This interface only applies to objects that have been instantiated - within the context of an - . This interface does - not typically need to be implemented by application code, but is rather - used by classes internal to Spring.NET. -

-
- Mark Pollack - Rick Evans -
- - - Set the - associated with the - that created this - object. - - -

- This property will be set by the relevant - after all of this - object's dependencies have been resolved. This object can use the - supplied - immediately to publish or subscribe to one or more events. -

-
-
- - - Marks a property as being 'required': that is, the setter property - must be configured to be dependency-injected with a value. - - Consult the SDK documentation for , - which, by default, checks for the presence of this annotation. - - Rob Harrop - Mark Pollack - - - - A implementation that enforces required properties to have been configured. - Required properties are detected through an attribute, by default, Spring's - attribute. - - - The motivation for the existence of this IObjectPostProcessor is to allow - developers to annotate the setter properties of their own classes with an - arbitrary attribute to indicate that the container must check - for the configuration of a dependency injected value. This neatly pushes - responsibility for such checking onto the container (where it arguably belongs), - and obviates the need (in part) for a developer to code a method that - simply checks that all required properties have actually been set. - - Please note that an 'init' method may still need to implemented (and may - still be desirable), because all that this class does is enforce that a - 'required' property has actually been configured with a value. It does - not check anything else... In particular, it does not check that a - configured value is not null. - - - Rob Harrop - Juergen Hoeller - Mark Pollack (.NET) - - - - Adapter that implements all methods on - as no-ops, which will not change normal processing of each object instantiated - by the container. Subclasses may override merely those methods that they are - actually interested in. - - - Note that this base class is only recommendable if you actually require - functionality. If all you need - is plain functionality, prefer a straight - implementation of that (simpler) interface. - - Rod Johnson - Juergen Hoeller - Mark Pollack (.NET) - - - - Extension of the interface, - adding a callback for predicting the eventual type of a processed object. - - This interface is a special purpose interface, mainly for - internal use within the framework. In general, application-provided - post-processors should simply implement the plain - interface or derive from the - class. New methods might be added to this interface even in point releases. - - - Juergen Hoeller - Mark Pollack (.NET) - - - - Subinterface of - - that adds a before-instantiation callback. - - -

- Typical use cases might include being used to suppress the default - instantiation of specific target objects, perhaps in favour of creating - proxies with special Spring.Aop.ITargetSources (pooling targets, - lazily initializing targets, etc). -

-
- Juergen Hoeller - Rick Evans (.NET) -
- - - Apply this - - before the target object gets instantiated. - - -

- The returned object may be a proxy to use instead of the target - object, effectively suppressing the default instantiation of the - target object. -

-

- If the object is returned by this method is not - , the object creation process will be - short-circuited. The returned object will not be processed any - further; in particular, no further - - callbacks will be applied to it. This mechanism is mainly intended - for exposing a proxy instead of an actual target object. -

-

- This callback will only be applied to object definitions with an - object class. In particular, it will not be applied to - objects with a "factory-method" (i.e. objects that are to be - instantiated via a layer of indirection anyway). -

-
- - The of the target object that is to be - instantiated. - - - The name of the target object. - - - The object to expose instead of a default instance of the target - object. - - - In the case of any errors. - - - -
- - - Perform operations after the object has been instantiated, via a constructor or factory method, - but before Spring property population (from explicit properties or autowiring) occurs. - - The object instance created, but whose properties have not yet been set - Name of the object. - true if properties should be set on the object; false if property population - should be skipped. Normal implementations should return true. Returning false will also - prevent any subsequent InstantiationAwareObjectPostProcessor instances from being - invoked on this object instance. - - - - Post-process the given property values before the factory applies them - to the given object. - - Allows for checking whether all dependencies have been - satisfied, for example based on a "Required" annotation on bean property setters. - Also allows for replacing the property values to apply, typically through - creating a new MutablePropertyValues instance based on the original PropertyValues, - adding or removing specific values. - - - The property values that the factory is about to apply (never null). - he relevant property infos for the target object (with ignored - dependency types - which the factory handles specifically - already filtered out) - The object instance created, but whose properties have not yet - been set. - Name of the object. - The actual property values to apply to the given object (can be the - passed-in PropertyValues instances0 or null to skip property population. - - - - Predicts the type of the object to be eventually returned from this - processors callback. - - The raw Type of the object. - Name of the object. - The type of the object, or null if not predictable. - in case of errors - - - - Determines the candidate constructors to use for the given object. - - The raw Type of the object. - Name of the object. - The candidate constructors, or null if none specified - in case of errors - - - - Predicts the type of the object to be eventually returned from this - processors PostProcessBeforeInstantiation callback. - - The raw Type of the object. - Name of the object. - The type of the object, or null if not predictable. - in case of errors - - - - Determines the candidate constructors to use for the given object. - - The raw Type of the object. - Name of the object. - The candidate constructors, or null if none specified - in case of errors - - - - Apply this - - before the target object gets instantiated. - - -

- The returned object may be a proxy to use instead of the target - object, effectively suppressing the default instantiation of the - target object. -

-

- If the object is returned by this method is not - , the object creation process will be - short-circuited. The returned object will not be processed any - further; in particular, no further - - callbacks will be applied to it. This mechanism is mainly intended - for exposing a proxy instead of an actual target object. -

-

- This callback will only be applied to object definitions with an - object class. In particular, it will not be applied to - objects with a "factory-method" (i.e. objects that are to be - instantiated via a layer of indirection anyway). -

-
- - The of the target object that is to be - instantiated. - - - The name of the target object. - - - The object to expose instead of a default instance of the target - object. - - - In the case of any errors. - - - -
- - - Perform operations after the object has been instantiated, via a constructor or factory method, - but before Spring property population (from explicit properties or autowiring) occurs. - - The object instance created, but whose properties have not yet been set - Name of the object. - true if properties should be set on the object; false if property population - should be skipped. Normal implementations should return true. Returning false will also - prevent any subsequent InstantiationAwareObjectPostProcessor instances from being - invoked on this object instance. - - - - Post-process the given property values before the factory applies them - to the given object. - - Allows for checking whether all dependencies have been - satisfied, for example based on a "Required" annotation on bean property setters. - Also allows for replacing the property values to apply, typically through - creating a new MutablePropertyValues instance based on the original PropertyValues, - adding or removing specific values. - - - The property values that the factory is about to apply (never null). - he relevant property infos for the target object (with ignored - dependency types - which the factory handles specifically - already filtered out) - The object instance created, but whose properties have not yet - been set. - Name of the object. - The actual property values to apply to the given object (can be the - passed-in PropertyValues instances0 or null to skip property population. - - - - Apply this - to the given new object instance before any object initialization callbacks. - - -

- The object will already be populated with property values. - The returned object instance may be a wrapper around the original. -

-
- - The new object instance. - - - The name of the object. - - - The object instance to use, either the original or a wrapped one. - - - In case of errors. - -
- - - Apply this to the - given new object instance after any object initialization callbacks. - - -

- The object will already be populated with property values. The returned object - instance may be a wrapper around the original. -

-
- - The new object instance. - - - The name of the object. - - - The object instance to use, either the original or a wrapped one. - - - In case of errors. - -
- - - Cache for validated object names, skipping re-validation for the same object - - - - - Post-process the given property values before the factory applies them - to the given object. Checks for the attribute specified by this PostProcessor's RequiredAttributeType. - - The property values that the factory is about to apply (never null). - The relevant property infos for the target object (with ignored - dependency types - which the factory handles specifically - already filtered out) - The object instance created, but whose properties have not yet - been set. - Name of the object. - - The actual property values to apply to the given object (can be the - passed-in PropertyValues instances or null to skip property population. - - If a required property value has not been specified - in the configuration metadata. - - - - Determines whether the supplied property is required to have a value, that is to be dependency injected. - - - This implementation looks for the existence of a "required" attribute on the supplied PropertyInfo and that - the property has a setter method. - - The target PropertyInfo - - true if the supplied property has been marked as being required;; otherwise, false if - not or if the supplied property does not have a setter method - - - - - Builds an exception message for the given list of invalid properties. - - The list of names of invalid properties. - Name of the object. - The exception message - - - - Sets the type of the required attribute, to be used on a property setter - - - The default required attribute type is the Spring-provided attribute. - This setter property exists so that developers can provide their own - (non-Spring-specific) annotation type to indicate that a property value is required. - - The type of the required attribute. - - - - Base class that provides common functionality needed for several IObjectFactoryPostProcessor - implementations - - Mark Pollack - - - - Allows for custom modification of an application context's object - definitions, adapting the object property values of the context's - underlying object factory. - - -

- Application contexts can auto-detect - IObjectFactoryPostProcessor objects in their object definitions and - apply them before any other objects get created. -

-

- Useful for custom config files targeted at system administrators that - override object properties configured in the application context. -

-

- See PropertyResourceConfigurer and its concrete implementations for - out-of-the-box solutions that address such configuration needs. -

-
- Juergen Hoeller - Rick Evans (.Net) -
- - - Modify the application context's internal object factory after its - standard initialization. - - -

- All object definitions will have been loaded, but no objects will have - been instantiated yet. This allows for overriding or adding properties - even to eager-initializing objects. -

-
- - The object factory used by the application context. - - - In case of errors. - -
- - - Modify the application context's internal object factory after its - standard initialization. - - The object factory used by the application context. - -

- All object definitions will have been loaded, but no objects will have - been instantiated yet. This allows for overriding or adding properties - even to eager-initializing objects. -

-
- - In case of errors. - -
- - - Resolves the supplied into a - instance. - - The object that is to be resolved into a - instance. - The error context source. - The error context string. - A resolved . - -

- This (default) implementation supports resolving - s and s. - Only override this method if you want to key your type alias - on something other than s - and s. -

-
- - If the supplied is , - or the supplied cannot be resolved. - -
- - - Return the order value of this object, with a higher value meaning - greater in terms of sorting. - - The order value. - - - - - Simple template superclass for - implementations that allows for the creation of a singleton or a prototype - instance (depending on a flag). - - - If the value of the - - property is (this is the default), this class - will create a single instance of it's object upon initialization and - subsequently return the singleton instance; else, this class will - create a new instance each time (prototype mode). Subclasses must - implement the - - template method to actually create objects. - - Juergen Hoeller - Keith Donald - Simon White (.NET) - - - - Interface to be implemented by objects used within an - that are themselves - factories. - - -

- If an object implements this interface, it is used as a factory, - not directly as an object. s - can support singletons and prototypes - ()... - please note that an - itself can only ever be a singleton. It is a logic error to configure an - itself to be a prototype. -

- - An object that implements this interface cannot be used as a normal object. - -
- Rod Johnson - Juergen Hoeller - Rick Evans (.NET) -
- - - Return an instance (possibly shared or independent) of the object - managed by this factory. - - - - If this method is being called in the context of an enclosing IoC container and - returns , the IoC container will consider this factory - object as not being fully initialized and throw a corresponding (and most - probably fatal) exception. - - - - An instance (possibly shared or independent) of the object managed by - this factory. - - - - - Return the of object that this - creates, or - if not known in advance. - - - - - Is the object managed by this factory a singleton or a prototype? - - - - - Invoked by an - after it has injected all of an object's dependencies. - - - In the event of misconfiguration (such as the failure to set a - required property) or if initialization fails. - - - - - - Return an instance (possibly shared or independent) of the object - managed by this factory. - - - An instance (possibly shared or independent) of the object managed by - this factory. - - - - - - Template method that subclasses must override to construct - the object returned by this factory. - - - Invoked once immediately after the initialization of this - in the case of - a singleton; else, on each call to the - - method. - - - If an exception occured during object creation. - - - A distinct instance of the object created by this factory. - - - - - Performs cleanup on any cached singleton object. - - -

- Only makes sense in the context of a singleton object. -

-
- - -
- - - Is the object managed by this factory a singleton or a prototype? - - -

- Please note that changing the value of this property after - this factory object instance has been created by an enclosing - Spring.NET IoC container really is a programming error. This - property should really only be set once, prior to the invocation - of the - - callback method. -

-
- -
- - - Return the of object that this - creates, or - if not known in advance. - - - - - - The various autowiring modes. - - Rick Evans - - - - Do not autowire. - - - - - Autowire by name. - - - - - Autowire by . - - - - - Autowiring by constructor. - - - - - The autowiring strategy is to be determined by introspection - of the object's . - - - - - Implementation of that - resolves variable name against command line arguments. - - Aleksandar Seovic - - - - Defines contract that different variable sources have to implement. - - -

- The "variable sources" are objects containing name-value pairs - that allow a variable value to be retrieved for the given name.

-

- Out of the box, Spring.NET supports a number of variable sources, - that allow users to obtain variable values from .NET config files, - Java-style property files, environment, registry, etc.

-

- Users can always write their own variable sources implementations, - that will allow them to load variable values from the database or - other proprietary data source.

-
- - - - - - - Aleksandar Seovic -
- - - Resolves variable value for the specified variable name. - - - The name of the variable to resolve. - - - The variable value if able to resolve, null otherwise. - - - - - Default constructor. - Initializes command line arguments from the environment. - - - - - Constructor that allows arguments to be passed externally. - Useful for testing. - - - - - Resolves variable value for the specified variable name. - - - The name of the variable to resolve. - - - The variable value if able to resolve, null otherwise. - - - - - Initializes command line arguments dictionary. - - - - - Gets or sets a prefix that should be used to - identify arguments to extract values from. - - - A prefix that should be used to identify arguments - to extract values from. Defaults to slash ("/"). - - - - - Gets or sets a character that should be used to - separate argument name from its value. - - - A character that should be used to separate argument - name from its value. Defaults to colon (":"). - - - - - Implementation of that - resolves variable name against name-value sections in - the standard .NET configuration file. - - Aleksandar Seovic - - - - Initializes a new instance of - - - - - Initializes a new instance of from the given - - - - - Initializes a new instance of from the given - - - - - Resolves variable value for the specified variable name. - - - The name of the variable to resolve. - - - The variable value if able to resolve, null otherwise. - - - - - Initializes properties based on the specified - property file locations. - - - - - Gets or sets a list of section names variables should be loaded from. - - - All sections specified need to be handled by the - in order to be processed successfully. - - - A list of section names variables should be loaded from. - - - - - Convinience property. Gets or sets a single section - to read properties from. - - - The section specified needs to be handled by the - in order to be processed successfully. - - - A section to read properties from. - - - - - Various utility methods for .NET style .config files. - - -

- Currently supports reading custom configuration sections and returning them as - objects. -

-
- Simon White - Mark Pollack -
- - - Reads the specified configuration section into a - . - - The resource to read. - The section name. - - A newly populated - . - - - If any errors are encountered while attempting to open a stream - from the supplied . - - - If any errors are encountered while loading or reading (this only applies to - v1.1 and greater of the .NET Framework) the actual XML. - - - If any errors are encountered while loading or reading (this only applies to - v1.0 of the .NET Framework). - - - If the configuration section was otherwise invalid. - - - - - Reads the specified configuration section into the supplied - . - - The resource to read. - The section name. - - The collection that is to be populated. May be - . - - - A newly populated - . - - - If any errors are encountered while attempting to open a stream - from the supplied . - - - If any errors are encountered while loading or reading (this only applies to - v1.1 and greater of the .NET Framework) the actual XML. - - - If any errors are encountered while loading or reading (this only applies to - v1.0 of the .NET Framework). - - - If the configuration section was otherwise invalid. - - - - - Reads the specified configuration section into the supplied - . - - The resource to read. - The section name. - - The collection that is to be populated. May be - . - - - If a key already exists, is its value to be appended to the current - value or replaced? - - - The populated - . - - - If any errors are encountered while attempting to open a stream - from the supplied . - - - If any errors are encountered while loading or reading (this only applies to - v1.1 and greater of the .NET Framework) the actual XML. - - - If any errors are encountered while loading or reading (this only applies to - v1.0 of the .NET Framework). - - - If the configuration section was otherwise invalid. - - - - - Read from the specified configuration from the supplied XML - into a - . - - - - Does not support section grouping. The supplied XML - must already be loaded. - - - - The to read from. - - - The configuration section name to read. - - - A newly populated - . - - - If any errors are encountered while reading (this only applies to - v1.1 and greater of the .NET Framework). - - - If any errors are encountered while reading (this only applies to - v1.0 of the .NET Framework). - - - If the configuration section was otherwise invalid. - - - - - Populates the supplied with values from - a .NET application configuration file. - - - The - to add any key-value pairs to. - - - The configuration section name in the a .NET application configuration - file. - - - If a key already exists, is its value to be appended to the current - value or replaced? - - - if the supplied - was found. - - - - - Creates a new instance of the ConfigurationReader class. - - -

- This is a utility class, and as such has no publicly visible - constructors. -

-
-
- - - Implementation of that - resolves variable name connection strings defined in - the standard .NET configuration file. - - -

- When the <connectionStrings> configuration section is processed by this class, - two variables are defined for each connection string: one for connection string and - the second one for the provider name.

-

- Variable names are generated by appending '.connectionString' and '.providerName' - literals to the value of the name attribute of the connection string element. - For example:

-
-            
-               
-            
-            
-

- will result in two variables being created: myConn.connectionString and myConn.providerName. - You can reference these variables within your object definitions, just like any other variable.

-
- Aleksandar Seovic -
- - - Resolves variable value for the specified variable name. - - - The name of the variable to resolve. - - - The variable value if able to resolve, null otherwise. - - - - - Initializes properties based on the specified - property file locations. - - - - - Holder for constructor argument values for an object. - - -

- Supports values for a specific index or parameter name (case - insensitive) in the constructor argument list, and generic matches by - . -

-
- Juergen Hoeller - Rick Evans (.NET) - -
- - - Can be used as an argument filler for the - - overload when one is not looking for an argument by index. - - - - - Creates a new instance of the - - class. - - - - - Creates a new instance of the - - class. - - - The - to be used to populate this instance. - - - - - Copy all given argument values into this object. - - - The - to be used to populate this instance. - - - - - Add argument value for the given index in the constructor argument list. - - - The index in the constructor argument list. - - - The argument value. - - - - - Add argument value for the given index in the constructor argument list. - - The index in the constructor argument list. - The argument value. - - The of the argument - . - - - - - Add argument value for the given name in the constructor argument list. - - The name in the constructor argument list. - The argument value. - - If the supplied is - or is composed wholly of whitespace. - - - - - Get argument value for the given index in the constructor argument list. - - The index in the constructor argument list. - - The required of the argument. - - - The - - for the argument, or if none set. - - - - - Get argument value for the given name in the constructor argument list. - - The name in the constructor argument list. - - The - - for the argument, or if none set. - - - - - Does this set of constructor arguments contain a named argument matching the - supplied name? - - - - The comparison is performed in a case-insensitive fashion. - - - The named argument to look up. - - if this set of constructor arguments - contains a named argument matching the supplied - name. - - - - - Add generic argument value to be matched by type. - - - The argument value. - - - - - Add generic argument value to be matched by type. - - The argument value. - - The of the argument - . - - - - - Look for a generic argument value that matches the given - . - - - The to match. - - - The - - for the argument, or if none set. - - - - - Look for a generic argument value that matches the given - . - - - The to match. - - - A of - - objects that have already been used in the current resolution - process and should therefore not be returned again; this allows one - to return the next generic argument match in the case of multiple - generic argument values of the same type. - - - The - - for the argument, or if none set. - - - - - Look for an argument value that either corresponds to the given index - in the constructor argument list or generically matches by - . - - - The index in the constructor argument list. - - - The to match. - - - The - - for the argument, or if none is set. - - - - - Look for an argument value that either corresponds to the given index - in the constructor argument list or generically matches by - . - - - The index in the constructor argument list. - - - The to match. - - - A of - - objects that have already been used in the current resolution - process and should therefore not be returned again; this allows one - to return the next generic argument match in the case of multiple - generic argument values of the same type. - - - The - - for the argument, or if none is set. - - - - - Look for an argument value that either corresponds to the given index - in the constructor argument list or generically matches by - . - - - The name of the argument in the constructor argument list. May be - , in which case generic matching by - is assumed. - - - The to match. - - - The - - for the argument, or if none is set. - - - - - Look for an argument value that either corresponds to the given index - in the constructor argument list or generically matches by - . - - - The name of the argument in the constructor argument list. May be - , in which case generic matching by - is assumed. - - - The to match. - - - A of - - objects that have already been used in the current resolution - process and should therefore not be returned again; this allows one - to return the next generic argument match in the case of multiple - generic argument values of the same type. - - - The - - for the argument, or if none is set. - - - - - Look for an argument value that either corresponds to the given index - in the constructor argument list, or to the named argument, or - generically matches by . - - - The index of the argument in the constructor argument list. May be - negative, to denote the fact that we are not looking for an - argument by index (see - . - - - The name of the argument in the constructor argument list. May be - . - - - The to match. - - - A of - - objects that have already been used in the current resolution - process and should therefore not be returned again; this allows one - to return the next generic argument match in the case of multiple - generic argument values of the same type. - - - The - - for the argument, or if none is set. - - - - - Return the map of indexed argument values. - - - An with - indices as keys and - s - as values. - - - - - Return the map of named argument values. - - - An with - named arguments as keys and - s - as values. - - - - - Return the set of generic argument values. - - - A of - s. - - - - - Return the number of arguments held in this instance. - - - - - Returns true if this holder does not contain any argument values, - neither indexed ones nor generic ones. - - - - - Holder for a constructor argument value, with an optional - attribute indicating the target - of the actual constructor argument. - - - - - Creates a new instance of the ValueHolder class. - - - The value of the constructor argument. - - - - - Creates a new instance of the ValueHolder class. - - - The value of the constructor argument. - - - The of the argument - . Can also be one of the common - aliases (int, bool, - float, etc). - - - - - A that represents the current - . - - - A that represents the current - . - - - - - Gets and sets the value for the constructor argument. - - -

- Only necessary for manipulating a registered value, for example in - s. -

-
-
- - - Return the of the constructor - argument. - - - - - - implementation that allows for convenient registration of custom - s. - - - - The use of this class is typically not required; the .NET - mechanism of associating a - with a - via the use of the - is the - recommended (and standard) way. This class primarily exists to cover - those cases where third party classes to which one does not have the - source need to be exposed to the type conversion mechanism. - -

- Because the - - class implements the - - interface, instances of this class that have been exposed in the - scope of an - will - automatically be picked up by the application context and made - available to the IoC container whenever type conversion is required. If - one is using a - - object definition within the scope of an - , no such automatic - pickup of the - - is performed (custom converters will have to be added manually using the - - method). For most application scenarios, one will get better - mileage using the - abstraction. -

-
- -

- The following examples all assume XML based configuration, and use - inner object definitions to define the custom - objects (nominally to - avoid polluting the object name space, but also because the - configuration simply reads better that way). -

- - - - - - - - - - - - - - - - -

- The following example illustrates a complete (albeit naieve) use case - for this class, including a custom - implementation, said - converters domain class, and the XML configuration that hooks the - converter in place and makes it available to a Spring.NET container for - use during object resolution. -

-

- The domain class is a simple data-only object that contains the data - required to send an email message (such as the host and user account - name). A developer would prefer to use a string of the form - UserName=administrator,Password=r1l0k1l3y,Host=localhost to - configure the mail settings and just let the container take care of the - conversion. -

- - namespace ExampleNamespace - { - public sealed class MailSettings - { - private string _userName; - private string _password; - private string _host; - - public string Host - { - get { return _host; } - set { _host = value; } - } - - public string UserName - { - get { return _userName; } - set { _userName = value; } - } - - public string Password - { - get { return _password; } - set { _password = value; } - } - } - - public sealed class MailSettingsConverter : TypeConverter - { - public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) - { - if (typeof (string) == sourceType) - { - return true; - } - return base.CanConvertFrom(context, sourceType); - } - - public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) - { - string text = value as string; - if(text != null) - { - MailSettings mailSettings = new MailSettings(); - string[] tokens = text.Split(','); - for (int i = 0; i < tokens.Length; ++i) - { - string token = tokens[i]; - string[] settings = token.Split('='); - typeof(MailSettings).GetProperty(settings[0]) - .SetValue(mailSettings, settings[1], null); - } - return mailSettings; - } - return base.ConvertFrom(context, culture, value); - } - } - - // a very naieve class that uses the MailSettings class... - public sealed class ExceptionLogger - { - private MailSettings _mailSettings; - - public MailSettings MailSettings { - { - set { _mailSettings = value; } - } - - public void Log(object value) - { - Exception ex = value as Exception; - if(ex != null) - { - // use _mailSettings instance... - } - } - } - } - -

- The attendant XML configuration for the above classes would be... -

- - - - - - - - - - - - - - - - Juergen Hoeller - Simon White (.NET) - - - - - - - Registers any custom converters with the supplied - . - - - The object factory to register the converters with. - - - In case of errors. - - - - - Resolves the supplied into a - instance. - - - The object that is to be resolved into a - instance. - - - A resolved instance. - - - If the supplied is , - or the supplied cannot be resolved. - - - - - The custom converters to register. - - -

- The uses the type name - of the class that requires conversion as the key, and an - instance of the - that will effect - the conversion. Alternatively, the actual - of the class that requires conversion - can be used as the key. -

-
- -

- - IDictionary converters = new Hashtable(); - converters.Add( "System.Date", new MyCustomDateConverter() ); - // a System.Type instance can also be used as the key... - converters.Add( typeof(Color), new MyCustomRBGColorConverter() ); - -

-
-
- - - implementation that - creates delegates. - - -

- Supports the creation of s for both - instance and methods. -

-
- Rick Evans -
- - - Callback method called once all factory properties have been set. - - - In the event of misconfiguration (such as failure to set an essential - property) or if initialization fails. - - - - - - Creates the delegate. - - - If an exception occured during object creation. - - The object returned by this factory. - - - - - The of - created by this factory. - - -

- Returns the - if accessed prior to the method - being called. -

-
-
- - - The of the - created by this factory. - - - - - The name of the method that is to be invoked by the created - delegate. - - - - - The target if the - refers to a method. - - - - - The target object if the - refers to an instance method. - - - - - Descriptor for a specific dependency that is about to be injected. - Wraps a constructor parameter, a method parameter or a field, - allowing unified access to their metadata. - - Juergen Hoeller - Mark Pollack - - - - Initializes a new instance of the class for a method or constructor parameter. - Considers the dependency as 'eager' - - The MethodParameter to wrap. - if set to true if the dependency is required. - - - - Initializes a new instance of the class for a method or a constructor parameter. - - The MethodParameter to wrap. - if set to true the dependency is required. - if set to true the dependency is 'eager' in the sense of - eagerly resolving potential target objects for type matching. - - - - Gets a value indicating whether this dependency is required. - - true if required; otherwise, false. - - - - Determine the declared (non-generic) type of the wrapped parameter/field. - - The type of the dependency (never null - - - - Gets a value indicating whether this is eager in the sense of - eagerly resolving potential target beans for type matching. - - true if eager; otherwise, false. - - - - Gets the wrapped MethodParameter, if any. - - The method parameter. - - - - Simple factory for shared instances. - - Juergen Hoeller - Simon White (.NET) - - - - Constructs a new instance of the target dictionary. - - The new instance. - - - - Set the source . - - -

- This value will be used to populate the - returned by this factory. -

-
-
- - - Set the of the - implementation to use. - - -

- The default is the . -

-
- - If the value is . - - - If the value is an . - - - If the value is an interface. - -
- - - The of objects created by this factory. - - - Always returns the . - - - - - Specifies how instances of the - - class must apply environment variables when replacing values. - - Mark Pollack - - - - Never replace environment variables. - - - - - If properties are not specified via a resource, - then resolve using environment variables. - - - - - Apply environment variables first before applying properties from a - resource. - - - - - Implementation of that - resolves variable name against environment variables. - - Aleksandar Seovic - - - - Resolves variable value for the specified variable name. - - - The name of the variable to resolve. - - - The variable value if able to resolve, null otherwise. - - - - - Holder for event handler values for an object. - - Rick Evans (.NET) - - - - The empty array of s. - - - - - Creates a new instance of the - class. - - - - - Creates a new instance of the - class. - - - The - to be used to populate this instance. - - - - - Copy all given argument values into this object. - - - The - to be used to populate this instance. - - - - - Adds the supplied handler to the collection of event handlers. - - The handler to be added. - - - - The mapping of event names to an - of - s. - - - - - Gets the of events - that have handlers associated with them. - - - - - Gets the of - s for the supplied - event name. - - - - - Immutable placeholder class used for the value of a - object when it's a reference - to a Spring that should be evaluated at runtime. - - Aleksandar Seovic - - - - Creates a new instance of the - - class. - - The expression to resolve. - - - - Returns a string representation of this instance. - - A string representation of this instance. - - - - Gets or sets the expression string. Setting the expression string will cause - the expression to be parsed. - - The expression string. - - - - Return the expression. - - - - - Properties for this expression node. - - - - - implementation that - retrieves a static or non-static public field value. - - -

- Typically used for retrieving public constants. -

-
- -

- The following example retrieves the field value... -

- - - - - - -

- The previous example could also have been written using the convenience - - property, like so... -

- - - - - -

- This class also implements the - interface - (). - If the id (or name) of one's - - object definition is set to the - of the field to be retrieved, then the id (or - name) of one's object definition will be used for the name of the - field lookup. See below for an example of this - concise style of definition. -

- - - - - - - -

- The usage for retrieving instance fields is similar. No example is shown - because public instance fields are generally bad practice; but if - you have some legacy code that exposes public instance fields, or if you - just really like coding public instance fields, then you can use this - implementation to - retrieve such field values. -

- - Juergen Hoeller - Rick Evans (.NET) - - - - Interface to be implemented by objects that wish to be aware of their object - name in an . - - -

- Note that most objects will choose to receive references to collaborating - objects via respective properties. -

-

- For a list of all object lifecycle methods, see the - API documentation. -

-
- Juergen Hoeller - Rick Evans (.NET) -
- - - Set the name of the object in the object factory that created this object. - - - The name of the object in the factory. - - -

- Invoked after population of normal object properties but before an init - callback like 's - - method or a custom init-method. -

-
-
- - - Invoked by an - after it has set all object properties supplied - (and satisfied - and ApplicationContextAware). - - -

- This method allows the object instance to perform initialization only - possible when all object properties have been set and to throw an - exception in the event of misconfiguration. -

-
- - In the event of misconfiguration (such as failure to set an essential - property) or if initialization fails. - -
- - - Return an instance (possibly shared or independent) of the object - managed by this factory. - - - An instance (possibly shared or independent) of the object managed by - this factory. - - - - - - The of the - field to be retrieved. - - - - - Set the name of the object in the object factory that created this object. - - - The name of the object in the factory. - - -

- In the context of the - - class, the - - value will be interepreted as the value of the - - property if no value has been explicitly assigned to the - - property. This allows for concise object definitions with just an id or name; - see the class documentation for - - for an example of this style of usage. -

-
-
- - - The name of the field the value of which is to be retrieved. - - -

- If the - - has been set (and is not ), then the value of this property - refers to an instance field name; it otherwise refers to a - field name. -

-
-
- - - The object instance on which the field is defined. - - - - - The on which the field is defined. - - - - - The of object that this - creates, or - if not known in advance. - - - - - Is the object managed by this factory a singleton or a prototype? - - - - - Extension of the - interface to be implemented by object factories that are capable of - autowiring and expose this functionality for existing object instances. - - Juergen Hoeller - Rick Evans (.NET) - - - - Create a new object instance of the given class with the specified - autowire strategy. - - - The of the object to instantiate. - - - The desired autowiring mode. - - - Whether to perform a dependency check for objects (not applicable to - autowiring a constructor, thus ignored there). - - The new object instance. - - If the wiring fails. - - - - - - Autowire the object properties of the given object instance by name or - . - - - The existing object instance. - - - The desired autowiring mode. - - - Whether to perform a dependency check for the object. - - - If the wiring fails. - - - - - - Apply s - to the given existing object instance, invoking their - - methods. - - -

- The returned object instance may be a wrapper around the original. -

-
- - The existing object instance. - - - The name of the object. - - - The object instance to use, either the original or a wrapped one. - - - If any post-processing failed. - - -
- - - Apply s - to the given existing object instance, invoking their - - methods. - - -

- The returned object instance may be a wrapper around the original. -

-
- - The existing object instance. - - - The name of the object. - - - The object instance to use, either the original or a wrapped one. - - - If any post-processing failed. - - -
- - - Resolve the specified dependency against the objects defined in this factory. - - The descriptor for the dependency. - Name of the object which declares the present dependency. - A list that all names of autowired object (used for - resolving the present dependency) are supposed to be added to. - the resolved object, or null if none found - if dependency resolution failed - - - - Extension of the interface - that injects dependencies into the object managed by the factory. - - Bruno Baia - - - - Gets the template object definition that should be used - to configure the instance of the object managed by this factory. - - - - - SPI interface to be implemented by most if not all listable object factories. - - -

- Allows for framework-internal plug'n'play, e.g. in - . -

-
- Juergen Hoeller - Rick Evans (.NET) -
- - - Configuration interface to be implemented by most if not all object - factories. - - -

- Provides the means to configure an object factory in addition to the - object factory client methods in the - interface. -

-

- Allows for framework-internal plug'n'play even when needing access to object - factory configuration methods. -

-

- When disposed, it will destroy all cached singletons in this factory. Call - when you want to shutdown - the factory. -

-
- Juergen Hoeller - Rick Evans (.NET) -
- - - Interface that defines a registry for shared object instances. - - - Can be implemented by - implementations in order to expose their singleton management facility - in a uniform manner. - - The interface extends this interface. - - - Juergen Hoeller - Mark Pollack (.NET) - - - - Registers the given existing object as singleton in the object registry, - under the given object name. - - - - The given instance is supposed to be fully initialized; the registry - will not perform any initialization callbacks (in particular, it won't - call IInitializingObject's AfterPropertiesSet method). - The given instance will not receive any destruction callbacks - (like IDisposable's Dispose method) either. - - - If running within a full IObjectFactory: Register an object definition - instead of an existing instance if your object is supposed to receive - initialization and/or destruction callbacks. - - - Typically invoked during registry configuration, but can also be used - for runtime registration of singletons. As a consequence, a registry - implementation should synchronize singleton access; it will have to do - this anyway if it supports a BeanFactory's lazy initialization of singletons. - - - Name of the object. - The singleton object. - - - - - - Return the (raw) singleton object registered under the given name. - - - - Only checks already instantiated singletons; does not return an Object - for singleton object definitions which have not been instantiated yet. - - - The main purpose of this method is to access manually registered singletons - . Can also be used to access a singleton - defined by an object definition that already been created, in a raw fashion. - - - Name of the object to look for. - the registered singleton object, or null if none found - - - - - Check if this registry contains a singleton instance with the given name. - - - - Only checks already instantiated singletons; does not return true - for singleton bean definitions which have not been instantiated yet. - - - The main purpose of this method is to check manually registered singletons - . Can also be used to check whether a - singleton defined by an object definition has already been created. - - - To check whether an object factory contains an object definition with a given name, - use ListableBeanFactory's ContainsObjectDefinition. Calling both - ContainsObjectDefinition and ContainsSingleton answers - whether a specific object factory contains an own object with the given name. - - - Use IObjectFactory's ContainsObject for general checks whether the - factory knows about an object with a given name (whether manually registered singleton - instance or created by bean definition), also checking ancestor factories. - - - Name of the object to look for. - - true if this bean factory contains a singleton instance with the given name; otherwise, false. - - - - - - - - Gets the names of singleton objects registered in this registry. - - - - Only checks already instantiated singletons; does not return names - for singleton bean definitions which have not been instantiated yet. - - - The main purpose of this method is to check manually registered singletons - . Can also be used to check which - singletons defined by an object definition have already been created. - - - The list of names as String array (never null). - - - - - - - Gets the number of singleton beans registered in this registry. - - - - Only checks already instantiated singletons; does not count - singleton object definitions which have not been instantiated yet. - - - The main purpose of this method is to check manually registered singletons - . Can also be used to count the number of - singletons defined by an object definition that have already been created. - - - The number of singleton objects. - - - - - - - Ignore the given dependency type for autowiring. - - -

- To be invoked during factory configuration. -

-

- This will typically be used for dependencies that are resolved - in other ways, like - through . -

-
- - The to be ignored. - -
- - - Determines whether the specified object name is currently in creation.. - - Name of the object. - - true if the specified object name is currently in creation; otherwise, false. - - - - - Add a new - that will get applied to objects created by this factory. - - -

- To be invoked during factory configuration. -

-
- - The - to register. - -
- - - Given an object name, create an alias. - - -

- This is typically used to support names that are illegal within - XML ids (which are used for object names). -

-

- Typically invoked during factory configuration, but can also be - used for runtime registration of aliases. Therefore, a factory - implementation should synchronize alias access. -

-
- The name of the object. - - - The alias that will behave the same as the object name. - - - If there is no object with the given name. - - - If the alias is already in use. - -
- - - Register the given custom - for all properties of the given . - - -

- To be invoked during factory configuration. -

-
- - The required of the property. - - - The to register. - -
- - - Set the parent of this object factory. - - -

- Note that the parent shouldn't be changed: it should only be set outside - a constructor if it isn't available when an object of this class is - created. -

-
-
- - - Returns the current number of registered - s. - - - The current number of registered - s. - - - - - Return the registered - for the - given object, allowing access to its property values and constructor - argument values. - - The name of the object. - - The registered - . - - - If there is no object with the given name. - - - In the case of errors. - - - - - Return the registered - for the - given object, allowing access to its property values and constructor - argument values. - - The name of the object. - Whether to search parent object factories. - - The registered - . - - - If there is no object with the given name. - - - In the case of errors. - - - - - Injects dependencies into the supplied instance - using the supplied . - - - The object instance that is to be so configured. - - - The name of the object definition expressing the dependencies that are to - be injected into the supplied instance. - - - An object definition that should be used to configure object. - - - - - - Ensure that all non-lazy-init singletons are instantiated, also - considering s. - - -

- Typically invoked at the end of factory setup, if desired. -

-

- As this is a startup method, it should destroy already created singletons if - it fails, to avoid dangling resources. In other words, after invocation - of that method, either all or no singletons at all should be - instantiated. -

-
- - If one of the singleton objects could not be created. - -
- - - Register a special dependency type with corresponding autowired value. - - - This is intended for factory/context references that are supposed - to be autowirable but are not defined as objects in the factory: - e.g. a dependency of type ApplicationContext resolved to the - ApplicationContext instance that the object is living in. - - Note there are no such default types registered in a plain IObjectFactory, - not even for the BeanFactory interface itself. - - - Type of the dependency to register. - This will typically be a base interface such as IObjectFactory, with extensions of it resolved - as well if declared as an autowiring dependency (e.g. IListableBeanFactory), - as long as the given value actually implements the extended interface. - - The autowired value. This may also be an - implementation o the interface, - which allows for lazy resolution of the actual target value. - - - - Determines whether the specified object qualifies as an autowire candidate, - to be injected into other beans which declare a dependency of matching type. - This method checks ancestor factories as well. - - Name of the object to check. - The descriptor of the dependency to resolve. - - true if the object should be considered as an autowire candidate; otherwise, false. - - if there is no object with the given name. - - - - Subinterface of - that adds - a before-destruction callback. - - - The typical usage will be to invoke custom destruction callbacks on - specific object types, matching corresponding initialization callbacks. - - Juergen Hoeller - Simon White (.NET) - - - - Apply this - to the - given new object instance before its destruction. Can invoke custom - destruction callbacks. - - The new object instance. - The name of the object. - - In case of errors. - - - - - Describes an object instance, which has property values, constructor - argument values, and further information supplied by concrete implementations. - - -

- This is just a minimal interface: the main intention is to allow - - (like PropertyPlaceholderConfigurer) to access and modify property values. -

-
- Juergen Hoeller - Rick Evans (.NET) -
- - - Return the property values to be applied to a new instance of the object. - - - - - Return the constructor argument values for this object. - - - - - Return the event handlers for any events exposed by this object. - - - - - Return a description of the resource that this object definition - came from (for the purpose of showing context in case of errors). - - - - - Is this object definition a "template", i.e. not meant to be instantiated - itself but rather just serving as an object definition for configuration - templates used by . - - - if this object definition is a "template". - - - - - Is this object definition "abstract", i.e. not meant to be instantiated - itself but rather just serving as parent for concrete child object - definitions. - - - if this object definition is "abstract". - - - - - Return whether this a Singleton, with a single, shared instance - returned on all calls. - - -

- If , an object factory will apply the Prototype - design pattern, with each caller requesting an instance getting an - independent instance. How this is defined will depend on the - object factory implementation. Singletons are the commoner type. -

-
-
- - - Is this object lazily initialized? - -

- Only applicable to a singleton object. -

-

- If , it will get instantiated on startup by object factories - that perform eager initialization of singletons. -

-
-
- - - Returns the of the object definition (if any). - - - A resolved object . - - - If the of the object definition is not a - resolved or . - - - - - Returns the of the - of the object definition. - - Note that this does not have to be the actual type name used at runtime, - in case of a child definition overrding/inheriting the the type name from its - parent. It can be modifed during object factory post-processing, typically - replacing the original class name with a parsed variant of it. - Hence, do not consider this to be the definitive bean type at runtime - but rather only use it for parsing purposes at the individual object - definition level. - - - - - The autowire mode as specified in the object definition. - - -

- This determines whether any automagical detection and setting of - object references will happen. Default is - , - which means there's no autowire. -

-
-
- - - The object names that this object depends on. - - -

- The object factory will guarantee that these objects get initialized - before. -

-

- Note that dependencies are normally expressed through object properties - or constructor arguments. This property should just be necessary for - other kinds of dependencies like statics (*ugh*) or database - preparation on startup. -

-
-
- - - The name of the initializer method. - - -

- The default is , in which case there is no initializer method. -

-
-
- - - Return the name of the destroy method. - - -

- The default is , in which case there is no destroy method. -

-
-
- - - The name of the factory method to use (if any). - - -

- This method will be invoked with constructor arguments, or with no - arguments if none are specified. The static method will be invoked on - the specified . -

-
-
- - - The name of the factory object to use (if any). - - - - - Gets a value indicating whether this instance a candidate for getting autowired into some other - object. - - - true if this instance is autowire candidate; otherwise, false. - - - - - Simple factory for shared instances. - - Juergen Hoeller - Simon White (.NET) - - - - Constructs a new instance of the target dictionary. - - The new instance. - - - - Set the source . - - -

- This value will be used to populate the - returned by this factory. -

-
-
- - - Set the of the - implementation to use. - - -

- The default is the . -

-
-
- - - The of objects created by this factory. - - - Always returns the . - - - - - implementation that - creates instances of the class. - - -

- Typically used for retrieving shared - instances for common topics (such as the 'DAL', 'BLL', etc). The - - property determines the name of the - Common.Logging logger. -

-
- Rick Evans - -
- - - Creates a new instance of the - - class. - - - - - Creates a new instance of the - - class. - - - The name of the instance served up by - this factory. - - - If the supplied is - or contains only whitespace character(s). - - - - - Return an instance (possibly shared or independent) of the object - managed by this factory. - - - An instance (possibly shared or independent) of the object - managed by this factory. - - - - - - Invoked by an - after it has set all object properties supplied - (and satisfied the - - and - interfaces). - - - In the event of misconfiguration (such as failure to set an essential - property) or if initialization fails. - - - - - - The name of the instance served up by - this factory. - - - The name of the instance served up by - this factory. - - - If the supplied to the setter is - or contains only whitespace character(s). - - - - - Return the type of object that this - creates, or - if not known in advance. - - - - - - Is the object managed by this factory a singleton or a prototype? - - - - - - An that returns a value - that is the result of a or instance method invocation. - - -

- Note that this class generally is expected to be used for accessing factory methods, - and as such defaults to operating in singleton mode. The first request to - - by the owning object factory will cause a method invocation, the return - value of which will be cached for all subsequent requests. The - property may be set to - , to cause this factory to invoke the target method each - time it is asked for an object. -

-

- A target method may be specified by setting the - property to a string representing - the method name, with specifying - the that the method is defined on. - Alternatively, a target instance method may be specified, by setting the - property as the target object, and - the property as the name of the - method to call on that target object. Arguments for the method invocation may be - specified by setting the property. -

-

- Another (esoteric) use case for this factory object is when one needs to call a method - that doesn't return any value (for example, a class method to - force some sort of initialization to happen)... this use case is not supported by - factory-methods, since a return value is needed to become the object. -

-

- - This class depends on the - - method being called after all properties have been set, as per the - contract. If you are - using this class outside of a Spring.NET IoC container, you must call one of either - or - yourself to ready the object's internal - state, or you will get a nasty . - -

-
- -

- The following example uses an instance of this class to call a - factory method... -

- - - - - - - - 1st - 2nd - and 3rd arguments - - - - -

- The following example is similar to the preceding example; the only pertinent difference is the fact that - a number of different objects are passed as arguments, demonstrating that not only simple value types - are valid as elements of the argument list... -

- - - - - - - - - - - 1st - - - - - - - http://www.springframework.net/ - - - - - -

- Named parameters are also supported... this next example yields the same results as - the preceding example (that did not use named arguments). -

- - - - - - - - - - 1st - and 3rd arguments - 2nd - - - - -

- Similarly, the following example uses an instance of this class to call an instance method... -

- - - - - - - - - -

- The above example could also have been written using an anonymous inner object definition... if the - object on which the method is to be invoked is not going to be used outside of the factory object - definition, then this is the preferred idiom because it limits the scope of the object on which the - method is to be invoked to the surrounding factory object. -

- - - - - - - - - - Colin Sampaleanu - Juergen Hoeller - Rick Evans (.NET) - Simon White (.NET) - - - - - - Specialisation of the class that tries - to convert the given arguments for the actual target method via an - appropriate implementation. - - Juergen Hoeller - Rick Evans - - - - - Helper class allowing one to declaratively specify a method call for later invocation. - - -

- Typically not used directly but via its subclasses such as - . -

-

- Usage: specify either the and - or the - and - properties respectively, and - (optionally) any arguments to the method. Then call the - method to prepare the invoker. - Once prepared, the invoker can be invoked any number of times. -

-
- -

- The following example uses the class to invoke the - ToString() method on the Foo class using a mixture of both named and unnamed - arguments. -

- - public class Foo - { - public string ToString(string name, int age, string address) - { - return string.Format("{0}, {1} years old, {2}", name, age, address); - } - - public static void Main() - { - Foo foo = new Foo(); - MethodInvoker invoker = new MethodInvoker(); - invoker.Arguments = new object [] {"Kaneda", "18 Kaosu Gardens, Nakatani Drive, Okinanawa"}; - invoker.AddNamedArgument("age", 29); - invoker.Prepare(); - // at this point, the arguments that will be passed to the method invocation - // will have been resolved into the following ordered array : {"Kaneda", 29, "18 Kaosu Gardens, Nakatani Drive, Okinanawa"} - string details = (string) invoker.Invoke(); - Console.WriteLine (details); - // will print out 'Kaneda, 29 years old, 18 Kaosu Gardens, Nakatani Drive, Okinanawa' - } - } - -
- Colin Sampaleanu - Juergen Hoeller - Simon White (.NET) -
- - - The used to search for - the method to be invoked. - - - - - The value returned from the invocation of a method that returns void. - - - - - The method that will be invoked. - - - - - Creates a new instance of the class. - - - - - Prepare the specified method. - - -

- The method can be invoked any number of times afterwards. -

-
- - If all required properties are not set, or a matching argument could not be found - for a named argument (typically down to a typo). - - - If the specified method could not be found. - -
- - - Searches for and returns the method that is to be invoked. - - - The return value of this method call will subsequently be returned from the - . - - The method that is to be invoked. - - If no method could be found. - - - If more than one method was found. - - - - - Adds the named argument to this instances mapping of argument names to argument values. - - - The name of an argument on the method that is to be invoked. - - - The value of the named argument on the method that is to be invoked. - - - - - Returns the prepared object that - will be invoked. - - -

- A possible use case is to determine the return of the method. -

-
- - The prepared object that - will be invoked. - -
- - - Invoke the specified method. - - -

- The invoker needs to have been prepared beforehand (via a call to the - method). -

-
- - The object returned by the method invocation, or - if the method returns void. - - - If at least one of the arguments passed to this - was incompatible with the signature of the invoked method. - -
- - - The target on which to call the target method. - - -

- Only necessary when the target method is ; - else, a target object needs to be specified. -

-
-
- - - The target object on which to call the target method. - - -

- Only necessary when the target method is not ; - else, a target class is sufficient. -

-
-
- - - The name of the method to be invoked. - - -

- Refers to either a method - or a non- method, depending on - whether or not a target object has been set. -

-
- -
- - - Arguments for the method invocation. - - -

- Ordering is significant... the order of the arguments in this - property must match the ordering of the various parameters on the target - method. There does however exist a small possibility for confusion when - the arguments in this property are supplied in addition to one or more named - arguments. In this case, each named argument is slotted into the index position - corresponding to the named argument... once once all named arguments have been - resolved, the arguments in this property are slotted into any remaining (empty) - slots in the method parameter list (see the example in the overview of the - class if this is not clear). -

-

- If this property is not set, or the value passed to the setter invocation - is or a zero-length array, a method with no (un-named) arguments is assumed. -

-
- -
- - - The resolved arguments for the method invocation. - - - - This property is not set until the target method has been resolved via a call to the - method). It is a combination of the - named and plain vanilla arguments properties, and it is this object array that - will actually be passed to the invocation of the target method. - -

- Setting the value of this property to results in basically clearing out any - previously prepared arguments... another call to the - method will then be required to prepare the arguments again (or the prepared arguments - can be set explicitly if so desired). -

-
- - -
- - - Named arguments for the method invocation. - - -

- The keys of this dictionary are the () names of the - method arguments, and the () values are the actual - argument values themselves. -

-

- If this property is not set, or the value passed to the setter invocation - is a reference, a method with no named arguments is assumed. -

-
- -
- - - Creates a new instance of the - class. - - - - - Prepare the specified method. - - -

- The method can be invoked any number of times afterwards. -

-
- - If all required properties are not set. - - - If the specified method could not be found. - -
- - - Register the given custom - for all properties of the given . - - - The of property. - - - The to register. - - - - - Return an instance (possibly shared or independent) of the object - managed by this factory. - - -

- Returns the return value of the method that is to be invoked. -

-

- Will return the same value each time if the - - property value is . -

-
- - An instance (possibly shared or independent) of the object managed by - this factory. - - -
- - - Prepares this method invoker. - - - If all required properties are not set. - - - If the specified method could not be found. - - - - - - If a singleton should be created, or a new object on each request. - Defaults to . - - - - - Return the return value of the method - that this factory invokes, or if not - known in advance. - - -

- If the return value of the method that this factory is to invoke is - , then the - will be returned (in accordance with the - contract that - treats a value as a configuration error). -

-
- -
- - - Holder for an with - name and aliases. - - -

- Recognized by - - for inner object definitions. Registered by - , - which also uses it as general holder for a parsed object definition. -

-

- Can also be used for programmatic registration of inner object - definitions. If you don't care about the functionality offered by the - interface and the like, - registering - or is good enough. -

-
- Juergen Hoeller - Simon White (.NET) -
- - - Creates a new instance of the - class. - - - The object definition to be held by this instance. - - - The name of the object definition. - - - - - Creates a new instance of the - class. - - - The object definition to be held by this instance. - - The name of the object. - - Any aliases for the supplied - - - - - The held by this - instance. - - - - - The name of the object definition. - - - - - Any aliases for the object definition. - - -

- Guaranteed to never return ; if the associated - - does not have any aliases associated with it, then an empty - array will be returned. -

-
-
- - - Visitor class for traversing objects, in particular - the property values and constructor arguments contained in them resolving - object metadata values. - - - Used by and - to parse all string values contained in a ObjectDefinition, resolving any placeholders found. - - Mark Pollack - - - - Initializes a new instance of the class, - applying the specified IVariableSource to all object metadata values. - - The variable source. - - - - Initializes a new instance of the class - for subclassing - - Subclasses should override the ResolveStringValue method - - - - Traverse the given ObjectDefinition object and the MutablePropertyValues - and ConstructorArgumentValues contained in them. - - The object definition to traverse. - - - - Visits the ObjectDefinition property ObjectTypeName, replacing string values using - the specified IVariableSource. - - The object definition. - - - - Visits the property values of the ObjectDefinition, replacing string values - using the specified IVariableSource. - - The object definition. - - - - Visits the indexed constructor argument values, replacing string values using the - specified IVariableSource. - - The indexed argument values. - - - - Visits the named constructor argument values, replacing string values using the - specified IVariableSource. - - The named argument values. - - - - Visits the generic constructor argument values, replacing string values using - the specified IVariableSource. - - The genreic argument values. - - - - Configures the constructor argument ValueHolder. - - The vconstructor alue holder. - - - - Resolves the given value taken from an object definition according to its type - - the value to resolve - the resolved value - - - - Visits the ManagedList property ElementTypeName and - calls for list element. - - - - - Visits the ManagedSet property ElementTypeName and - calls for list element. - - - - - Visits the ManagedSet properties KeyTypeName and ValueTypeName and - calls for dictionary's value element. - - - - - Visits the elements of a NameValueCollection and calls - for value of each element. - - - - - Looks up the value of the given variable name in the configured . - - The name of the variable to be looked up - - The value of this variable, as returned from the passed - into the constructor - - If no has been configured. - - - - Returns a value that is an - that - returns an object from an - . - - -

- The primary motivation of this class is to avoid having a client object - directly calling the - - method to get a prototype object out of an - , which would be a - violation of the inversion of control principle. With the use of this - class, the client object can be fed an - as a property - that directly returns one target prototype object. -

-

- The object referred to by the value of the - - property does not have to be a prototype object, but there is little - to no point in using this class in conjunction with a singleton object. -

-
- -

- The following XML configuration snippet illustrates the use of this - class... -

- - - - - - - - - - - - - - - - Colin Sampaleanu - Simon White (.NET) - - - - Interface to be implemented by objects that wish to be aware of their owning - . - - -

- For example, objects can look up collaborating objects via the factory. -

-

- Note that most objects will choose to receive references to collaborating - objects via respective properties and / or an appropriate constructor. -

-

- For a list of all object lifecycle methods, see the - API documentation. -

-
- Rod Johnson - Rick Evans (.NET) -
- - - Callback that supplies the owning factory to an object instance. - - - Owning - (may not be ). The object can immediately - call methods on the factory. - - -

- Invoked after population of normal object properties but before an init - callback like 's - - method or a custom init-method. -

-
- - In case of initialization errors. - -
- - - Returns an instance of the object factory. - - The object factory. - - - - Invoked by an - after it has set all supplied object properties. - - - In the event of misconfiguration (such as failure to set an essential - property) or if initialization fails. - - - - - - Sets the name of the target object. - - - - - The target factory that will be used to perform the lookup - of the object referred to by the - property. - - - The owning - (will never be ). - - - In case of initialization errors. - - - - - - The of object created by this factory. - - - - - Interface defining a factory which can return an object instance - (possibly shared or independent) when invoked. - - - This interface is typically used to encapsulate a generic factory - which returns a new instance (prototype) on each invocation. - It is similar to the , but - implementations of the aforementioned interface are normally meant to be defined - as instances by the user in an , - while implementations of this class are normally meant to be fed as a property to - other objects; as such, the - method - has different exception handling behavior. - - Colin Sampaleanu - Simon White (.NET) - - - - Return an instance (possibly shared or independent) - of the object managed by this factory. - - - An instance of the object (should never be ). - - - - - Creates a new instance of the GenericObjectFactory class. - - - The enclosing - . - - - - - Returns the object created by the enclosed object factory. - - The created object. - - - - An implementation - that exposes an arbitrary target object under a different name. - - -

- Usually, the target object will reside in a different object - definition file, using this - to link it in - and expose it under a different name. Effectively, this corresponds - to an alias for the target object. -

- - For XML based object definition files, a <alias> - tag is available that effectively achieves the same. - -
- Juergen Hoeller - Rick Evans (.NET) - -
- - - Return an instance (possibly shared or independent) of the object - managed by this factory. - - - An instance (possibly shared or independent) of the object managed by - this factory. - - - - - - The name of the target object. - - -

- The target object may potentially be defined in a different object - definition file. -

-
- The name of the target object. -
- - - Return the type of object that this - creates, or - if not known in advance. - - - - - - Is the object managed by this factory a singleton or a prototype? - - - - - - Callback that supplies the owning factory to an object instance. - - - The owning - (may not be ). The object can immediately - call methods on the factory. - - - In case of initialization errors. - - - - - - Implementation of that - resolves variable name against Java-style property file. - - - Aleksandar Seovic - - - - Resolves variable value for the specified variable name. - - - The name of the variable to resolve. - - - The variable value if able to resolve, null otherwise. - - - - - Initializes properties based on the specified - property file locations. - - - - - Gets or sets the locations of the property files - to read properties from. - - - The locations of the property files - to read properties from. - - - - - Convinience property. Gets or sets a single location - to read properties from. - - - A location to read properties from. - - - - - Overrides default values in one or more object definitions. - - -

- Instances of this class override already existing values, and is - thus best suited to replacing defaults. If you need to replace - placeholder values, consider using the - - class instead. -

-

- In contrast to the - - class, the original object definition can have default - values or no values at all for such object properties. If an overriding - configuration file does not have an entry for a certain object property, - the default object value is left as is. Also note that it is not - immediately obvious to discern which object definitions will be mutated by - one or more - s - simply by looking at the object configuration. -

-

- Each line in a referenced configuration file is expected to take the - following form... -

- - - -

- The name.property key refers to the object name and the - property that is to be overridden; and the value is the overridding - value that will be inserted into the appropriate object definition's - named property. -

-

- Please note that in the case of multiple - s - that define different values for the same object definition value, the - last overridden value will win (due to the fact that the values - supplied by previous - s - will be overridden). -

-
- -

- The following XML context definition defines an object that has a number - of properties, all of which have default values... -

- - - - - - - - -

- What follows is a .NET config file snippet for the above example (assuming - the need to override one of the default values)... -

- - - - - - -
- Juergen Hoeller - Simon White (.NET) - - - -
- - - Allows for the configuration of individual object property values from - a .NET .config file. - - -

- Useful for custom .NET .config files targetted at system administrators - that override object properties configured in the application context. -

-

- Two concrete implementations are provided in the Spring.NET core library: - - - - - for <add key="placeholderKey" value="..."/> style - overriding (pushing values from a .NET .config file into object - definitions). - - - - - - for replacing "${...}" placeholders (pulling values from a .NET .config - file into object definitions). - - - -

-

- Please refer to the API documentation for the concrete implementations - listed above for example usage. -

-
- Juergen Hoeller - Simon White (.NET) - - -
- - - The default configuration section name to use if none is explictly supplied. - - - - - - Creates a new instance of the - - class. - - -

- This is an class, and as such exposes no - public constructors. -

-
-
- - - Modify the application context's internal object factory after its - standard initialization. - - - The object factory used by the application context. - - - In case of errors. - - - - - - Loads properties from the configuration sections - specified in into . - - The instance to be filled with properties. - - - - Apply the given properties to the supplied - . - - - The - used by the application context. - - The properties to apply. - - If an error occured. - - - - - Validates the supplied . - - -

- Basically, if external locations are specified, ensure that either - one or a like number of config sections are also specified. -

-
- - The to be validated. - -
- - - Simply initializes the supplied - collection with this instances default - (if any). - - - The collection to be so initialized. - - - - - The policy for resolving conflicting property overrides from - several resources. - - -

- When merging conflicting property overrides from several resources, - should append an override with the same key be appended to the - current value, or should the property override from the last resource - processed override previous values? -

-

- The default value is ; i.e. a property - override from the last resource to be processed overrides previous - values. -

-
- - if the property override from the last resource - processed overrides previous values. - -
- - - Return the order value of this object, where a higher value means greater in - terms of sorting. - - The order value. - - - - - The default properties to be applied. - - -

- These are to be considered defaults, to be overridden by values - loaded from other resources. -

-
-
- - - The location of the .NET .config file that contains the property - overrides that are to be applied. - - - - - The locations of the .NET .config files containing the property - overrides that are to be applied. - - - - - The configuration sections to look for within the .config files. - - - - - - - Should a failure to find a .config file be ignored? - - -

- is only appropriate if the .config file is - completely optional. The default is . -

-
- - if a failure to find a .config file is to be - ignored. - -
- - - Apply the given properties to the supplied - . - - - The - used by the application context. - - The properties to apply. - - If an error occured. - - - - - Process the given key as 'name.property' entry. - - - The object factory containing the object definitions that are to be - processed. - - The key. - The value. - - If an error occurs. - - - If the property was not well formed (i.e. not in the format "name.property"). - - - - - implementation that - evaluates a property path on a given target object. - - -

- The target object can be specified directly or via an object name (see - example below). -

-

- Please note that the - is an implementation, and as such has - to comply with the contract of the - interface; more specifically, this means that the end result of the property lookup path - evaluation cannot be ( - implementations are not permitted to return ). If the resut of a - property lookup path evaluates to , an exception will be thrown. -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - Juergen Hoeller - Rick Evans (.NET) - - - - Return an instance (possibly shared or independent) of the object - managed by this factory. - - - An instance (possibly shared or independent) of the object managed by - this factory. - - - - - - The target object that the property path lookup is to be applied to. - - -

- This would most likely be an inner object, but can of course be - any object reference. -

-
- - The target object that the property path lookup is to be applied to. - - -
- - - The (object) name of the target object that the property path lookup - is to be applied to. - - -

- Please note that any leading or trailing whitespace will be - trimmed from this name prior to resolution. The implication of this is that - one cannot use the - class in conjunction with object names that start or end with whitespace. -

-
- - The (object) name of the target object that the property path lookup - is to be applied to. - - -
- - - The property (lookup) path to be applied to the target object. - - -

- Please note that any leading or trailing whitespace will be - trimmed from this path prior to resolution. Whitespace is not a valid - identifier for property names (in part or whole) in CLS-based languages, - so this is a not unreasonable action. Please also note that whitespace - that is embedded within the property path will be left as-is (which may - or may not result in an error being thrown, depending on the context of - the whitespace). -

-
- -

- Examples of such property lookup paths can be seen below; note that - property lookup paths can be nested to an arbitrary level. -

- - name.length - accountManager.account['the key'].name - accounts[0].name - -
- - The property (lookup) path to be applied to the target object. - -
- - - The 'expected' of the result from evaluating the - property path. - - -

- This is not necessary for directly specified target objects, or - singleton target objects, where the can - be determined via reflection. Just specify this in case of a - prototype target, provided that you need matching by type (for - example, for autowiring). -

-

- It is permissable to set the value of this property to - (which in any case is the default value). -

-
- - The 'expected' of the result from evaluating the - property path. - -
- - - Return the of object that this - creates, or - if not known in advance. - - - - - - Is the object managed by this factory a singleton or a prototype? - - - - - - Set the name of the object in the object factory that created this object. - - -

- The object name of this - - will be interpreted as "objectName.property" pattern, if neither the - - - have been supplied (set). -

-

- This allows for concise object definitions with just an id or name. -

-
- - The name of the object in the factory. - -
- - - Callback that supplies the owning factory to an object instance. - - - Owning - (may not be ). The object can immediately - call methods on the factory. - - - In case of initialization errors. - - - - - Resolves placeholder values in one or more object definitions. - - -

- The default placeholder syntax follows the NAnt style: ${...}. - Instances of this class can be configured in the same way as any other - object in a Spring.NET container, and so custom placeholder prefix - and suffix values can be set via the - and properties. -

- -

- The following example XML context definition defines an object that has - a number of placeholders. The placeholders can easily be distinguished - by the presence of the ${} characters. -

- - - - - - - - -

- The associated XML configuration file for the above example containing the - values for the placeholders would contain a snippet such as .. -

- - - - - - - - -

- The preceding XML snippet listing the various property keys and their - associated values needs to be inserted into the .NET config file of - your application (or Web.config file for your ASP.NET web application, - as the case may be), like so... -

- - - - - - - - -
-

- - checks simple property values, lists, dictionaries, sets, constructor - values, object type name, and object names in - runtime object references ( - ). - Furthermore, placeholder values can also cross-reference other - placeholders, in the manner of the following example where the - rootPath property is cross-referenced by the subPath - property. -

- - - - - - - - -

- In contrast to the - - class, this configurer only permits the replacement of explicit - placeholders in object definitions. Therefore, the original definition - cannot specify any default values for its object properties, and the - placeholder configuration file is expected to contain an entry for each - defined placeholder. That is, if an object definition contains a - placeholder ${foo}, there should be an associated - <add key="foo" value="..."/> entry in the - referenced placeholder configuration file. Default property values - can be defined via the inherited - - collection to overcome any perceived limitation of this feature. -

-

- If a configurer cannot resolve a placeholder, and the value of the - - property is currently set to , an - - will be thrown. If you want to resolve properties from multiple configuration - resources, simply specify multiple resources via the - - property. Finally, please note that you can also define multiple - - instances, each with their own custom placeholder syntax. -

-
- Juergen Hoeller - Simon White (.NET) - - - -
- - - The default placeholder prefix. - - - - - The default placeholder suffix. - - - - - Apply the given properties to the supplied - . - - - The - used by the application context. - - The properties to apply. - - If an error occured. - - - - - Parse values recursively to be able to resolve cross-references between - placeholder values. - - - The map of constructor arguments / property values. - - The string to be resolved. - The placeholders that have already been visited - during the current resolution attempt (used to detect circular references - between placeholders). Only non-null if we're parsing a nested placeholder. - - If an error occurs. - - The resolved string. - - - - Resolve the given placeholder using the given name value collection, - performing an environment variables check according to the given mode. - - -

- The default implementation delegates to - - before/afer the environment variable check. Subclasses can override - this for custom resolution strategies, including customized points - for the environment properties check. -

-
- The placeholder to resolve - - The merged name value collection of this configurer. - - The environment variable mode. - - The resolved value or if none. - - -
- - - Resolve the given placeholder using the given name value collection. - - -

- This (the default) implementation simply looks up the value of the - supplied key. -

-

- Subclasses can override this for customized placeholder-to-key - mappings or custom resolution strategies, possibly just using the - given name value collection as fallback. -

-
- The placeholder to resolve. - - The merged name value collection of this configurer. - - The resolved value. -
- - - The placeholder prefix (the default is ${). - - - - - - The placeholder suffix (the default is }) - - - - - - Indicates whether unresolved placeholders should be ignored. - - - - - Controls how environment variables will be used to - replace property placeholders. - - -

- See the overview of the - - enumeration for the available options. -

-
-
- - - implementation that - retrieves a or non-static public property value. - - -

- Typically used for retrieving public property values. -

-
- Rick Evans (.NET) -
- - - Creates a new instance of the - class. - - - - - Invoked by an - after it has set all object properties supplied - (and satisfied - and ApplicationContextAware). - - - In the event of misconfiguration (such as failure to set an essential - property) or if initialization fails. - - - - - Template method that subclasses must override to construct the object - returned by this factory. - - - If an exception occured during object creation. - - The object returned by this factory. - - - - The of the static property - to be retrieved. - - - - - Arguments for the property invocation. - - -

- If this property is not set, or the value passed to the setter invocation - is a null or zero-length array, a property with no arguments is assumed. -

-
-
- - - The name of the property the value of which is to be retrieved. - - -

- Refers to either a property or a non-static property, - depending on a target object being set. -

-
-
- - - The object instance on which the property is defined. - - - - - The on which the property is defined. - - - - - Return the type of object that this - creates, or - if not known in advance. - - - - - Implementation of that - resolves variable name against registry key. - - Aleksandar Seovic - - - - Resolves variable value for the specified variable name. - - - The name of the variable to resolve. - - - This implementation resolves REG_SZ as well as REG_MULTI_SZ values. In case of a REG_MULTI_SZ value, - strings are concatenated to a comma-separated list following - - - The variable value if able to resolve, null otherwise. - - - - - Gets or sets the registry key to obtain variable values from. - - - The registry key to obtain variable values from. - - - - - - implementation that allows for convenient registration of custom - IResource implementations. - - -

- Because the - class implements the - - interface, instances of this class that have been exposed in the - scope of an - will - automatically be picked up by the application context and made - available to the IoC container whenever resolution of IResources is required. -

-
- Mark Pollack - - -
- - - Registers custom IResource implementations. The supplied - is not used since IResourse implementations - are registered with a global - - - The object factory. - - - In case of errors. - - - - - The IResource implementations, i.e. resource handlers, to register. - - -

- The has the - contains the resource protocol name as the key and type as the value. - The key name can either be a string or an object, in which case - ToString() will be used to obtain the string name. - The value can be the fully qualified name of the IResource - implementation, a string, or - an actual of the IResource class - -

-
-
- - - A convenience class to create a - given the resource base - name and assembly name. - - -

- This is currently the preferred way of injecting resources into view - tier components (such as Windows Forms GUIs and ASP.NET ASPX pages). - A GUI component (typically a Windows Form) is injected with - an instance, and can - then proceed to use the various GetXxx() methods on the - to retrieve images, - strings, custom resources, etc. -

-
- Mark Pollack - - - -
- - - Creates a . - - - If an exception occured during object creation. - - The object returned by this factory. - - - - - - Invoked by an - after it has set all object properties supplied - (and satisfied the - - and - interfaces). - - - In the event of misconfiguration (such as failure to set an essential - property) or if initialization fails. - - - - - - The root name of the resources. - - -

- For example, the root name for the resource file named - "MyResource.en-US.resources" is "MyResource". -

- - The namespace is also prefixed before the resource file name. - -
-
- - - The string representation of the assembly that contains the resource. - - - - - The . - - - - - Immutable placeholder class used for the value of a - object when it's a reference - to another object in this factory to be resolved at runtime. - - Rod Johnson - Rick Evans (.NET) - - - - Creates a new instance of the - - class. - - -

- This does not mark this object as being a reference to - another object in any parent factory. -

-
- The name of the target object. -
- - - Creates a new instance of the - - class. - - -

- This variant constructor allows a client to specifiy whether or not - this object is a reference to another object in a parent factory. -

-
- The name of the target object. - - Whether this object is an explicit reference to an object in a - parent factory. - -
- - - Returns a string representation of this instance. - - A string representation of this instance. - - - - Return the target object name. - - - - - Is this is an explicit reference to an object in the parent - factory? - - - if this is an explicit reference to an - object in the parent factory. - - - - - Simple factory object for shared instances. - - Juergen Hoeller - Simon White (.NET) - - - - Constructs a new instance of the target set. - - The new instance. - - - - Set the source . - - -

- This value will be used to populate the - returned by this factory. -

-
-
- - - Set the of the - implementation to use. - - -

- The default is the . -

-
-
- - - The of objects created by this factory. - - - Always returns the . - - - - - Configure all ISharedStateAware objects, delegating concrete handling to the list of . - - - - - Creates a new empty instance. - - - - - Creates a new preconfigured instance. - - - priority value affecting order of invocation of this processor. See interface. - - - - Iterates over configured list of s until - the first provider is found that
- a) true == provider.CanProvideState( instance, name )
- b) null != provider.GetSharedState( instance, name )
-
-
- - - A NoOp for this processor - - - The new object instance. - - - The name of the object. - - - the original . - - - - - Return the order value of this object, where a higher value means greater in - terms of sorting. - - -

- Normally starting with 0 or 1, with indicating - greatest. Same order values will result in arbitrary positions for the affected - objects. -

-

- Higher value can be interpreted as lower priority, consequently the first object - has highest priority. -

-
- The order value. -
- - - Get/Set the (already ordererd!) list of instances. - - - If this list is not set, the containing object factory will automatically - be scanned for instances. - - - - - Implementation of that - resolves variable name against special folders (as defined by - enumeration). - - Aleksandar Seovic - - - - Resolves specified special folder to its full path. - - - The name of the special folder to resolve. Should be one of the values - defined by the enumeration. - - - The folder path if able to resolve, null otherwise. - - - - - - implementation that allows for convenient registration of custom - type aliases. - - - Type aliases can be used instead of fully qualified type names anywhere - a type name is expected in a Spring.NET configuration file. -

- Because the - class implements the - - interface, instances of this class that have been exposed in the - scope of an - will - automatically be picked up by the application context and made - available to the IoC container whenever resolution of type aliases is required. -

-
- Mark Pollack - - -
- - - Registers any type aliases. The supplied - is not used since type aliases - are registered with a global - - - The object factory. - - - In case of errors. - - - - - The type aliases to register. - - -

- The has the - contains the alias name as the key and type as the value. - The key name can either be a string or an object, in which case - ToString() will be used to obtain the string name. - the value can be the fully qualified name of the type as a string or - an actual of the class that - being aliased. -

-
-
- - - Holder for a typed value. - - -

- Can be added to object definitions to explicitly specify - a target type for a value, - for example for collection - elements. -

-

- This holder just stores the value and the target - . The actual conversion will be performed by - the surrounding object factory. -

-
- Juergen Hoeller - Rick Evans (.NET) -
- - - Creates a new instance of the - - class. - - - - - Initializes a new instance of the class. - - The value. - - - - Creates a new instance of the - - class. - - - The value that is to be converted. - - - The to convert to. - - - If the supplied is - . - - - - - The value that is to be converted. - - -

- Obviously if the - - is the , no conversion - will actually be performed. -

-
-
- - - The to convert to. - - - If the setter is supplied with a value. - - - - - Gets a value indicating whether this instance has target type. - - - true if this instance has target type; otherwise, false. - - - - - Provides methods for type-safe accessing s. - - Erich Eichinger - - - - Initialize a new instance of an - - The underlying to read values from. - - - - Returns a that contains the value of the specified variable. - - The name of the variable to be read. - The value to be returned if returns null. - - A that contains the value of the specified variable - or , if returns null. - - - - - Returns a that contains the value of the specified variable. - - The name of the variable to be read. - The value to be returned if returns null. - - If false, suppresses exceptions if the result - of cannot be parsed - and returns instead. - - A that contains the value of the specified variable - or , if cannot be parsed. - - - - - Returns a that contains the value of the specified variable. - - The name of the variable to be read. - The value to be returned if returns null. - - A that contains the value of the specified variable - or , if returns null. - - - - - Returns a that contains the value of the specified variable. - - The name of the variable to be read. - The value to be returned if returns null. - - If false, suppresses exceptions if the result - of cannot be parsed - and returns instead. - - A that contains the value of the specified variable - or , if cannot be parsed. - - - - - Returns a that contains the value of the specified variable. - - The name of the variable to be read. - The value to be returned if returns null. - - A that contains the value of the specified variable - or , if returns null. - - - - - Returns a that contains the value of the specified variable. - - The name of the variable to be read. - The value to be returned if returns null. - - If false, suppresses exceptions if the result - of cannot be parsed - and returns instead. - - A that contains the value of the specified variable - or , if cannot be parsed. - - - - - Returns a that contains the value of the specified variable. - - The name of the variable to be read. - The value to be returned if returns null. - - A that contains the value of the specified variable - or , if returns null. - - - - - Returns a that contains the value of the specified variable. - - The name of the variable to be read. - The value to be returned if returns null. - - If false, suppresses exceptions if the result - of cannot be parsed - and returns instead. - - A that contains the value of the specified variable - or , if cannot be parsed. - - - - - Returns a that contains the value of the specified variable. - - The name of the variable to be read. - The value to be returned if returns null. - - A that contains the value of the specified variable - or , if returns null. - - - - - Returns a that contains the value of the specified variable. - - The name of the variable to be read. - The value to be returned if returns null. - - If false, suppresses exceptions if the result - of cannot be parsed - and returns instead. - - A that contains the value of the specified variable - or , if cannot be parsed. - - - - - Returns a that contains the value of the specified variable. - - The name of the variable to be read. - The value to be returned if returns null. - - A that contains the value of the specified variable - or , if returns null. - - - - - Returns a that contains the value of the specified variable. - - The name of the variable to be read. - The value to be returned if returns null. - - If false, suppresses exceptions if the result - of cannot be parsed - and returns instead. - - A that contains the value of the specified variable - or , if cannot be parsed. - - - - - Returns a that contains the value of the specified variable. - - The name of the variable to be read. - The value to be returned if returns null. - - A that contains the value of the specified variable - or , if returns null. - - - - - Returns a that contains the value of the specified variable. - - The name of the variable to be read. - The value to be returned if returns null. - - If false, suppresses exceptions if the result - of cannot be parsed - and returns instead. - - A that contains the value of the specified variable - or , if cannot be parsed. - - - - - Returns a that contains the value of the specified variable. - - The name of the variable to be read. - The value to be returned if returns null. - - A that contains the value of the specified variable - or , if returns null. - - - - - Returns a that contains the value of the specified variable. - - The name of the variable to be read. - The value to be returned if returns null. - - If false, suppresses exceptions if the result - of cannot be parsed - and returns instead. - - A that contains the value of the specified variable - or , if cannot be parsed. - - - - - Returns a that contains the value of the specified variable. - - The name of the variable to be read. - The value to be returned if returns null. - - A that contains the value of the specified variable - or , if returns null. - - - - - Returns a that contains the value of the specified variable. - - The name of the variable to be read. - The value to be returned if returns null. - - If false, suppresses exceptions if the result - of cannot be parsed - and returns instead. - - A that contains the value of the specified variable - or , if cannot be parsed. - - - - - Returns a that contains the value of the specified variable. - - The name of the variable to be read. - The value to be returned if returns null. - - A that contains the value of the specified variable - or , if returns null. - - - - - Returns a that contains the value of the specified variable. - - The name of the variable to be read. - The value to be returned if returns null. - - If false, suppresses exceptions if the result - of cannot be parsed - and returns instead. - - A that contains the value of the specified variable - or , if cannot be parsed. - - - - - Returns a that contains the value of the specified variable. - - The name of the variable to be read. - The value to be returned if returns null. - - A that contains the value of the specified variable - or , if returns null. - - - - - Returns a that contains the value of the specified variable. - - The name of the variable to be read. - The value to be returned if returns null. - - If false, suppresses exceptions if the result - of cannot be parsed - and returns instead. - - A that contains the value of the specified variable - or , if cannot be parsed. - - - - - Returns a that contains the value of the specified variable. - - The name of the variable to be read. - The expected format of the variable's value - The value to be returned if returns null. - - A that contains the value of the specified variable - or , if returns null. - - - - - Returns a that contains the value of the specified variable. - - The name of the variable to be read. - The expected format of the variable's value - The value to be returned if returns null. - - If false, suppresses exceptions if the result - of cannot be parsed - and returns instead. - - A that contains the value of the specified variable - or , if cannot be parsed. - - - - - Returns a that contains the value of the specified variable. - - The name of the variable to be read. - The value to be returned if returns null. - - A that contains the value of the specified variable - or , if returns null. - - - - - Returns a that contains the value of the specified variable. - - The name of the variable to be read. - The value to be returned if returns null. - - If false, suppresses exceptions if the result - of cannot be parsed - and returns instead. - - A that contains the value of the specified variable - or , if cannot be parsed. - - - - - Returns a that contains the value of the specified variable. - - The name of the variable to be read. - The value to be returned if returns null. - - A that contains the value of the specified variable - or , if returns null. - - - - - Returns a that contains the value of the specified variable. - - The name of the variable to be read. - The value to be returned if returns null. - - If false, suppresses exceptions if the result - of cannot be parsed - and returns instead. - - A that contains the value of the specified variable - or , if cannot be parsed. - - - - - Returns an of type that contains the value of the specified variable. - - The name of the variable to be read. - The value to be returned if returns null. - - An of type that contains the value of the specified variable - or , if returns null. - - - - - Returns an of type that contains the value of the specified variable. - - The name of the variable to be read. - The value to be returned if returns null. - - If false, suppresses exceptions if the result - of cannot be parsed - and returns instead. - - An of type that contains the value of the specified variable - or , if cannot be parsed. - - - - - Returns a that contains the value of the specified variable. - - The name of the variable to be read. - The value to be returned if returns or . - - A that contains the value of the specified variable - or , if returns null. - - - - - Resolves placeholder values in one or more object definitions - - - The placeholder syntax follows the NAnt style: ${...}. - Placeholders values are resolved against a list of - s. In case of multiple definitions - for the same property placeholder name, the first one in the - list is used. - Variable substitution is performed on simple property values, - lists, dictionaries, sets, constructor - values, object type name, and object names in - runtime object references ( - ). - Furthermore, placeholder values can also cross-reference other - placeholders, in the manner of the following example where the - rootPath property is cross-referenced by the subPath - property. - - - - - - - - - - If a configurer cannot resolve a placeholder, and the value of the - - property is currently set to , an - - will be thrown. - - Mark Pollack - - - - The default placeholder prefix. - - - - - The default placeholder suffix. - - - - - Modify the application context's internal object factory after its - standard initialization. - - The object factory used by the application context. - -

- All object definitions will have been loaded, but no objects will have - been instantiated yet. This allows for overriding or adding properties - even to eager-initializing objects. -

-
- - In case of errors. - -
- - - Apply the property replacement using the specified s for all - object in the supplied - . - - - The - used by the application context. - - - If an error occured. - - - - - Sets the list of s that will be used to resolve placeholder names. - - A list of s. - - - - Sets that will be used to resolve placeholder names. - - A instance. - - - - The placeholder prefix (the default is ${). - - - - - - The placeholder suffix (the default is }) - - - - - - Indicates whether unresolved placeholders should be ignored. - - - - - Return the order value of this object, where a higher value means greater in - terms of sorting. - - The order value. - - - - - Context that gets passed along an object definition reading process, - encapsulating all relevant configuraiton as well as state. - - Rob Harrop - Juergen Hoeller - Mark Pollack (.NET) - - - - Initializes a new instance of the class. - - The resource. - - - - Gets the resource. - - The resource. - - - - Abstract superclass - that implements default object creation. - - -

- Provides object creation, initialization and wiring, supporting - autowiring and constructor resolution. Handles runtime object - references, managed collections, and object destruction. -

-

- The main template method to be implemented by subclasses is - , - used for autowiring by type. Note that this class does not implement object - definition registry capabilities - ( - does). -

-
- Rod Johnson - Juergen Hoeller - Rick Evans (.NET) -
- - - Abstract superclass for - implementations. - - -

- This class provides singleton / prototype determination, singleton caching, - object definition aliasing, - handling, and object definition merging for child object definitions. -

-
- Rod Johnson - Juergen Hoeller - Rick Evans (.NET) -
- - - Marker object to be temporarily registered in the singleton cache, - while instantiating an object (in order to be able to detect circular references). - - - - - The instance for this class. - - - - - Used as value in hashtable that keeps track of singleton names currently in the - process of being created. Would not be necessary if we created a case insensitive implementation of - ISet. - - - - - Creates a new instance of the - class. - - -

- This constructor implicitly creates an - - that treats the names of objects in this factory in a case-sensitive fashion. -

-

- This is an class, and as such exposes no public constructors. -

-
-
- - - Creates a new instance of the - class. - - -

- This is an class, and as such exposes no public constructors. -

-
- - if the names of objects in this factory are to be treated in a - case-sensitive fashion. - -
- - - Creates a new instance of the - class. - - -

- This is an class, and as such exposes no public constructors. -

-
- - if the names of objects in this factory are to be treated in a - case-sensitive fashion. - - - Any parent object factory; may be . - -
- - - Return an instance (possibly shared or independent) of the given object name. - - The name of the object to return. - - The the object may match. Can be an interface or - superclass of the actual class. For example, if the value is the - class, this method will succeed whatever the - class of the returned instance. - - - The arguments to use if creating a prototype using explicit arguments to - a factory method. If there is no factory method and the - supplied array is not , then - match the argument values by type and call the object's constructor. - - The instance of the object. - - If there's no such object definition. - - - If the object could not be created. - - - If the object is not of the required type. - - - If the supplied is . - - - - - - Apply the property values of the object definition with the supplied - to the supplied . - - -

- The object definition can either define a fully self-contained object, - reusing it's property values, or just property values meant to be used - for existing object instances. -

-
- - The existing object that the property values for the named object will - be applied to. - - - The name of the object definition associated with the property values that are - to be applied. - - - In case of errors. - -
- - - Create an object instance for the given object definition. - - The name of the object. - - The object definition for the object that is to be instantiated. - - - The arguments to use if creating a prototype using explicit arguments to - a static factory method. It is invalid to use a non- arguments value - in any other case. - - - Whether eager caching of singletons is allowed... typically true for - singlton objects, but never true for inner object definitions. - - - Create instance only - suppress injecting dependencies yet. - - - A new instance of the object. - - - In case of errors. - - -

- The object definition will already have been merged with the parent - definition in case of a child definition. -

-

- All the other methods in this class invoke this method, although objects - may be cached after being instantiated by this method. All object - instantiation within this class is performed by this method. -

-
-
- - - Destroy the target object. - - -

- Must destroy objects that depend on the given object before the object itself, - nor throw an exception. -

-
- - The name of the object. - - - The target object instance to destroyed. - -
- - - Does this object factory contain an object definition with the - supplied ? - - -

- Does not consider any hierarchy this factory may participate in. - Invoked by - - when no cached singleton instance is found. -

-
- - The name of the object to look for. - - - if this object factory contains an object - definition with the supplied . - -
- - - Adds the supplied (object) to this factory's - singleton cache. - - -

- To be called for eager registration of singletons, e.g. to be able to - resolve circular references. -

- - If a singleton has already been registered under the same name as - the supplied , then the old singleton will - be replaced. - -
- The name of the object. - The singleton object. - - If the argument is - or consists wholly of whitespace characters; or if the - is . - -
- - - Return the object name, stripping out the factory dereference prefix if - necessary, and resolving aliases to canonical names. - - - The transformed name of the object. - - - - - Ensures, that the given name is prefixed with - if it incidentially already starts with this prefix. This avoids troubles when dereferencing - the object name during - - - - - Determines whether the specified name is defined as an alias as opposed - to the name of an actual object definition. - - The object name to check. - - true if the specified name is alias; otherwise, false. - - - - - Return a , - even by traversing parent if the parameter is a child definition. - - - The name of the object. - - - Are ancestors to be included in the merge? - - -

- Will ask the parent object factory if not found in this instance. -

-
- - A merged - with overridden properties. - -
- - - Return a , - even by traversing parent if the parameter is a child definition. - - - A merged - with overridden properties. - - - - - Creates the root object definition. - - The template definition to base root definition on. - Root object definition. - - - - Return the registered - for the - given object, allowing access to its property values and constructor - argument values. - - The name of the object. - - The registered - . - - - If there is no object with the given name. - - - In the case of errors. - - - - - Return the registered - for the - given object, allowing access to its property values and constructor - argument values. - - The name of the object. - Whether to search parent object factories. - - The registered - . - - - If there is no object with the given name. - - - In the case of errors. - - - - - Gets the type for the given FactoryObject. - - The factory object instance to check. - the FactoryObject's object type - - - - Gets the object type for the given FactoryObject definition, as far as possible. - Only called if there is no singleton instance registered for the target object already. - - - The default implementation creates the FactoryObject via GetObject - to call its ObjectType property. Subclasses are encouraged to optimize - this, typically by just instantiating the FactoryObject but not populating it yet, - trying whether its ObjectType property already returns a type. - If no type found, a full FactoryObject creation as performed by this implementation - should be used as fallback. - - Name of the object. - The merged object definition for the object. - The type for the object if determinable, or null otherwise - - - - Predict the eventual object type (of the processed object instance) for the - specified object. - - - Does not need to handle FactoryObjects specifically, since it is only - supposed to operate on the raw object type. - This implementation is simplistic in that it is not able to - handle factory methods and InstantiationAwareBeanPostProcessors. - It only predicts the object type correctly for a standard object. - To be overridden in subclasses, applying more sophisticated type detection. - - Name of the object. - The merged object definition to determine the type for. - The type of the object, or null if not predictable - - - - Get the object for the given object instance, either the object - instance itself or its created object in case of an - . - - - The name that may include the factory dereference prefix. - - The object instance. - - The singleton instance of the object. - - - - - Obtain an object to expose from the given IFactoryObject. - - The IFactoryObject instance. - Name of the object. - The merged object definition. - The object obtained from the IFactoryObject - If IFactoryObject object creation failed. - - - - Post-process the given object that has been obtained from the FactoryObject. - The resulting object will be exposed for object references. - - The default implementation simply returns the given object - as-is. Subclasses may override this, for example, to apply - post-processors. - The instance obtained from the IFactoryObject. - Name of the object. - The object instance to expose - if any post-processing failed. - - - - Convenience method to pull an - from this factory. - - - The name of the factory object to be retrieved. If this name is not a valid - name, it will be converted - into one. - - - The associated with the - supplied . - - - - - Is the supplied a factory object dereference? - - - - - Determines whether the type of the given object definition matches the - specified target type. - - Allows for lazy load of the actual object type, provided that the - type match can be determined otherwise. - The default implementation simply delegates to the standard - ResolveObjectType method. Subclasses may override this to use - a differnt strategy. - - Name of the object (for error handling purposes). - The merged object definition to determine the type for. - Type to match against (never null). - - true if object definition matches tye specified target type; otherwise, false. - - if we failed to load the type." - - - - Resolves the type of the object for the specified object definition resolving - an object type name to a Type (if necessary) and storing the resolved Type - in the object definition for further use. - - The merged object definition to dertermine the type for. - Name of the object (for error handling purposes). - - - - - Is the object (definition) with the supplied an - ? - - The name of the object to be checked. - - the object (definition) with the supplied - an ? - - - - - Remove the object identified by the supplied - from this factory's singleton cache. - - - The name of the object that is to be removed from the singleton - cache. - - - If the argument is or - consists wholly of whitespace characters. - - - - - Return the names of objects in the singleton cache that match the given - object type (including subclasses). - - - The class or interface to match, or for all object names. - - -

- Will not consider s - as the type of their created objects is not known before instantiation. -

-

- Does not consider any hierarchy this factory may participate in. -

-
- - The names of objects in the singleton cache that match the given - object type (including subclasses), or an empty array if none. - -
- - - Determines whether the object with the given name matches the specified type. - - More specifically, check whether a GetObject call for the given name - would return an object that is assignable to the specified target type. - Translates aliases back to the corresponding canonical bean name. - Will ask the parent factory if the bean cannot be found in this factory instance. - - The name of the object to query. - Type of the target to match against. - - true if the object type matches; otherwise, false - if it doesn't match or cannot be determined yet. - - Ff there is no object with the given name - - - - - Determines the of the object with the - supplied . - - -

- More specifically, checks the of object that - would return. - For an , returns the - of object that the - creates. -

-

- Please note that (prototype) objects created via a factory method or - objects are handled - slightly differently, in that we don't want to needlessly create - instances of such objects just to determine the - of object that they create. -

-
- The name of the object to query. - - The of the object or - if not determinable. - -
- - - Determines the of the object defined - by the supplied object . - - -

- This, the default, implementation returns - to indicate that the type cannot be determined. Subclasses are - encouraged to try to determine the actual return - here, matching their strategy of resolving - factory methods in the - Spring.Objects.Factory.Support.AbstractObjectFactory.CreateObject - implementation. -

-
- - The name associated with the supplied object . - - - The - that the is to be determined for. - - - The of the object defined by the supplied - object ; or if the - cannot be determined. - -
- - - Returns the names of the objects in the singleton cache. - - -

- Does not consider any hierarchy this factory may participate in. -

-
- The names of the objects in the singleton cache. -
- - - Returns the number of objects in the singleton cache. - - -

- Does not consider any hierarchy this factory may participate in. -

-
- The number of objects in the singleton cache. -
- - - Destroys the named singleton object. - - -

- Delegates to - - if a corresponding singleton instance is found. -

-
- - The name of the singleton object that is to be destroyed. - - -
- - - Check the supplied merged object definition for any possible - validation errors. - - - The object definition to be checked for validation errors. - - - The name of the object associated with the supplied object definition. - - - The the object may match. Can be an interface or - superclass of the actual class. For example, if the value is the - class, this method will succeed whatever the - class of the returned instance. - - - The arguments to use if creating a prototype using explicit arguments to - a factory method. If there is no factory method and the - supplied array is not , then - match the argument values by type and call the object's constructor. - - - In the case of object validation errors. - - - - - Parent object factory, for object inheritance support - - - - - Dependency types to ignore on dependency check and autowire, as Set of - Type objects: for example, string. Default is none. - - - - - ObjectPostProcessors to apply in CreateObject - - - - - Indicates whether any IInstantiationAwareBeanPostProcessors have been registered - - - - - Indicates whether any IDestructionAwareBeanPostProcessors have been registered - - - - - Set of registered singletons, containing the bean names in registration order - - - - - Set that holds all inner objects created by this factory that implement the IDisposable - interface, to be destroyed on call to Dispose. - - - - - Determines whether the local object factory contains a bean of the given name, - ignoring object defined in ancestor contexts. - This is an alternative to ContainsObject, ignoring an object - of the given name from an ancestor object factory. - - The name of the object to query. - - true if objects with the specified name is defined in the local factory; otherwise, false. - - - - - Is this object a singleton? - - - - - - Determines whether the specified object name is prototype. That is, will GetObject - always return independent instances? - - The name of the object to query - - true if the specified object name will always deliver independent instances; otherwise, false. - - This method returning false does not clearly indicate a singleton object. - It indicated non-independent instances, which may correspond to a scoped object as - well. use the IsSingleton property to explicitly check for a shared - singleton instance. - Translates aliases back to the corresponding canonical object name. Will ask the - parent factory if the object can not be found in this factory instance. - - - if there is no object with the given name. - - - - Does this object factory contain an object with the given name? - - - This method does not (and it should not) check if the specified - object exists in one of the parent object factories. If it did, - message sources and event registries within application context - hierarchy would have circular references, which would cause stack - overflows during message lookup, for example. (A. Seovic) - - . - - - - Return the aliases for the given object name, if defined. - - . - - - - Return an unconfigured(!) instance (possibly shared or independent) of the given object name. - - - - This method will only instantiate the requested object. It does NOT inject any dependencies! - - - - - Return an instance (possibly shared or independent) of the given object name. - - . - - - - Return an instance (possibly shared or independent) of the given object name. - - - - - - Return an instance (possibly shared or independent) of the given object name. - - -

- This method allows an object factory to be used as a replacement for the - Singleton or Prototype design pattern. -

-

- Note that callers should retain references to returned objects. There is no - guarantee that this method will be implemented to be efficient. For example, - it may be synchronized, or may need to run an RDBMS query. -

-

- Will ask the parent factory if the object cannot be found in this factory - instance. -

-
- The name of the object to return. - - The arguments to use if creating a prototype using explicit arguments to - a static factory method. If there is no factory method and the - arguments are not null, then match the argument values by type and - call the object's constructor. - - The instance of the object. - - If there's no such object definition. - - - If the object could not be created. - - - If the supplied is . - -
- - - Return an instance (possibly shared or independent) of the given object name, - optionally injecting dependencies. - - The name of the object to return. - - The the object may match. Can be an interface or - superclass of the actual class. For example, if the value is the - class, this method will succeed whatever the - class of the returned instance. - - - The arguments to use if creating a prototype using explicit arguments to - a factory method. If there is no factory method and the - supplied array is not , then - match the argument values by type and call the object's constructor. - - whether to inject dependencies or not. - The instance of the object. - - If there's no such object definition. - - - If the object could not be created. - - - If the object is not of the required type. - - - If the supplied is . - - - - - - - Checks, if the passed instance is of the required type. - - the name of the object - the actual instance - the type contract the given instance must adhere. - the object instance passed in via (for more fluent usage) - - if is null or not assignable to . - - - - - Creates a singleton instance for the specified object name and definition. - - - The object name (will be used as the key in the singleton cache key). - - The object definition. - - The arguments to use if creating a prototype using explicit arguments to - a static factory method. If there is no factory method and the - arguments are not null, then match the argument values by type and - call the object's constructor. - - The created object instance. - - - - Injects dependencies into the supplied instance - using the named object definition. - - - - - - Injects dependencies into the supplied instance - using the supplied . - - - - - - Destroy all cached singletons in this factory. - - - - - Ignore the given dependency type for autowiring - - . - - - - Determines whether the specified object name is currently in creation.. - - Name of the object. - - true if the specified object name is currently in creation; otherwise, false. - - - - - Add a new - that will get applied to objects created by this factory. - - - The - to register. - - . - - - - Given an object name, create an alias. - - . - - - - Register the given existing object as singleton in the object factory, - under the given object name. - - . - - - - Register the given custom - for all properties of the given . - - . - - - - Does this object factory contains a singleton instance with the - supplied ? - - - - - - Tries to find a cached object for the specified name. - - Teh object name to look for. - The cached object if found, otherwise. - - - - Determines whether the given object name is already in use within this factory, - i.e. whether there is a local object or alias registered under this name or - an inner object created with this name. - - Name of the object to check. - - true if is object name in use; otherwise, false. - - - - - Returns, whether this factory treats object names case sensitive or not. - - - - - Gets the of - s - that will be applied to objects created by this factory. - - - - - Gets the set of classes that will be ignored for autowiring. - - -

- The elements of this are - s. -

-
-
- - - Returns, whether this object factory instance contains objects. - - - - - Returns, whether this object factory instance contains objects. - - - - - Gets the temporary object that is placed - into the singleton cache during object resolution. - - - - - Set that holds all inner objects created by this factory that implement the IDisposable - interface, to be destroyed on call to Dispose. - - - - - The parent object factory, or if there is none. - - - The parent object factory, or if there is none. - - - - - Return an instance (possibly shared or independent) of the given object name. - - . - - - - Returns the current number of registered - s. - - - The current number of registered - s. - - . - - - - Gets the names of singleton objects registered in this registry. - - The list of names as String array (never null). - - - Only checks already instantiated singletons; does not return names - for singleton bean definitions which have not been instantiated yet. - - - The main purpose of this method is to check manually registered singletons - . Can also be used to check which - singletons defined by an object definition have already been created. - - - - - - - - - Gets the number of singleton beans registered in this registry. - - The number of singleton objects. - - - Only checks already instantiated singletons; does not count - singleton object definitions which have not been instantiated yet. - - - The main purpose of this method is to check manually registered singletons - . Can also be used to count the number of - singletons defined by an object definition that have already been created. - - - - - - - - - Makes a distinction between sort order and object identity. - This is important when used with , since most - implementations assume Order == Identity - - - - - Handle the case when both objects have equal sort order priority. By default returns 0, - but may be overriden for handling special cases. - - The first object to compare. - The second object to compare. - - -1 if first object is less then second, 1 if it is greater, or 0 if they are equal. - - - - - The used during the invocation and - searching for of methods. - - - - - The instance for this class. - - - - - Creates a new instance of the - - class. - - -

- This is an class, and as such exposes no public constructors. -

-
- Flag specifying whether to make this object factory case sensitive or not. -
- - - Creates a new instance of the - - class. - - -

- This is an class, and as such exposes no public constructors. -

-
- Flag specifying whether to make this object factory case sensitive or not. - The parent object factory, or if none. -
- - - Predict the eventual object type (of the processed object instance) for the - specified object. - - Name of the object. - The merged object definition to determine the type for. - - The type of the object, or null if not predictable - - - - - Determines the of the object defined - by the supplied object . - - - The name associated with the supplied object . - - - The - that the is to be determined for. - - - The of the object defined by the supplied - object ; or if the - cannot be determined. - - - - - Apply the property values of the object definition with the supplied - to the supplied . - - - The existing object that the property values for the named object will - be applied to. - - - The name of the object definition associated with the property values that are - to be applied. - - - - - Apply any - s. - - -

- The returned instance may be a wrapper around the original. -

-
- - The of the object that is to be - instantiated. - - - The name of the object that is to be instantiated. - - - An instance to use in place of the original instance. - - - In case of errors. - -
- - - Apply the given property values, resolving any runtime references - to other objects in this object factory. - - - The object name passed for better exception information. - - - The definition of the named object. - - - The wrapping the target object. - - - The new property values. - - -

- Must use deep copy, so that we don't permanently modify this property. -

-
-
- - - Return an array of object-type property names that are unsatisfied. - - -

- These are probably unsatisfied references to other objects in the - factory. Does not include simple properties like primitives or - s. -

-
- - An array of object-type property names that are unsatisfied. - - - The definition of the named object. - - - The wrapping the target object. - -
- - - Destroy all cached singletons in this factory. - - -

- To be called on shutdown of a factory. -

-
-
- - - Populate the object instance in the given - with the property values from the - object definition. - - - The name of the object. - - - The definition of the named object. - - - The wrapping the target object. - - - - - Wires up any exposed events in the object instance in the given - with any event handler - values from the . - - - The name of the object. - - - The definition of the named object. - - - The wrapping the target object. - - - - - Fills in any missing property values with references to - other objects in this factory if autowire is set to - . - - - The object name to be autowired by . - - - The definition of the named object to update through autowiring. - - - The wrapping the target object (and - from which we can rip out information concerning the object). - - - The property values to register wired objects with. - - - - - Defines "autowire by type" (object properties by type) behavior. - - -

- This is like PicoContainer default, in which there must be exactly one object - of the property type in the object factory. This makes object factories simple - to configure for small namespaces, but doesn't work as well as standard Spring - behavior for bigger applications. -

-
- - The object name to be autowired by . - - - The definition of the named object to update through autowiring. - - - The wrapping the target object (and - from which we can rip out information concerning the object). - - - The property values to register wired objects with. - -
- - - Ignore the given dependency type for autowiring - - - This will typically be used by application contexts to register - dependencies that are resolved in other ways, like IOjbectFactory through - IObjectFactoryAware or IApplicationContext through IApplicationContextAware. - By default, IObjectFactoryAware and IObjectName interfaces are ignored. - For further types to ignore, invoke this method for each type. - - . - - - - Create an object instance for the given object definition. - - The name of the object. - - The object definition for the object that is to be instantiated. - - - The arguments to use if creating a prototype using explicit arguments to - a static factory method. It is invalid to use a non- arguments value - in any other case. - - - Whether eager caching of singletons is allowed... typically true for - singlton objects, but never true for inner object definitions. - - - Suppress injecting dependencies yet. - - - A new instance of the object. - - - In case of errors. - - -

- The object definition will already have been merged with the parent - definition in case of a child definition. -

-

- All the other methods in this class invoke this method, although objects - may be cached after being instantiated by this method. All object - instantiation within this class is performed by this method. -

-
-
- - - Add the created, but yet unpopulated singleton to the singleton cache - to be able to resolve circular references - - the name of the object to add to the cache. - the definition used to create and populated the object. - the raw object instance. - - Derived classes may override this method to select the right cache based on the object definition. - - - - - Remove the specified singleton from the singleton cache that has - been added before by a call to - - the name of the object to remove from the cache. - the definition used to create and populated the object. - - Derived classes may override this method to select the right cache based on the object definition. - - - - - Creates an instance from the passed in - using constructor - - The name of the object to create - used for error messages. - The describing the object to be created. - optional arguments to pass to the constructor - An wrapping the already instantiated object - - - - Instantiates the given object using its default constructor - - Name of the object. - The definition. - IObjectWrapper for the new instance - - - - Determines candidate constructors to use for the given bean, checking all registered - - - Raw type of the object. - Name of the object. - the candidate constructors, or null if none specified - In case of errors - - - - - Instantiate an object instance using a named factory method. - - -

- The method may be static, if the - parameter specifies a class, rather than a - instance, or an - instance variable on a factory object itself configured using Dependency - Injection. -

-

- Implementation requires iterating over the static or instance methods - with the name specified in the supplied - (the method may be overloaded) and trying to match with the parameters. - We don't have the types attached to constructor args, so trial and error - is the only way to go here. -

-
- - The name associated with the supplied . - - - The definition describing the instance that is to be instantiated. - - - Any arguments to the factory method that is to be invoked. - - - The result of the factory method invocation (the instance). - -
- - - "autowire constructor" (with constructor arguments by type) behaviour. - - The name of the object to autowire by type. - The object definition to update through autowiring. - The chosen candidate constructors. - The argument values passed in programmatically via the GetObject method, - or null if none (-> use constructor argument values from object definition) - - An for the new instance. - - - - Also applied if explicit constructor argument values are specified, - matching all remaining arguments with objects from the object factory. - - - This corresponds to constructor injection: in this mode, a Spring.NET - object factory is able to host components that expect constructor-based - dependency resolution. - - - - - - Perform a dependency check that all properties exposed have been set, if desired. - - -

- Dependency checks can be objects (collaborating objects), simple (primitives - and ), or all (both). -

-
- - The name of the object. - - - The definition of the named object. - - - The wrapping the target object. - - - The property values to be checked. - - - If all of the checked dependencies were not satisfied. - -
- - - Extract a filtered set of PropertyInfos from the given IObjectWrapper, excluding - ignored dependency types. - - The object wrapper the object was created with. - The filtered PropertyInfos - - - - Determine whether the given bean property is excluded from dependency checks. - This implementation excludes properties whose type matches an ignored dependency type - or which are defined by an ignored dependency interface. - - - - the of the object property - whether the object property is excluded - - - - Give an object a chance to react now all its properties are set, - and a chance to know about its owning object factory (this object). - - -

- This means checking whether the object implements - and / or - , and invoking the - necessary callback(s) if it does. -

-

- Custom init methods are resolved in a case-insensitive manner. -

-
- - The new object instance we may need to initialise. - - - The name the object has in the factory. Used for logging output. - - - The definition of the target object instance. - -
- - - Invoke the specified custom destroy method on the given object. - - -

- This implementation invokes a no-arg method if found, else checking - for a method with a single boolean argument (passing in "true", - assuming a "force" parameter), else logging an error. -

-

- Can be overridden in subclasses for custom resolution of destroy - methods with arguments. -

-

- Custom destroy methods are resolved in a case-insensitive manner. -

-
-
- - - Destroy the target object. - - -

- Must destroy objects that depend on the given object before the object itself. - Should not throw any exceptions. -

-
- - The name of the object. - - - The target object instance to destroyed. - -
- - - Destroys all of the objects registered as dependant on the - object (definition) identified by the supplied . - - - The name of the root object (definition) that is itself being destroyed. - - - - - Resolve a reference to another object in the factory. - - - The name of the object that is having the value of one of its properties resolved. - - - The definition of the named object. - - - The name of the property the value of which is being resolved. - - - The runtime reference containing the value of the property. - - A reference to another object in the factory. - - - - Find object instances that match the required . - - -

- Called by autowiring. If a subclass cannot obtain information about object - names by , a corresponding exception should be thrown. -

-
- - The of the objects to look up. - - - An of object names and object - instances that match the required , or - if none are found. - - - In case of errors. - -
- - - Return the names of the objects that depend on the given object. - Called by DestroyObject, to be able to destroy depending objects first. - - - The name of the object to find depending objects for. - - - The array of names of depending objects, or the empty string array if none. - - - In case of errors. - - - - - Injects dependencies into the supplied instance - using the named object definition. - - - The object instance that is to be so configured. - - - The name of the object definition expressing the dependencies that are to - be injected into the supplied instance. - - - - - - Injects dependencies into the supplied instance - using the supplied . - - - The object instance that is to be so configured. - - - The name of the object definition expressing the dependencies that are to - be injected into the supplied instance. - - - An object definition that should be used to configure object. - - - - - - Configures object instance by injecting dependencies, satisfying Spring lifecycle - interfaces and applying object post-processors. - - - The name of the object definition expressing the dependencies that are to - be injected into the supplied instance. - - - An object definition that should be used to configure object. - - - A wrapped object instance that is to be so configured. - - - - - - Applies the PostProcessAfterInitialization callback of all - registered IObjectPostProcessors, giving them a chance to post-process - the object obtained from IFactoryObjects (for example, to auto-proxy them) - - The instance obtained from the IFactoryObject. - Name of the object. - The object instance to expose - if any post-processing failed. - - - - Create a new object instance of the given class with the specified - autowire strategy. - - - The of the object to instantiate. - - - The desired autowiring mode. - - - Whether to perform a dependency check for objects (not applicable to - autowiring a constructor, thus ignored there). - - The new object instance. - - If the wiring fails. - - - - - - Autowire the object properties of the given object instance by name or - . - - - The existing object instance. - - - The desired autowiring mode. - - - Whether to perform a dependency check for the object. - - - If the wiring fails. - - - If the supplied is not one of the - or - - values. - - - - - - Apply s - to the given existing object instance, invoking their - - methods. - - - The existing object instance. - - - The name of the object. - - - The object instance to use, either the original or a wrapped one. - - - If any post-processing failed. - - - - - - Apply s - to the given existing object instance, invoking their - - methods. - - - The existing object instance. - - - The name of the object. - - - The object instance to use, either the original or a wrapped one. - - - If any post-processing failed. - - - - - - Resolve the specified dependency against the objects defined in this factory. - - The descriptor for the dependency. - Name of the object which declares the present dependency. - A list that all names of autowired object (used for - resolving the present dependency) are supposed to be added to. - - the resolved object, or null if none found - - if dependency resolution failed - - - - Cache of filtered PropertyInfos: object Type -> PropertyInfo array - - - - - Dependency interfaces to ignore on dependency check and autowire, as Set of - Class objects. By default, only the IObjectFactoryAware and IObjectNameAware - interfaces are ignored. - - - - - The - implementation to be used to instantiate managed objects. - - - - - An - implementation that provides some convenience support for - derived classes. - - -

- This class is reserved for internal use within the framework; it is - not intended to be used by application developers using Spring.NET. -

-
- Rick Evans -
- - - Permits the (re)implementation of an arbitrary method on a Spring.NET - IoC container managed object. - - -

- Encapsulates the notion of the Method-Injection form of Dependency - Injection. -

-

- Methods that are dependency injected with implementations of this - interface may be (but need not be) , in which - case the container will create a concrete subclass of the - class prior to instantiation. -

-

- Do not use this mechanism as a means of AOP. See the reference - manual for examples of appropriate usages of this interface. -

-
- Rod Johnson - Rick Evans (.NET) -
- - - Reimplement the supplied . - - - The instance whose is to be - (re)implemented. - - - The method that is to be (re)implemented. - - The target method's arguments. - - The result of the (re)implementation of the method call. - - - - - Creates a new instance of the - - class. - - -

- This is an class, and as such has no - publicly visible constructors. -

-
- - The object definition that is the target of the method replacement. - - - The enclosing IoC container with which the above - is associated. - - - If either of the supplied arguments is . - -
- - - Is ; derived classes must supply an implementation. - - - The instance whose is to be - (re)implemented. - - - The method that is to be (re)implemented. - - The target method's arguments. - The result of the object lookup. - - - - Helper method for subclasses to retrieve the appropriate - for the - supplied . - - - The to use to retrieve - the appropriate - . - - - The appropriate - . - - - - - Helper method for subclasses to lookup an object from an enclosing - IoC container. - - - The name of the object that is to be looked up. - - - The named object. - - - - - Common base class for object definitions, factoring out common - functionality from - and - . - - Rod Johnson - Juergen Hoeller - Rick Evans (.NET) - - - - Describes a configurable object instance, which has property values, - constructor argument values, and further information supplied by concrete - implementations. - - Rick Evans - - - - Return the property values to be applied to a new instance of the object. - - - - - Return the constructor argument values for this object. - - - - - The method overrides (if any) for this object. - - - The method overrides (if any) for this object; may be an - empty collection but is guaranteed not to be - . - - - - - Return the event handlers for any events exposed by this object. - - - - - Return a description of the resource that this object definition - came from (for the purpose of showing context in case of errors). - - - - - Is this object definition "abstract", i.e. not meant to be instantiated - itself but rather just serving as parent for concrete child object - definitions. - - - if this object definition is "abstract". - - - - - Returns the of the object definition (if any). - - - A resolved object . - - - If the of the object definition is not a - resolved or . - - - - - Returns the of the - of the object definition (if any). - - - - - Return whether this a Singleton, with a single, shared instance - returned on all calls. - - -

- If , an object factory will apply the Prototype - design pattern, with each caller requesting an instance getting an - independent instance. How this is defined will depend on the - object factory implementation. Singletons are the commoner type. -

-
-
- - - Is this object lazily initialized? - -

- Only applicable to a singleton object. -

-

- If , it will get instantiated on startup by object factories - that perform eager initialization of singletons. -

-
-
- - - The autowire mode as specified in the object definition. - - -

- This determines whether any automagical detection and setting of - object references will happen. Default is - , - which means there's no autowire. -

-
-
- - - The dependency check code. - - - - - The object names that this object depends on. - - -

- The object factory will guarantee that these objects get initialized - before. -

-

- Note that dependencies are normally expressed through object properties - or constructor arguments. This property should just be necessary for - other kinds of dependencies like statics (*ugh*) or database - preparation on startup. -

-
-
- - - The name of the initializer method. - - -

- The default is , in which case there is no initializer method. -

-
-
- - - Return the name of the destroy method. - - -

- The default is , in which case there is no destroy method. -

-
-
- - - The name of the factory method to use (if any). - - -

- This method will be invoked with constructor arguments, or with no - arguments if none are specified. The static method will be invoked on - the specified . -

-
-
- - - The name of the factory object to use (if any). - - - - - Gets or sets a value indicating whether this instance a candidate for getting autowired into some other - object. - - - true if this instance is autowire candidate; otherwise, false. - - - - - Creates a new instance of the - - class. - - -

- This is an class, and as such exposes no - public constructors. -

-
-
- - - Creates a new instance of the - - class. - - -

- This is an class, and as such exposes no - public constructors. -

-
-
- - - Creates a new instance of the - - class. - - - The object definition used to initialise the member fields of this - instance. - - -

- This is an class, and as such exposes no - public constructors. -

-
-
- - - Resolves the type of the object, resolving it from a specified - object type name if necessary. - - - A resolved instance. - - - If the type cannot be resolved. - - - - - Validate this object definition. - - - In the case of a validation failure. - - - - - Validates all - - - - - Validate the supplied . - - - The - to be validated. - - - - - Override settings in this object definition from the supplied - object definition. - - - The object definition used to override the member fields of this instance. - - - - - Returns a that represents the current - . - - - A that represents the current - . - - - - - The property values that are to be applied to the object - upon creation. - - -

- Setting the value of this property to - will merely result in a new (and empty) - - collection being assigned to the property value. -

-
- - The property values (if any) for this object; may be an - empty collection but is guaranteed not to be - . - -
- - - Does this definition have any - ? - - - if this definition has at least one - . - - - - - The constructor argument values for this object. - - -

- Setting the value of this property to - will merely result in a new (and empty) - - collection being assigned. -

-
- - The constructor argument values (if any) for this object; may be an - empty collection but is guaranteed not to be - . - -
- - - The event handler values for this object. - - -

- Setting the value of this property to - will merely result in a new (and empty) - - collection being assigned. -

-
- - The event handler values (if any) for this object; may be an - empty collection but is guaranteed not to be - . - -
- - - The method overrides (if any) for this object. - - -

- Setting the value of this property to - will merely result in a new (and empty) - - collection being assigned to the property value. -

-
- - The method overrides (if any) for this object; may be an - empty collection but is guaranteed not to be - . - -
- - - Is this definition a singleton, with - a single, shared instance returned on all calls to an enclosing - container (typically an - or - ). - - -

- If , an object factory will apply the - prototype design pattern, with each caller requesting an - instance getting an independent instance. How this is defined - will depend on the object factory implementation. singletons - are the commoner type. -

-
- -
- - - Gets a value indicating whether this instance is prototype, with an independent instance - returned for each call. - - - true if this instance is prototype; otherwise, false. - - - - - Is this object lazily initialized? - -

- Only applicable to a singleton object. -

-

- If , it will get instantiated on startup - by object factories that perform eager initialization of - singletons. -

-
-
- - - Is this object definition a "template", i.e. not meant to be instantiated - itself but rather just serving as an object definition for configuration - templates used by . - - - if this object definition is a "template". - - - - - Is this object definition "abstract", i.e. not meant to be - instantiated itself but rather just serving as a parent for concrete - child object definitions. - - - if this object definition is "abstract". - - - - - The of the object definition (if any). - - - A resolved object . - - - If the of the object definition is not a - resolved or . - - - - - - Is the of the object definition a resolved - ? - - - - - Returns the of the - of the object definition (if any). - - - - - A description of the resource that this object definition - came from (for the purpose of showing context in case of errors). - - - - - The autowire mode as specified in the object definition. - - -

- This determines whether any automagical detection and setting of - object references will happen. The default is - , - which means that no autowiring will be performed. -

-
-
- - - Gets the resolved autowire mode. - - -

- This resolves - - to one of - - or - . -

-
-
- - - The dependency checking mode. - - -

- The default is - . -

-
-
- - - The object names that this object depends on. - - -

- The object factory will guarantee that these objects get initialized - before this object definition. -

- - Dependencies are normally expressed through object properties - or constructor arguments. This property should just be necessary for - other kinds of dependencies such as statics (*ugh*) or database - preparation on startup. - -
-
- - - Gets or sets a value indicating whether this instance a candidate for getting autowired into some other - object. - - - true if this instance is autowire candidate; otherwise, false. - - - - - The name of the initializer method. - - -

- The default value is the constant, - in which case there is no initializer method. -

-
-
- - - Return the name of the destroy method. - - -

- The default value is the constant, - in which case there is no destroy method. -

-
-
- - - The name of the factory method to use (if any). - - -

- This method will be invoked with constructor arguments, or with no - arguments if none are specified. The - method will be invoked on the specified - . -

-
-
- - - The name of the factory object to use (if any). - - - - - Does this object definition have any constructor argument values? - - - if his object definition has at least one - element in it's - - property. - - - - - Abstract base class for object definition readers. - - -

- Provides common properties like the object registry to work on. -

-
- Juergen Hoeller - Rick Evans (.NET) -
- - - Simple interface for object definition readers. - - Juergen Hoeller - Rick Evans - - - - Load object definitions from the supplied . - - - The resource for the object definitions that are to be loaded. - - - The number of object definitions found - - - In the case of loading or parsing errors. - - - - - Load object definitions from the supplied . - - - The resources for the object definitions that are to be loaded. - - - The number of object definitions found - - - In the case of loading or parsing errors. - - - - - Loads the object definitions from the specified resource location. - - The resource location, to be loaded with the - IResourceLoader location . - - The number of object definitions found - - - - - Loads the object definitions from the specified resource locations. - - The the resource locations to be loaded with the - IResourceLoader of this object definition reader. - - The number of object definitions found - - - - - Gets the - - instance that this reader works on. - - - - - The against which any class names - will be resolved into instances. - - - - - The to use for anonymous - objects (wihtout explicit object name specified). - - - - - Gets the resource loader to use for resource locations. - - There is also a method - available for loading object definitions from a resource location. This is - a convenience to avoid explicit ResourceLoader handling. - The resource loader. - - - - The shared instance for this class (and derived classes). - - - - - Creates a new instance of the - - class. - - - The - instance that this reader works on. - - -

- This is an class, and as such exposes no public constructors. -

-
-
- - - Creates a new instance of the - - class. - - - The - instance that this reader works on. - - - The against which any class names - will be resolved into instances. - - -

- This is an class, and as such exposes no public constructors. -

-
-
- - - Load object definitions from the supplied . - - - The resource for the object definitions that are to be loaded. - - - The number of object definitions that were loaded. - - - In the case of loading or parsing errors. - - - - - Load object definitions from the supplied . - - - The resources for the object definitions that are to be loaded. - - - The number of object definitions found - - - In the case of loading or parsing errors. - - - - - Loads the object definitions from the specified resource location. - - The resource location, to be loaded with the - IResourceLoader location . - - The number of object definitions found - - - - - Loads the object definitions from the specified resource locations. - - The the resource locations to be loaded with the - IResourceLoader of this object definition reader. - - The number of object definitions found - - - - - Gets the - - instance that this reader works on. - - - - - The to use for anonymous - objects (wihtout explicit object name specified). - - - - - - The against which any class names - will be resolved into instances. - - - - - Gets or sets the resource loader to use for resource locations. - - The resource loader. - - - - Utility class that contains various methods useful for the implementation of - autowire-capable object factories. - - Juergen Hoeller - Rick Evans (.NET) - - - - Creates a new instance of the AutowireUtils class. - - -

- This is a utility class, and as such has no publicly - visible constructors. -

-
-
- - - Gets those s - that are applicable for autowiring the supplied . - - - The - (definition) that is being autowired by constructor. - - - The absolute minimum number of arguments that any returned constructor - must have. If this parameter is equal to zero (0), then all constructors - are valid (regardless of their argument count), including any default - constructor. - - - Those s - that are applicable for autowiring the supplied . - - - - - Determine a weight that represents the class hierarchy difference between types and - arguments. - - -

- A direct match, i.e. type MyInteger -> arg of class MyInteger, does not increase - the result - all direct matches means weight zero (0). A match between the argument type - and a MyInteger instance argument would increase the weight by - 1, due to the superclass () being one (1) steps up in the - class hierarchy being the last one that still matches the required type. -

-

- Therefore, with an argument of type , a - constructor taking a argument would be - preferred to a constructor taking an argument - which would be preferred to a constructor taking an - argument which would in turn be preferred - to a constructor taking an argument. -

-

- All argument weights get accumulated. -

-
- - The argument s to match. - - The arguments to match. - The accumulated weight for all arguments. -
- - - Algorithm that judges the match between the declared parameter types of a candidate method - and a specific list of arguments that this method is supposed to be invoked with. - - - Determines a weight that represents the class hierarchy difference between types and - arguments. The following a an example based on the Java class hierarchy for Integer. - A direct match, i.e. type Integer -> arg of class Integer, does not increase - the result - all direct matches means weight 0. A match between type Object and arg of - class Integer would increase the weight by 2, due to the superclass 2 steps up in the - hierarchy (i.e. Object) being the last one that still matches the required type Object. - Type Number and class Integer would increase the weight by 1 accordingly, due to the - superclass 1 step up the hierarchy (i.e. Number) still matching the required type Number. - Therefore, with an arg of type Integer, a constructor (Integer) would be preferred to a - constructor (Number) which would in turn be preferred to a constructor (Object). - All argument weights get accumulated. - - The param types. - The args. - - - - - Determines whether the given object property is excluded from dependency checks. - - The PropertyInfo of the object property. - - true if is excluded from dependency check; otherwise, false. - - - - - Sorts the supplied , preferring - public constructors and "greedy" ones (that have lots of arguments). - - -

- The result will contain public constructors first, with a decreasing number - of arguments, then non-public constructors, again with a decreasing number - of arguments. -

-
- - The array to be sorted. - -
- - - Determines whether the setter property is defined in any of the given interfaces. - - The PropertyInfo of the object property - The ISet of interfaces. - - true if setter property is defined in interface; otherwise, false. - - - - - Creates the autowire candidate resolver. - - A SimpleAutowireCandidateResolver - - - - Object definition for definitions that inherit settings from their - parent (object definition). - - -

- Will use the - of the parent object definition if none is specified, but can also - override it. In the latter case, the child's - - must be compatible with the parent, i.e. accept the parent's property values - and constructor argument values (if any). -

-

- A will - inherit all of the , - , and - from it's parent - object definition, with the option to add new values. If the - , - , - and / or - - properties are specified, they will override the corresponding parent settings. -

-

- The remaining settings will always be taken from the child definition: - , - , - , - , - and - -

-
- Rod Johnson - Juergen Hoeller - Rick Evans (.NET) - -
- - - Creates a new instance of the - - class. - - - The name of the parent object. - - - - - Creates a new instance of the - - class. - - - The name of the parent object. - - - The additional property values (if any) of the child. - - - - - Creates a new instance of the - - class. - - - The name of the parent object. - - - The - to be applied to a new instance of the object. - - - The additional property values (if any) of the child. - - - - - Creates a new instance of the - - class. - - - The name of the parent object. - - - The class of the object to instantiate. - - - The - to be applied to a new instance of the object. - - - The additional property values (if any) of the child. - - - - - Creates a new instance of the - - class. - - - The name of the parent object. - - - The of the object to - instantiate. - - - The - to be applied to a new instance of the object. - - - The additional property values (if any) of the child. - - - - - Validate this object definition. - - -

- A common cause of validation failures is a missing value for the - - property; by - their very nature require that the - - be set. -

-
- - In the case of a validation failure. - -
- - - A that represents the current - . - - - A that represents the current - . - - - - - The name of the parent object definition. - - -

- This value is required. -

-
- - The name of the parent object definition. - -
- - - Helper class for resolving constructors and factory methods. - Performs constructor resolution through argument matching. - - - Operates on a and an . - Used by . - - Juergen Hoeller - Mark Pollack - - - - Initializes a new instance of the class for the given factory - and instantiation strategy. - - The object factory to work with. - The object factory as IAutowireCapableObjectFactory. - The instantiation strategy for creating objects. - - - - "autowire constructor" (with constructor arguments by type) behavior. - Also applied if explicit constructor argument values are specified, - matching all remaining arguments with objects from the object factory. - - - This corresponds to constructor injection: In this mode, a Spring - object factory is able to host components that expect constructor-based - dependency resolution. - - Name of the object. - The merged object definition for the object. - The chosen chosen candidate constructors (or null if none). - The explicit argument values passed in programmatically via the getBean method, - or null if none (-> use constructor argument values from object definition) - An IObjectWrapper for the new instance - - - - Instantiate an object instance using a named factory method. - - -

- The method may be static, if the - parameter specifies a class, rather than a - instance, or an - instance variable on a factory object itself configured using Dependency - Injection. -

-

- Implementation requires iterating over the static or instance methods - with the name specified in the supplied - (the method may be overloaded) and trying to match with the parameters. - We don't have the types attached to constructor args, so trial and error - is the only way to go here. -

-
- - The name associated with the supplied . - - - The definition describing the instance that is to be instantiated. - - - Any arguments to the factory method that is to be invoked. - - - The result of the factory method invocation (the instance). - -
- - - Create an array of arguments to invoke a constructor or static factory method, - given the resolved constructor arguments values. - - When return value is null the out parameter UnsatisfiedDependencyExceptionData will contain - information for use in throwing a UnsatisfiedDependencyException by the caller. This avoids using - exceptions for flow control as in the original implementation. - - - - Resolves the - of the supplied . - - The name of the object that is being resolved by this factory. - The rod. - The wrapper. - The cargs. - Where the resolved constructor arguments will be placed. - - The minimum number of arguments that any constructor for the supplied - must have. - - -

- 'Resolve' can be taken to mean that all of the s - constructor arguments is resolved into a concrete object that can be plugged - into one of the s constructors. Runtime object - references to other objects in this (or a parent) factory are resolved, - type conversion is performed, etc. -

-

- These resolved values are plugged into the supplied - object, because we wouldn't want to touch - the s constructor arguments in case it (or any of - its constructor arguments) is a prototype object definition. -

-

- This method is also used for handling invocations of static factory methods. -

-
-
- - - Returns an array of all of those - methods exposed on the - that match the supplied criteria. - - - Methods that have this name (can be in the form of a regular expression). - - - Methods that have exactly this many arguments. - - - Methods that are static / instance. - - - The on which the methods (if any) are to be found. - - - An array of all of those - methods exposed on the - that match the supplied criteria. - - - - - Concrete implementation of the - and - - interfaces. - - -

- This class is a full-fledged object factory based on object definitions - that is usable straight out of the box. -

-

- Can be used as an object factory in and of itself, or as a superclass - for custom object factory implementations. Note that readers for - specific object definition formats are typically implemented separately - rather than as object factory subclasses. -

-

- For an alternative implementation of the - interface, - have a look at the - - class, which manages existing object instances rather than creating new - ones based on object definitions. -

-
- Juergen Hoeller - Rick Evans (.NET) - -
- - - Creates a new instance of the - class. - - - - - Creates a new instance of the - class. - - Flag specifying whether to make this object factory case sensitive or not. - - - - Creates a new instance of the - class. - - The parent object factory. - - - - Creates a new instance of the - class. - - Flag specifying whether to make this object factory case sensitive or not. - The parent object factory. - - - - Find object instances that match the . - - -

- Called by autowiring. If a subclass cannot obtain information about object - names by , a corresponding exception should be thrown. -

-
- - The type of the objects to look up. - - - An of object names and object - instances that match the , or - if none is found. - - - In case of errors. - -
- - - Return the names of the objects that depend on the given object. - - -

- Called by the - - so that dependant objects are able to be disposed of first. -

-
- - The name of the object to find depending objects for. - - - The array of names of depending objects, or the empty string array if none. - - - In case of errors. - -
- - - Check whether the specified object matches the supplied . - - The name of the object to check. - - The to check for. - - - if the object matches the supplied , - or if the supplied is . - - - - - The instance for this class. - - - - - Whether to allow re-registration of a different definition with the - same name. - - - - - The mapping of object definition objects, keyed by object name. - - - - - List of object definition names, in registration order. - - - - - Resolver to use for checking if an object definition is an autowire candidate - - - - - IDictionary from dependency type to corresponding autowired value - - - - - Check if this registry contains a object definition with the given - name. - - - The name of the object to look for. - - - if this object factory contains an object - definition with the given name. - - - - - - Register a new object definition with this registry. - - - The name of the object instance to register. - - - The definition of the object instance to register. - - - If the object definition is invalid. - - - - - - Ensure that all non-lazy-init singletons are instantiated, also - considering s. - - - If one of the singleton objects could not be created. - - - - - - Register a special dependency type with corresponding autowired value. - - Type of the dependency to register. - This will typically be a base interface such as IObjectFactory, with extensions of it resolved - as well if declared as an autowiring dependency (e.g. IListableBeanFactory), - as long as the given value actually implements the extended interface. - The autowired value. This may also be an - implementation o the interface, - which allows for lazy resolution of the actual target value. - - This is intended for factory/context references that are supposed - to be autowirable but are not defined as objects in the factory: - e.g. a dependency of type ApplicationContext resolved to the - ApplicationContext instance that the object is living in. - - Note there are no such default types registered in a plain IObjectFactory, - not even for the BeanFactory interface itself. - - - - - - Return the registered - for the - given object, allowing access to its property values and constructor - argument values. - - The name of the object. - - The registered , - or null, if specified object definitions does not exist. - - - If is null or empty string. - - - - - - Return the registered - for the - given object, allowing access to its property values and constructor - argument values. - - The name of the object. - Whether to search parent object factories. - - The registered , - or null, if specified object definitions does not exist. - - - If is null or empty string. - - - - - - Return the names of all objects defined in this factory. - - - The names of all objects defined in this factory, or an empty array if none - are defined. - - - - - - Return the names of objects matching the given - (including subclasses), judging from the object definitions. - - - The (class or interface) to match, or - for all object names. - - - The names of all objects defined in this factory, or an empty array if none - are defined. - - - - - - Return the names of objects matching the given - (including subclasses), judging from the object definitions. - - - The (class or interface) to match, or - for all object names. - - - The names of all objects defined in this factory, or an empty array if none - are defined. - - - - - - Return the names of objects matching the given - (including subclasses), judging from the object definitions. - - - The (class or interface) to match, or - for all object names. - - - Whether to include prototype objects too or just singletons (also applies to - s). - - - Whether to include s too - or just normal objects. - - - The names of all objects defined in this factory, or an empty array if none - are defined. - - - - - - Return the object instances that match the given object - (including subclasses), judging from either object - definitions or the value of - in the case of - s. - - - The (class or interface) to match. - - - A of the matching objects, - containing the object names as keys and the corresponding object instances - as values. - - - If the objects could not be created. - - - - - - Return the object instances that match the given object - (including subclasses). - - - The (class or interface) to match. - - - Whether to include prototype objects too or just singletons (also applies to - s). - - - Whether to include s too - or just normal objects. - - - An of the matching objects, - containing the object names as keys and the corresponding object instances - as values. - - - If any of the objects could not be created. - - - - - - Return the object instances that match the given object - (including subclasses). - - - The (class or interface) to match. - - - Whether to include prototype objects too or just singletons (also applies to - s). - - - Whether to include s too - or just normal objects. - - - An of the matching objects, - containing the object names as keys and the corresponding object instances - as values. - - - If any of the objects could not be created. - - - - - - Resolve the specified dependency against the objects defined in this factory. - - The descriptor for the dependency. - Name of the object which declares the present dependency. - A list that all names of autowired object (used for - resolving the present dependency) are supposed to be added to. - - the resolved object, or null if none found - - if dependency resolution failed - - - - Raises the no such object definition exception for an unresolvable dependency - - The type. - The dependency description. - The descriptor. - - - - Determines whether the specified object qualifies as an autowire candidate, - to be injected into other beans which declare a dependency of matching type. - This method checks ancestor factories as well. - - Name of the object to check. - The descriptor of the dependency to resolve. - - true if the object should be considered as an autowire candidate; otherwise, false. - - if there is no object with the given name. - - - - Determine whether the specified object definition qualifies as an autowire candidate, - to be injected into other beans which declare a dependency of matching type. - - Name of the object definition to check. - The merged object definiton to check. - The descriptor of the dependency to resolve. - - true if the object should be considered as an autowire candidate; otherwise, false. - - - - - Should object definitions registered under the same name as an - existing object definition be allowed? - - -

- If , then the new object definition will - replace (override) the existing object definition. If - , an exception will be thrown when - an attempt is made to register an object definition under the same - name as an already existing object definition. -

-

- The default is . -

-
- - is the registration of an object definition - under the same name as an existing object definition is allowed. - -
- - - Get or set custom autowire candidate resolver for this IObjectFactory to use - when deciding whether a bean definition should be considered as a - candidate for autowiring. Never null - - - - - Return the number of objects defined in this registry. - - - The number of objects defined in this registry. - - - - - - Default implementation of the - - interface. - - -

- Does not support per - loading. -

-
- Aleksandar Seovic -
- - - Central interface for factories that can create - - instances. - - -

- Allows for replaceable object definition factories using the Strategy - pattern. -

-
- Aleksandar Seovic -
- - - Factory style method for getting concrete - - instances. - - - The FullName of the of the defined object. - - The name of the parent object definition (if any). - - The against which any class names - will be resolved into instances. It can be null to register the - object class just by name. - - - An - - instance. - - - - - Factory style method for getting concrete - - instances. - - /// If no parent is specified, a RootObjectDefinition is created, otherwise a - ChildObjectDefinition. - The of the defined object. - The name of the parent object definition (if any). - The against which any class names - will be resolved into instances. - - An - - instance. - - - - - Default implementation of the interface, deleagting to - 's GenerateObjectName. - - Note that this implementation is only able to handle - subclasses such as - and - - Juergen Hoeller - Mark Pollack (.NET) - - - - Strategy interface for generating object names for object definitions - - Juergen Hoeller - Mark Pollack (.NET) - - - - Generates an object name for the given object definition. - - The object definition to generate a name for. - The object definitions registry that the given definition is - supposed to be registerd with - the generated object name - - - - Generates an object name for the given object definition. - - The object definition to generate a name for. - The object definitions registry that the given definition is - supposed to be registerd with - the generated object name - - - - An - implementation that delegates to an - that is - obtained as the result of a lookup in an associated IoC container. - - -

- This class is reserved for internal use within the framework; it is - not intended to be used by application developers using Spring.NET. -

-
- Rick Evans -
- - - Creates a new instance of the - - class. - - - The object definition that is the target of the method replacement. - - - The enclosing IoC container with which the above - is associated. - - - If either of the supplied arguments is . - - - - - Reimplements the supplied by delegating to - another - looked up in an enclosing IoC container. - - - The instance whose is to be - (re)implemented. - - - The method that is to be (re)implemented. - - The target method's arguments. - - The result of the delegated call to the looked up - . - - - - - The various modes of dependency checking. - - Rick Evans (.NET) - - - - DO not do any dependency checking. - - - - - Check object references. - - - - - Just check primitive (string, int, etc) values. - - - - - Check everything. - - - - - Strategy interface for determining whether a specific object definition - qualifies as an autowire candidate for a specific dependency. - - Mark Fisher - Juergen hoeller - Mark Pollack (.NET) - - - - Determines whether the given object definition qualifies as an - autowire candidate for the given dependency. - - The object definition including object name and aliases. - The descriptor for the target method parameter or field. - - true if the object definition qualifies as autowire candidate; otherwise, false. - - - - - Responsible for creating instances corresponding to a - . - - Rod Johnson - Rick Evans (.NET) - - - - Instantiate an instance of the object described by the supplied - from the supplied . - - - The definition of the object that is to be instantiated. - - - The name associated with the object definition. The name can be the null - or zero length string if we're autowiring an object that doesn't belong - to the supplied . - - - The owning - - - An instance of the object described by the supplied - from the supplied . - - - - - Instantiate an instance of the object described by the supplied - from the supplied . - - - The definition of the object that is to be instantiated. - - - The name associated with the object definition. The name can be the null - or zero length string if we're autowiring an object that doesn't belong - to the supplied . - - - The owning - - - The to be used to instantiate - the object. - - - Any arguments to the supplied . May be null. - - - An instance of the object described by the supplied - from the supplied . - - - - - Instantiate an instance of the object described by the supplied - from the supplied . - - - The definition of the object that is to be instantiated. - - - The name associated with the object definition. The name can be the null - or zero length string if we're autowiring an object that doesn't belong - to the supplied . - - - The owning - - - The to be used to get the object. - - - Any arguments to the supplied . May be null. - - - An instance of the object described by the supplied - from the supplied . - - - - - Denotes a special placeholder collection that may contain - s or - other placeholder objects that will need to be resolved. - - -

- 'A special placeholder collection' means that the elements of this - collection can be placeholders for objects that will be resolved later by - a Spring.NET IoC container, i.e. the elements themselves will be - resolved at runtime by the enclosing IoC container. -

-

- The core Spring.NET library already provides three implementations of this interface - straight out of the box; they are... -

- - - - . - - - - - . - - - - - . - - - -

- If you have a custom collection class (i.e. a class that either implements the - directly or derives from a class that does) - that you would like to expose as a special placeholder collection (i.e. one that can - have s as elements - that will be resolved at runtime by an appropriate Spring.NET IoC container, just - implement this interface. -

-
- -

- Lets say one has a Bag class (i.e. a collection that supports bag style semantics). -

- - using System; - - using Spring.Objects.Factory.Support; - - namespace MyNamespace - { - public sealed class Bag : ICollection - { - // ICollection implementation elided for clarity... - - public void Add(object o) - { - // implementation elided for clarity... - } - } - - public class ManagedBag : Bag, IManagedCollection - { - public ICollection Resolve( - string objectName, RootObjectDefinition definition, - string propertyName, ManagedCollectionElementResolver resolver) - { - Bag newBag = new Bag(); - string elementName = propertyName + "[bag-element]"; - foreach(object element in this) - { - object resolvedElement = resolver(objectName, definition, elementName, element); - newBag.Add(resolvedElement); - } - return newBag; - } - } - } - -
- Rick Evans -
- - - Resolves this managed collection at runtime. - - - The name of the top level object that is having the value of one of it's - collection properties resolved. - - - The definition of the named top level object. - - - The name of the property the value of which is being resolved. - - - The callback that will actually do the donkey work of resolving - this managed collection. - - A fully resolved collection. - - - - Resolves a single element value of a managed collection. - - -

- If the does not need to be resolved or - converted to an appropriate , the - will be returned as-is. -

-
- - The name of the top level object that is having the value of one of it's - collection properties resolved. - - - The definition of the named top level object. - - - The name of the property the value of which is being resolved. - - - That element of a managed collection that may need to be resolved - to a concrete value. - - A fully resolved element. -
- - - Represents an override of a method that looks up an object in the same IoC context. - - -

- Methods eligible for lookup override must not have arguments. -

-
- Rod Johnson - Rick Evans (.NET) -
- - - Represents the override of a method on a managed object by the IoC container. - - -

- Note that the override mechanism is not intended as a generic means of - inserting crosscutting code: use AOP for that. -

-
- Rod Johnson - Rick Evans (.NET) -
- - - Creates a new instance of the - class. - - -

- This is an class, and as such exposes no - public constructors. -

-
- - The name of the method that is to be overridden. - - - If the supplied is or - contains only whitespace character(s). - -
- - - Does this - match the supplied ? - - -

- By 'match' one means does this particular - - instance apply to the supplied ? -

-

- This allows for argument list checking as well as method name checking. -

-
- The method to be checked. - - if this override matches the supplied - . - -
- - - The name of the method that is to be overridden. - - - - - Is the method that is ot be injected - () - to be considered as overloaded? - - -

- If (the default), then argument type matching - will be performed (because one would not want to override the wrong - method). -

-

- Setting the value of this property to can be used - to optimize runtime performance (ever so slightly). -

-
-
- - - Creates a new instance of the - class. - - -

- Methods eligible for lookup override must not have arguments. -

-
- - The name of the method that is to be overridden. - - - The name of the object in the current IoC context that the - dependency injected method must return. - - - If either of the supplied arguments is or - contains only whitespace character(s). - -
- - - Does this - match the supplied ? - - The method to be checked. - - if this override matches the supplied . - - - If the supplied is . - - - - - A that represents the current - . - - - A that represents the current - . - - - - - The name of the object in the current IoC context that the - dependency injected method must return. - - - - - An - implementation that simply returns the result of a lookup in an - associated IoC container. - - -

- This class is Spring.NET's implementation of Dependency Lookup via - Method Injection. -

-

- This class is reserved for internal use within the framework; it is - not intended to be used by application developers using Spring.NET. -

-
- Rick Evans -
- - - Creates a new instance of the - class. - - - The object definition that is the target of the method replacement. - - - The enclosing IoC container with which the above - is associated. - - - If either of the supplied arguments is . - - - - - Reimplements the supplied by returning the - result of an object lookup in an enclosing IoC container. - - - The instance whose is to be - (re)implemented. - - - The method that is to be (re)implemented. - - The target method's arguments. - - The result of the object lookup. - - - - - Tag subclass used to hold a dictionary of managed elements. - - Juergen Hoeller - Rick Evans (.NET) - - - - Resolves this managed collection at runtime. - - - The name of the top level object that is having the value of one of it's - collection properties resolved. - - - The definition of the named top level object. - - - The name of the property the value of which is being resolved. - - - The callback that will actually do the donkey work of resolving - this managed collection. - - A fully resolved collection. - - - - Gets or sets the unresolved name for the - of the keys of this managed dictionary. - - The unresolved name for the type of the keys of this managed dictionary. - - - - Gets or sets the unresolved name for the - of the values of this managed dictionary. - - The unresolved name for the type of the values of this managed dictionary. - - - - Tag subclass used to hold a list of managed elements. - - Rod Johnson - Rick Evans (.NET) - - - - Resolves this managed collection at runtime. - - - The name of the top level object that is having the value of one of it's - collection properties resolved. - - - The definition of the named top level object. - - - The name of the property the value of which is being resolved. - - - The callback that will actually do the donkey work of resolving - this managed collection. - - A fully resolved collection. - - - - Gets or sets the unresolved name for the - of the elements of this managed list. - - The unresolved name for the type of the elements of this managed list. - - - - Tag subclass used to hold a set of managed elements. - - Juergen Hoeller - Rick Evans (.NET) - - - - Resolves this managed collection at runtime. - - - The name of the top level object that is having the value of one of it's - collection properties resolved. - - - The definition of the named top level object. - - - The name of the property the value of which is being resolved. - - - The callback that will actually do the donkey work of resolving - this managed collection. - - A fully resolved collection. - - - - Gets or sets the unresolved name for the - of the elements of this managed set. - - The unresolved name for the type of the elements of this managed set. - - - - An - implementation that supports method injection. - - -

- Classes that want to take advantage of method injection must meet some - stringent criteria. Every method that is to be method injected - must be defined as either or - . An - will be thrown if these criteria are not met. -

-
- Rick Evans -
- - - Simple object instantiation strategy for use in - implementations. - - -

- Does not support method injection, although it provides hooks for subclasses - to override to add method injection support, for example by overriding methods. -

-
- Rod Johnson - Rick Evans (.NET) - -
- - - The shared instance for this class (and derived classes). - - - - - Instantiate an instance of the object described by the supplied - from the supplied . - - - The definition of the object that is to be instantiated. - - - The name associated with the object definition. The name can be the null - or zero length string if we're autowiring an object that doesn't belong - to the supplied . - - - The owning - - - An instance of the object described by the supplied - from the supplied . - - - - - Gets the zero arg ConstructorInfo object, if the type offers such functionality. - - The type. - Zero argument ConstructorInfo - - If the type does not have a zero-arg constructor. - - - - - Instantiate an instance of the object described by the supplied - from the supplied . - - - The definition of the object that is to be instantiated. - - - The name associated with the object definition. The name can be the null - or zero length string if we're autowiring an object that doesn't belong - to the supplied . - - - The owning - - - The to be used to instantiate - the object. - - - Any arguments to the supplied . May be null. - - - An instance of the object described by the supplied - from the supplied . - - - - - Instantiate an instance of the object described by the supplied - from the supplied . - - - The definition of the object that is to be instantiated. - - - The name associated with the object definition. The name can be the null - or zero length string if we're autowiring an object that doesn't belong - to the supplied . - - - The owning - - - The to be used to get the object. - - - Any arguments to the supplied . May be null. - - - An instance of the object described by the supplied - from the supplied . - - - - - Instantiate an instance of the object described by the supplied - from the supplied , - injecting methods as appropriate. - - -

- The default implementation of this method is to throw a - . -

-

- Derived classes can override this method if they can instantiate an object - with the Method Injection specified in the supplied - . Instantiation should use a no-arg constructor. -

-
- - The definition of the object that is to be instantiated. - - - The name associated with the object definition. The name can be a - or zero length string if we're autowiring an object that - doesn't belong to the supplied . - - - The owning - - - An instance of the object described by the supplied - from the supplied . - -
- - - Instantiate an instance of the object described by the supplied - from the supplied , - injecting methods as appropriate. - - -

- The default implementation of this method is to throw a - . -

-

- Derived classes can override this method if they can instantiate an object - with the Method Injection specified in the supplied - . Instantiation should use the supplied - and attendant . -

-
- - The definition of the object that is to be instantiated. - - - The name associated with the object definition. The name can be the null - or zero length string if we're autowiring an object that doesn't belong - to the supplied . - - - The owning - - - The to be used to instantiate - the object. - - - Any arguments to the supplied . May be null. - - - An instance of the object described by the supplied - from the supplied . - -
- - - The name of the dynamic assembly that holds dynamically created code - - - - - A cache of generated instances, keyed on - the object name for which the was generated. - - - - - Instantiate an instance of the object described by the supplied - from the supplied , - injecting methods as appropriate. - - - The definition of the object that is to be instantiated. - - - The name associated with the object definition. The name can be the - or zero length string if we're autowiring an - object that doesn't belong to the supplied - . - - - The owning - - - An instance of the object described by the supplied - from the supplied . - - - - - - Instantiate an instance of the object described by the supplied - from the supplied , - injecting methods as appropriate. - - - The definition of the object that is to be instantiated. - - - The name associated with the object definition. The name can be the - or zero length string if we're autowiring an - object that doesn't belong to the supplied - . - - - The owning - - - The to be used to instantiate - the object. - - - Any arguments to the supplied . May be null. - - - An instance of the object described by the supplied - from the supplied . - - - - - - Instantiate an instance of the object described by the supplied - from the supplied , - injecting methods as appropriate. - - -

- This method dynamically generates a subclass that supports method - injection for the supplied . It then - instantiates an new instance of said type using the constructor - identified by the supplied , - passing the supplied to said - constructor. It then manually injects (generic) method replacement - and method lookup instances (of - ) into - the new instance: those methods that are 'method-injected' will - then delegate to the approriate - - instance to effect the actual method injection. -

-
- - The definition of the object that is to be instantiated. - - - The name associated with the object definition. The name can be the - or zero length string if we're autowiring an - object that doesn't belong to the supplied - . - - - The owning - - - The parameter s to use to find the - appropriate constructor to invoke. - - - The aguments that are to be passed to the appropriate constructor - when the object is being instantiated. - - - A new instance of the defined by the - supplied . - -
- - - A factory that generates subclasses of those - classes that have been configured for the Method-Injection form of - Dependency Injection. - - -

- This class is designed as for one-shot usage; i.e. it must - be used to generate exactly one method injected subclass and - then discarded (it maintains state in instance fields). -

-
-
- - - The name of the generated - property (for method replacement). - - -

- Exists so that clients of this class can use this name to set properties reflectively - on the dynamically generated subclass. -

-
-
- - - The name of the generated - property (for method lookup). - - -

- Exists so that clients of this class can use this name to set properties reflectively - on the dynamically generated subclass. -

-
-
- - - Creates a new instance of the - class. - - - The in which - the generated is to be defined. - - - The object definition that is the target of the method injection. - - - If either of the supplied arguments is . - - - - - Builds a suitable for Method-Injection. - - - A suitable for Method-Injection. - - - - - Defines overrides for those methods that are configured with an appropriate - . - - - The overarching that is defining - the generated . - - - - - Override the supplied with the logic - encapsulated by the - - defined by the supplied . - - - The builder for the subclass that is being generated. - - - The method on the superclass that is to be overridden. - - - The field defining the - - that the overridden method will delegate to to do the 'actual' - method injection logic. - - - - - Defines the parameters to the method that is being overridden. - - -

- Since we are simply overridding a method (in this method - injection context), all we do here is simply copy the - parameters (since we want a method with the exact same parameters). -

-
- - The parameters to the original method that is being overridden. - - - The builder we are using to define the new overridden method. - -
- - - Generates the MSIL for actually returning a return value if the - supplied is not - . - - - The definition of the return value; if , it - means that no return value is to required (a void - return type). - - - The to emit - the MSIL to. - - - - - Generates the MSIL for a return value if the supplied - returns a value. - - - The method to be checked. - - - The to emit - the MSIL to. - - - The return value, or if the method does not - return a value (has a void return type). - - - - - Pushes (sets up) the arguments for a call to the - - method of an appropriate - . - - - The parameters to the original method (will be bundled - up into a generic object[] and passed as the third - argument to the - - invocation. - - - The to emit - the MSIL to. - - - - - Simply generates the IL for a write only property for the - . - - - The in which the property is defined. - - - The name of the (to be) generated property. - - - The (instance) field that the property is to 'set'. - - - - - A collection (with set semantics) of method overrides, determining which, if any, - methods on a managed object the Spring.NET IoC container will override at runtime. - - Rod Johnson - Rick Evans - - - - Creates a new instance of the - class. - - - - - Creates a new instance of the - class. - - -

- Deep copy constructoe. -

-
- - The instance supplying initial overrides for this new instance. - -
- - - Copy all given method overrides into this object. - - - The overrides to be copied into this object. - - - - - Adds the supplied to the overrides contained - within this instance. - - - The to be - added. - - - - - Adds the supplied to the overloaded method names - contained within this instance. - - - The overloaded method name to be added. - - - - - Returns true if the supplied is present within - the overloaded method names contained within this instance. - - - The overloaded method name to be checked. - - - True if the supplied is present within - the overloaded method names contained within this instance. - - - - - Return the override for the given method, if any. - - - The method to check for overrides for. - - - the override for the given method, if any. - - - - - Returns an that can iterate - through a collection. - - -

- The returned is the - exposed by the - - property. -

-
- - An that can iterate through a - collection. - -
- - - The collection of method overrides. - - - - - Returns true if this instance contains no overrides. - - - - - Programmatic means of constructing a using the builder pattern. Intended primarily - for use when implementing custom namespace parsers. - - Set methods are used instead of properties, so that chaining of methods can be used to create - 'one-liner'definitions that set multiple properties at one. - Rod Johnson - Rob Harrop - Juergen Hoeller - Mark Pollack (.NET) - - - - Initializes a new instance of the class, private - to force use of factory methods. - - - - - Create a new ObjectDefinitionBuilder used to construct a root object definition. - - The object definition factory. - The type name of the object. - A new ObjectDefinitionBuilder instance. - - - - Create a new ObjectDefinitionBuilder used to construct a root object definition. - - The object definition factory. - Name of the object type. - Name of the factory method. - A new ObjectDefinitionBuilder instance. - - - - Create a new ObjectDefinitionBuilder used to construct a root object definition. - - The object definition factory. - Type of the object. - A new ObjectDefinitionBuilder instance. - - - - Create a new ObjectDefinitionBuilder used to construct a root object definition. - - The object definition factory. - Type of the object. - Name of the factory method. - A new ObjectDefinitionBuilder instance. - - - - Create a new ObjectDefinitionBuilder used to construct a child object definition.. - - The object definition factory. - Name of the parent object. - - - - - Adds the property value under the given name. - - The name. - The value. - The current ObjectDefinitionBuilder. - - - - Adds a reference to the specified object name under the property specified. - - The name. - Name of the object. - The current ObjectDefinitionBuilder. - - - - Adds an index constructor arg value. The current index is tracked internally and all addtions are - at the present point - - The constructor arg value. - The current ObjectDefinitionBuilder. - - - - Adds a reference to the named object as a constructor argument. - - Name of the object. - - - - - Sets the name of the factory method to use for this definition. - - The factory method. - The current ObjectDefinitionBuilder. - - - - Sets the name of the factory object to use for this definition. - - The factory object. - The factory method. - The current ObjectDefinitionBuilder. - - - - Sets whether or not this definition describes a singleton object. - - if set to true [singleton]. - The current ObjectDefinitionBuilder. - - - - Sets whether objects or not this definition is abstract. - - if set to true [flag]. - The current ObjectDefinitionBuilder. - - - - Sets whether objects for this definition should be lazily initialized or not. - - if set to true [lazy]. - The current ObjectDefinitionBuilder. - - - - Sets the autowire mode for this definition. - - The autowire mode. - The current ObjectDefinitionBuilder. - - - - Sets the dependency check mode for this definition. - - The dependency check. - The current ObjectDefinitionBuilder. - - - - Sets the name of the destroy method for this definition. - - Name of the method. - The current ObjectDefinitionBuilder. - - - - Sets the name of the init method for this definition. - - Name of the method. - The current ObjectDefinitionBuilder. - - - - Sets the resource description for this definition. - - The resource description. - The current ObjectDefinitionBuilder. - - - - Adds the specified object name to the list of objects that this definition depends on. - - Name of the object. - The current ObjectDefinitionBuilder. - - - - Gets the current object definition in its raw (unvalidated) form. - - The raw object definition. - - - - Validate and gets the object definition. - - The object definition. - - - - Utility methods that are useful for - - implementations. - - Juergen Hoeller - Rick Evans (.NET) - - - - - The string used as a separator in the generation of synthetic id's - for those object definitions explicitly that aren't assigned one. - - -

- If a name or parent object definition - name is not unique, "#1", "#2" etc will be appended, until such - time that the name becomes unique. -

-
-
- - - Registers the supplied with the - supplied . - - -

- This is a convenience method that registers the - - of the supplied under the - - property value of said . If the - supplied has any - , - then those aliases will also be registered with the supplied - . -

-
- - The object definition holder containing the - that - is to be registered. - - - The registry that the supplied - is to be registered with. - - - If either of the supplied arguments is . - - - If the could not be registered - with the . - -
- - - Generates an object definition name for the supplied - that is guaranteed to be unique - within the scope of the supplied . - - The - that requires a generated name. - The - - that the supplied is to be - registered with (needed so that the uniqueness of any generated - name can be guaranteed). - if set to true if the given object - definition will be registed as an inner object or as a top level objener objects - verses top level objects. - - An object definition name for the supplied - that is guaranteed to be unique - within the scope of the supplied and - never . - - - If either of the or - arguments is . - - - If a unique name cannot be generated. - - - - - Generates the name of the object for a top-level object definition unique within the given object factory. - - The object definition to generate an object name for. - The registry to check for existing names. - The generated object name - if no unique name can be generated for the given - object definition - - - - Factory method for getting concrete - instances. - - - The name of the event handler method. This may be straight text, a regular - expression, , or empty. - - - The name of the event being wired. This too may be straight text, a regular - expression, , or empty. - - - A concrete - instance. - - - - - Creates a new instance of the - class. - - -

- This is a utility class, and as such exposes no public constructors. -

-
-
- - - Thrown when the validation of an object definition failed. - - Juergen Hoeller - Rick Evans (.NET) - - - - Creates a new instance of the - - class. - - - - - Creates a new instance of the - - class. - - The detail message. - - - - Creates a new instance of the - - class. - - - The detail message. - - - The root exception that is being wrapped. - - - - - Creates a new instance of the ObjectDefinitionValidationException class. - - - The - that holds the serialized object data about the exception being thrown. - - - The - that contains contextual information about the source or destination. - - - - - Helper class for use in object factory implementations, - resolving values contained in object definition objects - into the actual values applied to the target object instance. - - - Used by . - - Juergen Hoeller - Mark Pollack (.NET) - - - - Initializes a new instance of the class. - - The object factory. - Name of the object. - The object definition. - - - - Given a property value, return a value, resolving any references to other - objects in the factory if necessary. - - -

- The value could be : - - -

- An , - which leads to the creation of a corresponding new object instance. - Singleton flags and names of such "inner objects" are always ignored: inner objects - are anonymous prototypes. -

- - -

- A , which must - be resolved. -

-
- -

- An . This is a - special placeholder collection that may contain - s or - collections that will need to be resolved. -

-
- -

- An ordinary object or , in which case it's left alone. -

-
- -

-
- - The name of the object that is having the value of one of its properties resolved. - - - The definition of the named object. - - - The name of the property the value of which is being resolved. - - - The value of the property that is being resolved. - -
- - - Resolve the target type of the passed . - - The who's target type is to be resolved - The resolved target type, if any. otherwise. - - - - Resolves an inner object definition. - - - The name of the object that surrounds this inner object definition. - - - The name of the inner object definition... note: this is a synthetic - name assigned by the factory (since it makes no sense for inner object - definitions to have names). - - - The name of the property the value of which is being resolved. - - - The definition of the inner object that is to be resolved. - - - if the owner of the property is a singleton. - - - The resolved object as defined by the inner object definition. - - - - - Checks the given bean name whether it is unique. If not already unique, - a counter is added, increasing the counter until the name is unique. - - Original Name of the inner object. - The Adapted name for the inner object - - - - Resolve a reference to another object in the factory. - - - The name of the object that is having the value of one of its properties resolved. - - - The definition of the named object. - - - The name of the property the value of which is being resolved. - - - The runtime reference containing the value of the property. - - A reference to another object in the factory. - - - - Object definition reader for a simple properties format. - - - Provides object definition registration methods for - and - instances. Typically applied to a - . - - Rod Johnson - Juergen Hoeller - Simon White (.NET) - - - - Value of a T/F attribute that represents true. - Anything else represents false. Case seNsItive. - - - - - Separator between object name and property name. - - - - - Prefix for the class property of a root object definition. - - - - - Special string added to distinguish if the object will be - a singleton. - - -

- Default is true. -

-
- -

- owner.(singleton)=true -

-
-
- - - Special string added to distinguish if the object will be - lazily initialised. - - -

- Default is false. -

-
- -

- owner.(lazy-init)=true -

-
-
- - - Reserved "property" to indicate the parent of a child object definition. - - - - - Property suffix for references to other objects in the current - : e.g. - owner.dog(ref)=fido. - - -

- Whether this is a reference to a singleton or a prototype - will depend on the definition of the target object. -

-
-
- - - Prefix before values referencing other objects. - - - - - Creates a new instance of the - - class. - - - The - instance that this reader works on. - - - - - Load object definitions from the supplied . - - - The resource for the object definitions that are to be loaded. - - - The number of object definitions that were loaded. - - - In the case of loading or parsing errors. - - - - - Load object definitions from the specified properties file. - - - The resource descriptor for the properties file. - - - The match or filter for object definition names, e.g. 'objects.' - - in case of loading or parsing errors - the number of object definitions found - - - - Register object definitions contained in a - , using all property keys (i.e. - not filtering by prefix). - - - The containing object definitions. - - - In case of loading or parsing errors. - - The number of object definitions registered. - - - - Register object definitions contained in a - . - - -

- Similar syntax as for an . - This method is useful to enable standard .NET internationalization support. -

-
- - The containing object definitions. - - - The match or filter for object definition names, e.g. 'objects.' - - - In case of loading or parsing errors. - - The number of object definitions registered. -
- - - Register object definitions contained in an - , using all property keys - (i.e. not filtering by prefix). - - - The containing object definitions. - - - In case of loading or parsing errors. - - The number of object definitions registered. - - - - Registers object definitions contained in an - using all property keys ( i.e. not filtering by prefix ) - - The containing - object definitions. - - - In case of loading or parsing errors. - - The number of object definitions registered. - - - - Register object definitions contained in a - . - - -

- Ignores ineligible properties. -

-
- IDictionary name -> property (String or Object). Property values - will be strings if coming from a Properties file etc. Property names - (keys) must be strings. Type keys must be strings. - - - The match or filter within the keys in the map: e.g. 'objects.' - - - In case of loading or parsing errors. - - The number of object definitions found. -
- - - Register object definitions contained in a - . - - -

- Ignores ineligible properties. -

-
- IDictionary name -> property (String or Object). Property values - will be strings if coming from a Properties file etc. Property names - (keys) must be strings. Type keys must be strings. - - - The match or filter within the keys in the map: e.g. 'objects.' - - - The description of the resource that the - came from (for logging purposes). - - - In case of loading or parsing errors. - - The number of object definitions found. -
- - - Get all property values, given a prefix (which will be stripped) - and add the object they define to the factory with the given name - - The name of the object to define. - - The containing string pairs. - - The prefix of each entry, which will be stripped. - - The description of the resource that the - came from (for logging purposes). - - - In case of loading or parsing errors. - - - - - Name of default parent object - - - - - Gets or sets object definition factory to use. - - - - - Represents the replacement of a method on a managed object by the IoC - container. - - -

- Note that this mechanism is not intended as a generic means of - inserting crosscutting code: use AOP for that. -

-
- Rod Johnson - Rick Evans (.NET) -
- - - Creates a new instance of the - class. - - - The name of the method that is to be overridden. - - - The object name of the - instance in the surrounding IoC container. - - - If either of the supplied arguments is or - contains only whitespace character(s). - - - - - Add a fragment of a instance's - such as 'Exception or System.Excep to identify an argument - for a dependency injected method. - - - A (sub) string of a instance's . - - - If the supplied is or - contains only whitespace character(s). - - - - - - Does this - match the supplied ? - - The method to be checked. - - if this override matches the supplied . - - - If the supplied is . - - - - - A that represents the current - . - - - A that represents the current - . - - - - - The object name of the - instance in the surrounding IoC container. - - - - - A plain-vanilla object definition. - - -

- This is the most common type of object definition; - instances - do not derive from a parent - , and usually - (but not always - see below) have an - - and (optionally) some - and - . -

-

- Note that - instances do not have to specify an - : - This can be useful for deriving - instances - from such definitions, each with it's own - , - inheriting common property values and other settings from the parent. -

-
- Rod Johnson - Juergen Hoeller - Rick Evans (.NET) - -
- - - Creates a new instance of the - class. - - - - - Creates a new instance of the - - class. - - - The of the object to instantiate. - - - - - Creates a new instance of the - - class. - - - The of the object to instantiate. - - - if this object definition defines a singleton object. - - - - - Creates a new instance of the - class - for a singleton, providing property values and constructor arguments. - - - The of the object to instantiate. - - - The - to be applied to a new instance of the object. - - - The to be applied to - a new instance of the object. - - - - - Creates a new instance of the - class - for a singleton using the supplied - . - - - The of the object to instantiate. - - - The autowiring mode. - - - - - Creates a new instance of the - class - for a singleton using the supplied - . - - - The of the object to instantiate. - - - The autowiring mode. - - - Whether to perform a dependency check for objects (not - applicable to autowiring a constructor, thus ignored there) - - - - - Creates a new instance of the - class - with the given singleton status, providing property values. - - - The of the object to instantiate. - - - The to be applied to - a new instance of the object. - - - - - Creates a new instance of the - class - with the given singleton status, providing property values. - - - The of the object to instantiate. - - - The to be applied to - a new instance of the object. - - - if this object definition defines a singleton object. - - - - - Creates a new instance of the - class - for a singleton, providing property values and constructor arguments. - - -

- Takes an object class name to avoid eager loading of the object class. -

-
- - The assembly qualified of the object to instantiate. - - - The to be applied to - a new instance of the object. - - - The - to be applied to a new instance of the object. - -
- - - Creates a new instance of the - class. - - -

- Deep copy constructor. -

-
- - The definition that is to be copied. - -
- - - Validate this object definition. - - - In the case of a validation failure. - - - - - A that represents the current - . - - - A that represents the current - . - - - - - A implementation to use that checks - the object definitions only (no attributes) - - Mark Fisher - Mark Pollack (.NET) - - - - Determines whether the given object definition qualifies as an - autowire candidate for the given dependency. - - The object definition including object name and aliases. - The descriptor for the target method parameter or field. - - true if the object definition qualifies as autowire candidate; otherwise, false. - - - - - Static factory that permits the registration of existing singleton instances. - - -

- Does not have support for prototype objects, aliases, and post startup object - configuration. -

-

- Serves as a simple example implementation of the - interface, that manages existing object instances as opposed to creating new ones - based on object definitions. -

-

- The - method is not supported by this class; this class deals exclusively with - existing singleton instances, thus the methods mentioned previously make little sense in this context. -

-
- Rod Johnson - Juergen Hoeller - Simon White (.NET) -
- - - Map from object name to object instance. - - - - - This method is not supported by . - - - - - - Return an instance of the given object name. - - The name of the object to return. - The instance of the object. - - is not currently supported. - - - - - - Return an instance (possibly shared or independent) of the given object name. - - -

- This method allows an object factory to be used as a replacement for the - Singleton or Prototype design pattern. -

-

- Note that callers should retain references to returned objects. There is no - guarantee that this method will be implemented to be efficient. For example, - it may be synchronized, or may need to run an RDBMS query. -

-

- Will ask the parent factory if the object cannot be found in this factory - instance. -

-
- The name of the object to return. - - The arguments to use if creating a prototype using explicit arguments to - a static factory method. If there is no factory method and the - arguments are not null, then match the argument values by type and - call the object's constructor. - - The instance of the object. - - If there's no such object definition. - - - If the object could not be created. - - - If the supplied is . - -
- - - Return an instance (possibly shared or independent) of the given object name. - - The name of the object to return. - - The the object may match. Can be an interface or - superclass of the actual class. For example, if the value is the - class, this method will succeed whatever the - class of the returned instance. - - - The arguments to use if creating a prototype using explicit arguments to - a factory method. If there is no factory method and the - supplied array is not , then - match the argument values by type and call the object's constructor. - - The instance of the object. - - If there's no such object definition. - - - If the object could not be created. - - - If the object is not of the required type. - - - If the supplied is . - - - - - - Return an instance of the given object name. - - The name of the object to return. - - the object may match. Can be an interface or - superclass of the actual class. For example, if the value is the - class, this method will succeed whatever the - class of the returned instance. - - The instance of the object. - - - - - Does this object factory contain an object with the given name? - - The name of the object to query. - True if an object with the given name is defined. - - - - Is this object a singleton? - - -

- That is, will - or - always return the same object? -

-
- The name of the object to query. - True if the named object is a singleton. - - If there's no such object definition. - -
- - - Determines whether the specified object name is prototype. That is, will GetObject - always return independent instances? - - This method returning false does not clearly indicate a singleton object. - It indicated non-independent instances, which may correspond to a scoped object as - well. use the IsSingleton property to explicitly check for a shared - singleton instance. - Translates aliases back to the corresponding canonical object name. Will ask the - parent factory if the object can not be found in this factory instance. - - - - The name of the object to query - - true if the specified object name will always deliver independent instances; otherwise, false. - - if there is no object with the given name. - - - - Determine the type of the object with the given name. - - -

- More specifically, checks the type of object that - would return. - For an , returns the type - of object that the creates. -

-
- The name of the object to query. - - The of the object or if - not determinable. - -
- - - Determines whether the object with the given name matches the specified type. - - The name of the object to query. - Type of the target to match against. - - true if the object type matches; otherwise, false - if it doesn't match or cannot be determined yet. - - Ff there is no object with the given name - - - - - Return the aliases for the given object name, if defined. - - The object name to check for aliases. - The aliases, or an empty array if none. - - If there's no such object definition. - - - - - Not supported. - - The name of the object. - - The registered - . - - - Always, as object definitions are not supported by this - implementation. - - - - - Return the registered - for the - given object, allowing access to its property values and constructor - argument values. - - The name of the object. - Whether to search parent object factories. - - The registered - . - - - If there is no object with the given name. - - - In the case of errors. - - - - - Return the names of all objects defined in this factory. - - - The names of all objects defined in this factory, or an empty array if none - are defined. - - - - - Return the names of objects matching the given - (including subclasses), judging from the object definitions. - - - The (class or interface) to match, or - for all object names. - - -

- Will not consider s, - as the type of their created objects is not known before instantiation. -

-
- - The names of all objects defined in this factory, or an empty array if none - are defined. - -
- - - Return the names of objects matching the given - (including subclasses), judging from the object definitions. - - - The (class or interface) to match, or - for all object names. - - -

- Does consider objects created by s, - or rather it considers the type of objects created by - (which means that - s will be instantiated). -

-

- Does not consider any hierarchy this factory may participate in. -

-
- - The names of all objects defined in this factory, or an empty array if none - are defined. - -
- - - Return the names of objects matching the given - (including subclasses), judging from the object definitions. - - -

- Since this implementation of the - - interface does not support the notion of ptototype objects, the - parameter is ignored. -

-
- - The (class or interface) to match, or - for all object names. - - - Whether to include prototype objects too or just singletons (also applies to - s). Ignored. - - - Whether to include s too - or just normal objects. - - - The names of all objects defined in this factory, or an empty array if none - are defined. - - -
- - - Tests whether this object factory contains an object definition for the - specified object name. - - The object name to query. - - True if an object defintion is contained within this object factory. - - - - - Return the object instances that match the given object - (including subclasses), judging from either object - definitions or the value of - in the case of - s. - - -

- This version of the - method matches all kinds of object definitions, be they singletons, prototypes, or - s. Typically, the results - of this method call will be the same as a call to - IListableObjectFactory.GetObjectsOfType(type,true,true) . -

-
- - The (class or interface) to match. - - - A of the matching objects, - containing the object names as keys and the corresponding object instances - as values. - - - If the objects could not be created. - -
- - - Return the object instances that match the given object - (including subclasses), judging from either object - definitions or the value of - in the case of - s. - - - The (class or interface) to match. - - - Whether to include prototype objects too or just singletons (also applies to - s). - - - Whether to include s too - or just normal objects. - - - A of the matching objects, - containing the object names as keys and the corresponding object instances - as values. - - - If the objects could not be created. - - - - - Add a new singleton object. - - - The name to be associated with the object name. - - The singleton object. - - - - Injects dependencies into the supplied instance - using the named object definition. - - - The object instance that is to be so configured. - - - The name of the object definition expressing the dependencies that are to - be injected into the supplied instance. - - - This feature is not currently supported. - - - - - - Injects dependencies into the supplied instance - using the supplied . - - - The object instance that is to be so configured. - - - The name of the object definition expressing the dependencies that are to - be injected into the supplied instance. - - - An object definition that should be used to configure object. - - - - - - Defines a method to release allocated unmanaged resources. - - - - - Return the number of objects defined in the factory. - - - The number of objects defined in the factory. - - - - - Return an instance of the given object name. - - The name of the object to return. - The instance of the object. - - - - - Abstract implementation providing - a number of convenience methods and a - template method - that subclasses must override to provide the actual parsing logic. - - - Use this implementation when you want - to parse some arbitrarily complex XML into one or more - ObjectDefinitions. If you just want to parse some - XML into a single IObjectDefinition, you may wish to consider - the simpler convenience extensions of this class, namely - and - - - Rob Harrop - Juergen Hoeller - Rick Evans - Mark Pollack (.NET) - - - - Interface used to handle custom, top-level tags. - - Implementations are free to turn the metadata in the custom tag into as - many as required. - - Rob Harrop - Mark Pollack (.NET) - - - - Parse the specified XmlElement and register the resulting - ObjectDefinitions with the IObjectDefinitionRegistry - embedded in the supplied - - -

- This method is never invoked if the parser is namespace aware - and was called to process the root node. -

-
- - The element to be parsed. - - - TThe object encapsulating the current state of the parsing process. - Provides access to a IObjectDefinitionRegistry - - - The primary object definition. - -
- - - Constant for the ID attribute - - - - - Parse the specified XmlElement and register the resulting - ObjectDefinitions with the IObjectDefinitionRegistry - embedded in the supplied - - The element to be parsed. - TThe object encapsulating the current state of the parsing process. - Provides access to a IObjectDefinitionRegistry - The primary object definition. - -

- This method is never invoked if the parser is namespace aware - and was called to process the root node. -

-
-
- - - Resolves the ID for the supplied . - - - When using generation, a name is generated automatically. - Otherwise, the ID is extracted from the "id" attribute, potentially with a - fallback to a generated id. - - The element that the object definition has been built from. - The object definition to be registered. - The the object encapsulating the current state of the parsing process; - provides access to a - the resolved id - - if no unique name could be generated for the given object definition - - - - - Registers the supplied with the supplied - . - - Subclasses can override this method to control whether or not the supplied - is actually even registered, or to - register even more objects. - - The default implementation registers the supplied - with the supplied only if the IsNested - parameter is false, because one typically does not want inner objects - to be registered as top level objects. - - - - The object definition to be registered. - The registry that the bean is to be registered with. - - - - Central template method to actually parse the supplied XmlElement - into one or more IObjectDefinitions. - - The element that is to be parsed into one or more s - The the object encapsulating the current state of the parsing process; - provides access to a - The primary IObjectDefinition resulting from the parsing of the supplied XmlElement - - - - Gets a value indicating whether an ID should be generated instead of read - from the passed in XmlElement. - - Note that this flag is about always generating an ID; the parser - won't even check for an "id" attribute in this case. - - true if should generate id; otherwise, false. - - - - Gets a value indicating whether an ID should be generated instead if the - passed in XmlElement does not specify an "id" attribute explicitly. - - Disabled by default; subclasses can override this to enable ID generation - as fallback: The parser will first check for an "id" attribute in this case, - only falling back to a generated ID if no value was specified. - - true if should generate id if no value was specified; otherwise, false. - - - - - Convenient base class for when there exists a one-to-one mapping - between attribute names on the element that is to be parsed and - the property names on the Type being configured. - - - - - Mark Pollack - - - - Base Type for those implementations that - need to parse and define just a single IObjectDefinition. - - - Extend this parser Type when you want to create a single object definition - from an arbitrarily complex XML element. You may wish to consider extending - the when you want to create a - single Object definition from a relatively simple custom XML element. - The resulting ObjectDefinition will be automatically registered - with the ObjectDefinitionRegistry. Your job simply is to parse the - custom XML element into a single ObjectDefinition - - Rob Harrop - Juergen Hoeller - Rick Evans - Mark Pollack (.NET) - - - - Central template method to actually parse the supplied XmlElement - into one or more IObjectDefinitions. - - The element that is to be parsed into one or more s - The the object encapsulating the current state of the parsing process; - provides access to a - - The primary IObjectDefinition resulting from the parsing of the supplied XmlElement - - - - - Gets the type of the object corresponding to the supplied XmlElement. - - Note that, for application classes, it is generally preferable to override - GetObjectTypeName instad, in order to avoid a direct - dependence on the object implementation class. The ObjectDefinitionParser - and its IXmlObjectDefinitionParser (namespace parser) can be used within an - IDE add-in then, even if the application classses are not available in the add-ins - AppDomain. - - The element. - The Type of the class that is being defined via parsing the supplied - Element. - - - - Gets the name of the object type name (FullName) corresponding to the supplied XmlElement. - - The element. - The type name of the object that is being defined via parsing the supplied - XmlElement. - - - - Parse the supplied XmlElement and populate the supplied ObjectDefinitionBuilder as required. - - The default implementation delegates to the DoParse version without - ParameterContext argument. - The element. - The parser context. - The builder used to define the IObjectDefinition. - - - - Parse the supplied XmlElement and populate the supplied ObjectDefinitionBuilder as required. - - The default implementation does nothing. - The element. - The builder used to define the IObjectDefinition. - - - - XML resource reader. - - -

- Navigates through an XML resource and invokes parsers registered - with the . -

-
- Rod Johnson - Juergen Hoeller - Rick Evans (.NET) -
- - - SPI for parsing an XML document that contains Spring object definitions. - Used by for actually parsing a DOM - document. - - Instantiated per document to parse: Implementations can hold state in - instance variables during the execution of the RegisterObjectDefinitions - method, for example global settings that are defined for all object definitions - in the document. - - Juergen Hoeller - Rob Harrop - Mark Pollack (.NET) - - - - - Read object definitions from the given DOM element, and register - them with the given object registry. - - The DOM element containing object definitions, usually the - root (document) element. - The current context of the reader. Includes - the resource being parsed - - The number of object definitions that were loaded. - - - In case of parsing errors. - - - - - The shared instance for this class (and derived classes). - - - - - Creates a new instance of the DefaultObjectDefinitionDocumentReader class. - - - - - Read object definitions from the given DOM element, and register - them with the given object registry. - - The DOM element containing object definitions, usually the - root (document) element. - The current context of the reader. Includes - the resource being parsed - - The number of object definitions that were loaded. - - - In case of parsing errors. - - - - - Parses object definitions starting at the given - using the passed . - - The root element to start parsing from. - The instance to use. - - in case an error happens during parsing and registering object definitions - - - - - Loads external XML object definitions from the resource described by the supplied - . - - The XML element describing the resource. - - If the resource could not be imported. - - - - - Parses the given alias element, registering the alias with the registry. - - The alias element. - The registry. - - - - Parse an object definition and register it with the object factory.. - - The element containing the object definition. - The helper. - - - - - - Allow the XML to be extensible by processing any custom element types last, - after we finished processing the objct definitions. This method is a natural - extension point for any other custom post-processing of the XML. - - The default implementation is empty. Subclasses can override this method to - convert custom elements into standard Spring object definitions, for example. - Implementors have access to the parser's object definition reader and the - underlying XML resource, through the corresponding properties. - - - The root. - - - - Allow the XML to be extensible by processing any custom element types first, - before we start to process the object definitions. - - This method is a natural - extension point for any other custom pre-processing of the XML. -

The default implementation is empty. Subclasses can override this method to - convert custom elements into standard Spring object definitions, for example. - Implementors have access to the parser's object definition reader and the - underlying XML resource, through the corresponding properties. -

-
- The root element of the XML document. -
- - - Creates an instance for the given and element. - - the to create the - the root to start reading from - a new instance - - - - Gets the reader context. - - The reader context. - - - - Simple class that holds the defaults specified at the <objects> - level in a standard Spring XML object definition document: - default-lazy-init, default-autowire, etc. - - Juergen Hoeller - Mark Pollack (.NET) - - - - Gets or sets the autowire setting for the document that's currently parsed. - - The autowire. - - - - Gets or sets the dependency-check setting for the document that's currently parsed - - The dependency check. - - - - Gets or sets the lazy-init flag for the document that's currently parsed. - - The lazy init. - - - - Strategy interface for parsing XML object definitions. - - -

- Used by - for actually parsing a DOM document or - fragment. -

-
- Juergen Hoeller - Rick Evans (.NET) - Sandu Turcan (.NET) -
- - - Invoked by after construction but before any - elements have been parsed. - - - - - Parse the specified element and register any resulting - IObjectDefinitions with the IObjectDefinitionRegistry that is - embedded in the supplied ParserContext. - - - Implementations should return the primary IObjectDefinition - that results from the parse phase if they wish to used nested - inside (for example) a <property> tag. - Implementations may return null if they will not - be used in a nested scenario. - - - The element to be parsed into one or more IObjectDefinitions - The object encapsulating the current state of the parsing - process. - - The primary IObjectDefinition (can be null as explained above) - - - - - Parse the specified XmlNode and decorate the supplied ObjectDefinitionHolder, - returning the decorated definition. - - The XmlNode may either be an XmlAttribute or an XmlElement, depending on - whether a custom attribute or element is being parsed. - Implementations may choose to return a completely new definition, - which will replace the original definition in the resulting IApplicationContext/IObjectFactory. - - The supplied ParserContext can be used to register any additional objects needed to support - the main definition. - - The source element or attribute that is to be parsed. - The current object definition. - The object encapsulating the current state of the parsing - process. - The decorated definition (to be registered in the IApplicationContext/IObjectFactory), - or simply the original object definition if no decoration is required. A null value is strickly - speaking invalid, but will leniently treated like the case where the original object definition - gets returned. - - - - Attribute that should be used to specify the default namespace - and schema location for a custom namespace parser. - - Aleksandar Seovic - - - - Creates a new instance of . - - - - - Gets or sets the default namespace for the configuration parser. - - - The default namespace for the configuration parser. - - - - - Gets or sets the default schema location for the configuration parser. - - - The default schema location for the configuration parser. - - - If the property is set, the will always resolve to an assembly-resource - and the set will be interpreted relative to this assembly. - - - - - Gets or sets a type from the assembly containing the schema - - - If this property is set, the will always resolve to an assembly-resource - and the will be interpreted relative to this assembly. - - - - - Provides a resolution mechanism for configuration parsers. - - -

- The uses this registry - class to find the parser handling a specific namespace. -

-
- Aleksandar Seovic -
- - - Name of the .Net config section that contains definitions - for custom config parsers. - - - - - Creates a new instance of the NamespaceParserRegistry class. - - - - - Reset the list of registered parsers to "factory"-setting - - use for unit tests only - - - - Registers the type for wellknown namespaces - - true if the parser could be registered, false otherwise - - - - Constructs a "assembly://..." qualified schemaLocation url using the given type - to obtain the assembly name. - - - - - Returns a parser for the given namespace. - - - The namespace for which to lookup the parser implementation. - - - A parser for a given , or - if no parser was found. - - - - - Returns a schema collection containing validation schemas for all registered parsers. - - - A schema collection containing validation schemas for all registered parsers. - - - - - Pegisters parser, using default namespace and schema location - as defined by the . - - - The of the parser that will be activated - when an element in its default namespace is encountered. - - - If is . - - - - - Associates a parser with a namespace. - - - - Parsers registered with the same as that - of a parser that has previously been registered will overwrite the existing - parser. - - - - The of the parser that will be activated - when the attendant is - encountered. - - - The namespace with which to associate instance of the parser. - - - The location of the XML schema that should be used for validation - of the XML elements that belong to the specified namespace - (can be any valid Spring.NET resource URI). - - - If the is not a - that implements the - interface. - - - If is . - - - - - Pegisters parser, using default namespace and schema location - as defined by the . - - - The parser instance. - - - If is . - - - - - Associates a parser with a namespace. - - - - Parsers registered with the same as that - of a parser that has previously been registered will overwrite the existing - parser. - - - - The namespace with which to associate instance of the parser. - - - The parser instance. - - - The location of the XML schema that should be used for validation - of the XML elements that belong to the specified namespace - (can be any valid Spring.NET resource URI). - - - If is , or if - is not specified and parser class - does not have default value defined using . - - - - - Register a schema as well-known - - - - - - - Returns default values for the parser namespace and schema location as - defined by the . - - - A parser instance. - - - A instance containing - default values for the parser namsepace and schema location - - - - - Resolves xml entities by using the infrastructure. - - - - - Support class for implementing custom namespace parsers. - - Parsing of individual elements is done via a ObjectDefintionParser. - Provides the RegisterObjectDefinitionParser for registering a ObjectDefintionParser - to handle a specific element. - Rob Harrop - Juergen Hoeller - Mark Pollack (.NET) - - - - Invoked by after construction but before any - elements have been parsed. - - - - - Parses an element under the root node, typically - an object definition or import statement. - - - The element to be parsed. - - - The parser context. - - - The number of object defintions created from this element. - - - - - Parse the specified XmlNode and decorate the supplied ObjectDefinitionHolder, - returning the decorated definition. - - The XmlNode may either be an XmlAttribute or an XmlElement, depending on - whether a custom attribute or element is being parsed. - Implementations may choose to return a completely new definition, - which will replace the original definition in the resulting IApplicationContext/IObjectFactory. - - The supplied ParserContext can be used to register any additional objects needed to support - the main definition. - - The source element or attribute that is to be parsed. - The current object definition. - The object encapsulating the current state of the parsing - process. - The decorated definition (to be registered in the IApplicationContext/IObjectFactory), - or simply the original object definition if no decoration is required. A null value is strickly - speaking invalid, but will leniently treated like the case where the original object definition - gets returned. - - - - Register the specified for the given - - - - - Constants defining the structure and values associated with the - Spring.NET XML object definition format. - - Rod Johnson - Juergen Hoeller - Rick Evans (.NET) - - - - Value of a boolean attribute that represents - . - - -

- Anything else represents . -

-
-
- - - Signifies that a default value is to be applied. - - - - - Defines an external XML object definition resource. - - - - - Specifies the relative path to an external XML object definition - resource. - - - - - Defines an alias for an object definition. - - - - - Specifies the alias of an object definition. - - - - - Specifies the default lazy initialization mode. - - - - - Specifies the default dependency checking mode. - - - - - Specifies the default autowire mode. - - - - - Defines a single named object. - - - - - Element containing informative text describing the purpose of the - enclosing element. - - -

- Always optional. -

-

- Used primarily for user documentation of XML object definition - documents. -

-
-
- - - Specifies a . - - -

- Does not have to be fully assembly qualified, but it is recommended - that the names of one's objects are - specified explicitly. -

-
-
- - - The name or alias of the parent object definition that a child - object definition inherits from. - - - - - Objects can be identified by an id, to enable reference checking. - - -

- There are constraints on a valid XML id: if you want to reference - your object in .NET code using a name that's illegal as an XML id, - use the optional "name" attribute - (). - If neither given, the objects name is - used as id. -

-
-
- - - Can be used to create one or more aliases illegal in an id. - - -

- Multiple aliases can be separated by any number of spaces, - semicolons, or commas - (). -

-

- Always optional. -

-
-
- - - Is this object a "singleton" (one shared instance, which will - be returned by all calls to - with the id), or a - "prototype" (independent instance resulting from each call to - ). - - -

- Singletons are most commonly used, and are ideal for multi-threaded - service objects. -

-
- -
- - - Controls object scope. Only applicable to ASP.NET web applications. - - -

- Scope can be defined as either application, session or request. It - defines when "singleton" instances are initialized, but has no - effect on prototype definitions. -

-
-
- - - The names of the objects that this object depends on being - initialized. - - -

- The object factory will guarantee that these objects - get initialized before this object definition. -

- - Dependencies are normally expressed through object properties or - constructor arguments. This property should just be necessary for - other kinds of dependencies such as statics (*ugh*) or database - preparation on startup. - -
-
- - - Optional attribute for the name of the custom initialization method - to invoke after setting object properties. - - -

- The method must have no arguments. -

-
-
- - - Optional attribute for the name of the custom destroy method to - invoke on object factory shutdown. - - -

- Valid destroy methods have either of the following signatures... - - void MethodName() - void MethodName(bool force) - -

- - Only invoked on singleton objects! - -
-
- - - A constructor argument : the constructor-arg tag can have an - optional type attribute, to specify the exact type of the - constructor argument - - -

- Only needed to avoid ambiguities, e.g. in case of 2 single - argument constructors that can both be converted from a - . -

-
-
- - - The constructor-arg tag can have an optional index attribute, - to specify the exact index in the constructor argument list. - - -

- Only needed to avoid ambiguities, e.g. in case of 2 arguments of - the same type. -

-
-
- - - The constructor-arg tag can have an optional named parameter - attribute, to specify a named parameter in the constructor - argument list. - - - - - Is this object "abstract", i.e. not meant to be instantiated itself - but rather just serving as parent for concrete child object - definitions? - - -

- Default is . Specify - to tell the object factory to not try to instantiate that - particular object in any case. -

-
-
- - - A property definition : object definitions can have zero or more - properties. - - -

- Spring.NET supports primitives, references to other objects in the - same or related factories, lists, dictionaries, and name value - collections. -

-
-
- - - A reference to another managed object or static - . - - - - - ID refs must specify a name of the target object. - - - - - A reference to the name of another managed object in the same - context. - - - - - A reference to the name of another managed object in the same - context. - - -

- Local references, using the "local" attribute, have to use object - ids; they can be checked by a parser, thus should be preferred for - references within the same object factory XML file. -

-
-
- - - Alternative to type attribute for factory-method usage. - - -

- If this is specified, no type attribute should be used. This should - be set to the name of an object in the current or ancestor - factories that contains the relevant factory method. This allows - the factory itself to be configured using Dependency Injection, and - an instance (rather than static) method to be used. -

-
-
- - - Optional attribute specifying the name of a factory method to use - to create this object. - - -

- Use constructor-arg elements to specify arguments to the factory - method, if it takes arguments. Autowiring does not apply to - factory methods. -

-

- If the "type" attribute is present, the factory method will be a - static method on the type specified by the "type" attribute on - this object definition. Often this will be the same type as that - of the constructed object - for example, when the factory method - is used as an alternative to a constructor. However, it may be on - a different type. In that case, the created object will *not* be - of the type specified in the "type" attribute. This is analogous - to behaviour. -

-

- If the "factory-object" attribute is present, the "type" attribute - is not used, and the factory method will be an instance method on - the object returned from a - - call with the specified object name. The factory object may be - defined as a singleton or a prototype. -

-

- The factory method can have any number of arguments. Use indexed - constructor-arg elements in conjunction with the factory-method - attribute. -

-

- Setter Injection can be used in conjunction with a factory method. - Method Injection cannot, as the factory method returns an instance, - which will be used when the container creates the object. -

-
-
- - - A list can contain multiple inner object, ref, collection, or - value elements. - - -

- Lists are untyped, pending generics support, although references - will be strongly typed. -

-

- A list can also map to an array type. The necessary conversion is - automatically performed by the - . -

-
-
- - - A set can contain multiple inner object, ref, collection, or value - elements. - - -

- Sets are untyped, pending generics support, although references - will be strongly typed. -

-
-
- - - A Spring.NET map is a mapping from a string key to object (a .NET - ). - - -

- Dictionaries may be empty. -

-
-
- - - A lookup key (for a dictionary or name / value collection). - - - - - A lookup key (for a dictionary or name / value collection). - - - - - Contains a string representation of a value. - - -

- This is used by name-value, ctor argument, and property elements. -

-
-
- - - Contains delimiters that should be used to split delimited string values. - - -

- This is used by name-value element. -

-
-
- - - A reference to another objects. - - -

- Used as a convenience shortcut on property and constructor-arg - elements to refer to other objects. -

-
-
- - - Contains a string representation of an expression. - - -

- This is used by ctor argument and property elements. -

-
-
- - - A map entry can be an inner object, ref, collection, or value. - - -

- The name of the property is given by the "key" attribute. -

-
-
- - - Contains a string representation of a property value. - - -

- The property may be a string, or may be converted to the - required using the - - machinery. This makes it possible for application developers to - write custom - implementations that can convert strings to objects. -

- - This is recommended for simple objects only. Configure more complex - objects by setting properties to references to other objects. - -
-
- - - Contains a string representation of an expression. - - - - - Denotes value. - - -

- Necessary because an empty "value" tag will resolve to an empty - , which will not be resolved to - value unless a special - does so. -

-
-
- - - 'name-values' elements differ from dictionary elements in that - values must be strings. - - -

- May be empty. -

-
-
- - - Element content is the string value of the property. - - -

- The "key" attribute is the name of the property. -

-
-
- - - The lazy initialization mode for an individual object definition. - - - - - The dependency checking mode for an individual object definition. - - - - - Defines a subscription to one or more events published by one or - more event sources. - - - - - The name of an event handling method. - - -

- Defaults to On${event}. - Note : this default will probably change before the first 1.0 - release. -

-
-
- - - The name of an event. - - - - - The autowiring mode for an individual object definition. - - - - - Shortcut alternative to specifying a key element in a - dictionary entry element with <ref object="..."/>. - - - - - Shortcut alternative to specifying a value element in a - dictionary entry element with <ref object="..."/>. - - - - - The string of characters that delimit object names. - - - - - A lookup method causes the IoC container to override a given method and return - the object with the name given in the attendant object attribute. - - -

- This is a form of Method Injection. -

-

- It's particularly useful as an alternative to implementing the - interface, - in order to be able to make - - calls for non-singleton instances at runtime. In this case, Method Injection - is a less invasive alternative. -

-
-
- - - The name of a lookup method. This method must take no arguments. - - - - - The name of the object in the IoC container that the lookup method - must resolve to. - - -

- Often this object will be a prototype, in which case the lookup method - will return a distinct instance on every invocation. This is useful - for single-threaded objects. -

-
-
- - - A replaced method causes the IoC container to override a given method - with an (arbitrary) implementation at runtime. - - -

- This (again) is a form of Method Injection. -

-
-
- - - Name of the method whose implementation should be replaced by the - IoC container. - - -

- If this method is not overloaded, there's no need to use arg-type - subelements. -

-

- If this method is overloaded, arg-type subelements must be - used for all override definitions for the method. -

-
-
- - - The object name of an implementation of the - interface. - - -

- This may be a singleton or prototype. If it's a prototype, a new - instance will be used for each method replacement. Singleton usage - is the norm. -

-
-
- - - Subelement of replaced-method identifying an argument for a - replaced method in the event of method overloading. - - - - - - Specification of the of an overloaded method - argument as a . - - -

- For convenience, this may be a substring of the FQN. E.g. all the following would match - : -

-

- - - System.String - - - string - - - str - - -

-
- -
- - - Check everything. - - - - - Just check primitive (string, int, etc) values. - - - - - Check object references. - - - - - Autowire by name. - - - - - Autowire by . - - - - - Autowiring by constructor. - - - - - The autowiring strategy is to be determined by introspection - of the object's . - - - - - Creates a new instance of the - - class. - - -

- This is a utility class, and as such has no publicly visible - constructors. -

-
-
- - - Stateful class used to parse XML object definitions. - - Not all parsing code has been refactored into this class. See - BeanDefinitionParserDelegate in Java for how this class should evolve. - Rob Harrop - Juergen Hoeller - Rod Johnson - Mark Pollack (.NET) - - - - The shared instance for this class (and derived classes). - - - - - Initializes a new instance of the class. - - The reader context. - - - - Initialize the default lazy-init, dependency check, and autowire settings. - - The root element - - - - Determines whether the Spring object namespace is equal to the the specified namespace URI. - - The namespace URI. - - true if is the default Spring namespace; otherwise, false. - - - - - Decorates the object definition if required. - - The element. - The holder. - - - - - Determines whether the string represents a 'true' boolean value. - - The value. - - true if is 'true' string value; otherwise, false. - - - - - Convenience method to create a builder for a root object definition. - - Name of the object type. - A builder for a root object definition. - - - - Convenience method to create a builder for a root object definition. - - Type of the object. - a builder for a root object definition - - - - Gets the defaults definition object, or null if the - default have not yet been initialized. - - The defaults. - - - - Gets the reader context. - - The reader context. - - - - Creates an instance - populated with the object definitions supplied in the configuration - section. - - -

- Applications will typically want to use an - , and instantiate it - via the use of the - class (which is similar in functionality to this class). This class is - provided for those times when only an - is required. -

- Creates an instance of the class XmlObjectFactory -
- -

- -

-
- Mark Pollack (.NET) -
- - - Creates a new instance of the - class. - - - - - Creates a - instance populated with the object definitions supplied in the - configuration section. - - - The configuration settings in a corresponding parent configuration - section. - - - The configuration context when called from the ASP.NET - configuration system. Otherwise, this parameter is reserved and - is . - - - The for the section. - - - A instance - populated with the object definitions supplied in the configuration - section. - - - - - Default implementation of the - interface. - - -

- Parses object definitions according to the standard Spring.NET schema. -

-

- This schema is typically located at - http://www.springframework.net/xsd/spring-objects.xsd. -

-
- Rod Johnson - Juergen Hoeller - Rick Evans (.NET) -
- - - The namespace URI for the standard Spring.NET object definition schema. - - - - - The shared instance for this class (and derived classes). - - - - - Invoked by after construction but before any - elements have been parsed. - - This is a NoOp - - - - Parse the specified element and register any resulting - IObjectDefinitions with the IObjectDefinitionRegistry that is - embedded in the supplied ParserContext. - - The element to be parsed into one or more IObjectDefinitions - The object encapsulating the current state of the parsing - process. - - The primary IObjectDefinition (can be null as explained above) - - - Implementations should return the primary IObjectDefinition - that results from the parse phase if they wish to used nested - inside (for example) a <property> tag. - Implementations may return null if they will not - be used in a nested scenario. - - - - - - Parse the specified XmlNode and decorate the supplied ObjectDefinitionHolder, - returning the decorated definition. - - The XmlNode may either be an XmlAttribute or an XmlElement, depending on - whether a custom attribute or element is being parsed. - Implementations may choose to return a completely new definition, - which will replace the original definition in the resulting IApplicationContext/IObjectFactory. - - The supplied ParserContext can be used to register any additional objects needed to support - the main definition. - - The source element or attribute that is to be parsed. - The current object definition. - The object encapsulating the current state of the parsing - process. - The decorated definition (to be registered in the IApplicationContext/IObjectFactory), - or simply the original object definition if no decoration is required. A null value is strickly - speaking invalid, but will leniently treated like the case where the original object definition - gets returned. - - - - Loads external XML object definitions from the resource described by the supplied - . - - The XML element describing the resource. - The parser context. - - If the resource could not be imported. - - - - Parses an event listener definition. - - The name associated with the object that the event handler is being defined on. - - The events being populated. - - The element containing the event listener definition. - - - The namespace-aware parser. - - - - - Parse an object definition and register it with the object factory.. - - The element containing the object definition. - The parser context. - - - - - Parse a standard object definition into a - , - including object name and aliases. - - The element containing the object definition. - The parser context. - if set to true if we are processing an inner - object definition. - - The object (definition) wrapped within an - - instance. - - -

- Object elements specify their canonical name via the "id" attribute - and their aliases as a delimited "name" attribute. -

-

- If no "id" is specified, uses the first name in the "name" attribute - as the canonical name, registering all others as aliases. -

-
-
- - - Calculates an id for an object definition. - - -

- Called when an object definition has not been explicitly defined - with an id. -

-
- - The element containing the object definition. - - - The list of names defined for the object; may be - or even empty. - - - A calculated object definition id. - -
- - - Parse a standard object definition. - - The element containing the object definition. - The id of the object definition. - parsing state holder - The object (definition). - - - - Parse method override argument subelements of the given object element. - - - - - Parse element and add parsed element to - - - - - Parse element and add parsed element to - - - - - Parse constructor argument subelements of the given object element. - - - - - Parse event handler subelements of the given object element. - - - - - Parse property value subelements of the given object element. - - - The name of the object (definition) associated with the property element (s) - - - The element containing the top level object definition. - - - The namespace-aware parser. - - - The property (s) associated with the object (definition). - - - - - Parse a constructor-arg element. - - - The name of the object (definition) associated with the ctor arg. - - - The list of constructor args associated with the object (definition). - - - The name of the element containing the ctor arg definition. - - - The namespace-aware parser. - - - - - Parse a property element. - - - The name of the object (definition) associated with the property. - - - The list of properties associated with the object (definition). - - - The name of the element containing the property definition. - - - The namespace-aware parser. - - - - - Get the value of a property element (may be a list). - -

- Please note that even though this method is named GetPropertyValue, - it is called by both the property and constructor argument element - handlers. -

-
- The property element. - - The name of the object associated with the property. - - - The namespace-aware parser. - -
- - - Parse a value, ref or collection subelement of a property element. - - - Subelement of property element; we don't know which yet. - - - The name of the object (definition) associated with the top level property. - - - The namespace-aware parser. - - - - - Gets a list definition. - - - The element describing the list definition. - - - The name of the object (definition) associated with the list definition. - - - The namespace-aware parser. - - The list definition. - - - - Gets a set definition. - - - The element describing the set definition. - - - The name of the object (definition) associated with the set definition. - - - The namespace-aware parser. - - The set definition. - - - - Gets a dictionary definition. - - - The element describing the dictionary definition. - - - The name of the object (definition) associated with the dictionary definition. - - - The namespace-aware parser. - - The dictionary definition. - - - - Selects sub-elements with a given - name. - - -

- Uses a namespace manager if necessary. -

-
- - The element to be searched in. - - - The name of the child nodes to look for. - - - The child s of the supplied - with the supplied - . - -
- - - Selects a single sub-element with a given - name. - - -

- Uses a namespace manager if necessary. -

-
- - The element to be searched in. - - - The name of the child node to look for. - - - The first child of the supplied - with the supplied - . - -
- - - Gets a name value collection mapping definition. - - - The element describing the name value collection mapping definition. - - - The name of the object (definition) associated with the - name value collection mapping definition. - - The name value collection definition. - - - - Returns the text of the supplied , - or the empty string value if said is empty. - - -

- If the supplied is , - then the empty string value will be returned. -

-
-
- - - Strips the dependency check value out of the supplied string. - - -

- If the supplied is an invalid dependency - checking mode, the invalid value will be logged and this method will - return the value. - No exception will be raised. -

-
- - The string containing the dependency check value. - - The dependency check value. - -
- - - Strips the autowiring mode out of the supplied string. - - -

- If the supplied is an invalid autowiring mode, - the invalid value will be logged and this method will return the - value. No exception will be raised. -

-
- - The string containing the autowiring mode definition. - - The autowiring mode. - -
- - - Given a string containing delimited object names, returns - a string array split on the object name delimeter. - - - The string containing delimited object names. - - - A string array split on the object name delimeter. - - - - - - Context that gets passed along an object definition parsing process, encapsulating - all relevant configuraiton as well as state. - - - - - Initializes a new instance of the class. - - The reader context. - The parser helper. - - - - Initializes a new instance of the class. - - The reader context. - The parser helper. - The containing object definition. - - - - Gets the reader context. - - The reader context. - - - - Gets the registry. - - The registry. - - - - Gets the parser helper. - - The parser helper. - - - - Gets the containing object definition. - - The containing object definition. - - - - Gets a value indicating whether this instance is nested. - - true if this instance is nested; otherwise, false. - - - - Gets a value indicating whether this instance is default lazy init. - - - true if this instance is default lazy init; otherwise, false. - - - - - Object definition reader for Spring's default XML object definition format. - - -

- Typically applied to a - instance. -

-

- This class registers each object definition with the given object factory superclass, - and relies on the latter's implementation of the - interface. -

-

- It supports singletons, prototypes, and references to either of these kinds of object. -

-
- Juergen Hoeller - Rick Evans (.NET) -
- - - Creates a new instance of the - class. - - - The - instance that this reader works on. - - - - - Creates a new instance of the - class. - - - The - instance that this reader works on. - - - The to be used for parsing. - - - - - Load object definitions from the supplied XML . - - - The XML resource for the object definitions that are to be loaded. - - - The number of object definitions that were loaded. - - - In the case of loading or parsing errors. - - - - - Actually load object definitions from the specified XML file. - - The input stream to read from. - The resource for the XML data. - - - - - Validation callback for a validating XML reader. - - The source of the event. - Any data pertinent to the event. - - - - Register the object definitions contained in the given DOM document. - - The DOM document. - - The original resource from where the - was read. - - - The number of object definitions that were registered. - - - In case of parsing errors. - - - - - Creates the to use for actually - reading object definitions from an XML document. - - Default implementation instantiates the specified 'documentReaderType'. - - - - - Creates the to be passed along - during the object definition reading process. - - The underlying that is currently processed. - A new - - - - The to be used for parsing. - - - - - Sets the IObjectDefinitionDocumentReader implementation to use, responsible for - the actual reading of the XML object definition document.stype of the document reader. - - The type of the document reader. - - - - For retrying the parse process - - - - - Convenience extension of - - that reads object definitions from an XML document or element. - - -

- Delegates to - - underneath; effectively equivalent to using a - for a - . -

- - objects doesn't need to be the root element of - the XML document: this class will parse all object definition elements in the - XML stream. - -

- This class registers each object definition with the - - superclass, and relies on the latter's implementation of the - interface. It supports - singletons, prototypes and references to either of these kinds of object. -

-
- Rod Johnson - Juergen Hoeller - Rick Evans (.NET) - -
- - - Creates a new instance of the class, - with the given resource, which must be parsable using DOM. - - - The XML resource to load object definitions from. - - - In the case of loading or parsing errors. - - - - - Creates a new instance of the class, - with the given resource, which must be parsable using DOM. - - - The XML resource to load object definitions from. - - Flag specifying whether to make this object factory case sensitive or not. - - In the case of loading or parsing errors. - - - - - Creates a new instance of the class, - with the given resource, which must be parsable using DOM, and the - given parent factory. - - - The XML resource to load object definitions from. - - The parent object factory (may be ). - - In the case of loading or parsing errors. - - - - - Creates a new instance of the class, - with the given resource, which must be parsable using DOM, and the - given parent factory. - - - The XML resource to load object definitions from. - - Flag specifying whether to make this object factory case sensitive or not. - The parent object factory (may be ). - - In the case of loading or parsing errors. - - - - - Gets object definition reader to use. - - - - - Extension of specific to use with an - XmlObjectDefinitionReader. - - In future will contain access to IXmlParserRegistry - - - - The maximum length of any XML fragment displayed in the error message - reporting. - - -

- Hopefully this will display enough context so that a user - can pinpoint the cause of the error. -

-
-
- - - Initializes a new instance of the class. - - The resource. - The reader. - - - - Generates the name of the object. - - The object definition. - the generated object name - - - - Registers the name of the with generated. - - The object definition. - the generated object name - - - - Reports a parse error by loading a - with helpful contextual - information and throwing said exception. - - -

- Derived classes can of course override this method in order to implement - validators capable of displaying a full list of errors found in the - definition. -

-
- - The node that triggered the parse error. - - - The name of the object that triggered the exception. - - - A message about the exception. - - - Always throws an instance of this exception class, that will - contain helpful contextual infomation about the parse error. - - -
- - - Reports a parse error by loading a - with helpful contextual - information and throwing said exception. - - -

- Derived classes can of course override this method in order to implement - validators capable of displaying a full list of errors found in the - definition. -

-
- - The node that triggered the parse error. - - - The name of the object that triggered the exception. - - - A message about the error. - - - The root cause of the parse error (if any - may be ). - - - Always throws an instance of this exception class, that will - contain helpful contextual infomation about the parse error. - -
- - - This method can be overwritten in order to implement validators - capable of displaying a full list of errors found in the definition. - - - The node that triggered the parse error. - - - A message about the exception. - - - - - Gets the reader. - - The reader. - - - - Gets the resource loader. - - The resource loader. - - - - Gets the registry. - - The registry. - - - - Gets or sets the object definition factory. - - The object definition factory. - - - - Exception thrown if an - is not fully - initialized, for example if it is involved in a circular reference. - - -

- This is usually indicated by any of the variants of the - - method returning . -

-

- A circular reference with an - cannot be solved by eagerly caching singleton instances (as is the - case with normal objects. The reason is that every - needs to be fully - initialized before it can return the created object, while only specific - normal objects need to be initialized - that is, if a collaborating object - actually invokes them on initialization instead of just storing the reference. -

-
- Juergen Hoeller - Rick Evans (.NET) -
- - - Thrown when an - encounters an error when attempting to create an object from an object - definition. - - Juergen Hoeller - Rick Evans (.NET) - - - - Creates a new instance of the - class. - - - - - Creates a new instance of the - class. - - - A message about the exception. - - - - - Creates a new instance of the - class. - - - A message about the exception. - - - The name of the object that triggered the exception. - - - - - Creates a new instance of the - class. - - - A message about the exception. - - - The root exception that is being wrapped. - - - - - Creates a new instance of the - class. - - - A message about the exception. - - - The name of the object that triggered the exception. - - - The root exception that is being wrapped. - - - - - Creates a new instance of the - class. - - - The description of the resource associated with the object. - - - A message about the exception. - - - The name of the object that triggered the exception. - - - - - Creates a new instance of the - class. - - - The description of the resource associated with the object. - - - A message about the exception. - - - The name of the object that triggered the exception. - - - The root exception that is being wrapped. - - - - - Creates a new instance of the - class. - - - The - that holds the serialized object data about the exception being thrown. - - - The - that contains contextual information about the source or destination. - - - - - Populates a with - the data needed to serialize the target object. - - - The to populate - with data. - - - The destination (see ) - for this serialization. - - - - - The name of the object that triggered the exception (if any). - - - - - The description of the resource associated with the object (if any). - - - - - Describes the creation failure trace of this exception. - - - - - Creates a new instance of the - FactoryObjectNotInitializedException class. - - - - - Creates a new instance of the FactoryObjectNotInitializedException class. - - - A message about the exception. - - - - - Creates a new instance of the FactoryObjectNotInitializedException class. - - - A message about the exception. - - - The root exception that is being wrapped. - - - - - Creates a new instance of the - FactoryObjectCircularReferenceException class. - - - The name of the object that triggered the exception. - - - A message about the exception. - - - - - Creates a new instance of the FactoryObjectCircularReferenceException class. - - - The - that holds the serialized object data about the exception being thrown. - - - The - that contains contextual information about the source or destination. - - - - - Exception thrown when an - is asked for an object instance name for which it cannot find a definition. - - Rod Johnson - Rick Evans (.NET) - - - - Creates a new instance of the - class. - - - - - Creates a new instance of the - class. - - - A message about the exception. - - - - - Creates a new instance of the - class. - - - A message about the exception. - - - The root exception that is being wrapped. - - - - - Creates a new instance of the - class. - - - Name of the missing object. - - - A further, detailed message describing the problem. - - - - - Initializes a new instance of the class. - - The required type of the object. - A description of the originating dependency. - A message describing the problem. - - - - Creates a new instance of the - class. - - - The of the missing object. - - - A further, detailed message describing the problem. - - - - - Creates a new instance of the - class. - - - The - that holds the serialized object data about the exception being thrown. - - - The - that contains contextual information about the source or destination. - - - - - Populates a with - the data needed to serialize the target object. - - - The to populate - with data. - - - The destination (see ) - for this serialization. - - - - - Return the required of object, if it was a - lookup by that failed. - - - - - Return the name of the missing object, if it was a lookup by name that - failed. - - - - - Thrown in case of a reference to an object that is currently in creation. - - -

- Typically happens when constructor autowiring matches the currently - constructed object. -

-
- Juergen Hoeller - Rick Evans -
- - - The default error message text to be used, if none is specified. - - - - - Creates a new instance of the - class. - - - - - Creates a new instance of the - class. - - - The name of the object that triggered the exception. - - - - - Creates a new instance of the - class. - - - The name of the object that triggered the exception. - - - The root exception that is being wrapped. - - - - - Creates a new instance of the - class. - - - A message about the exception. - - - The name of the object that triggered the exception. - - - - - Creates a new instance of the - class. - - - A message about the exception. - - - The name of the object that triggered the exception. - - - The root exception that is being wrapped. - - - - - Creates a new instance of the - class. - - - The description of the resource associated with the object. - - - A message about the exception. - - - The name of the object that triggered the exception. - - - - - Creates a new instance of the - class. - - - The description of the resource associated with the object. - - - A message about the exception. - - - The name of the object that triggered the exception. - - - The root exception that is being wrapped. - - - - - Creates a new instance of the ObjectCurrentlyInCreationException class. - - - The - that holds the serialized object data about the exception being thrown. - - - The - that contains contextual information about the source or destination. - - - - - Exception thrown when an - encounters an error when attempting to parse an object - definition. - - Federico Spinazzi (.NET) - - - - Creates a new instance of the ObjectDefinitionException class. - - - - - Creates a new instance of the ObjectDefinitionException class. - - - A message about the exception. - - - The root exception that is being wrapped. - - - - - Creates a new instance of the ObjectDefinitionException class. - - - The value of the xml class attribute thet can be resolved - as a type - - - - - Creates a new instance of the ObjectDefinitionException class. - - - The - that holds the serialized object data about the exception being thrown. - - - The - that contains contextual information about the source or destination. - - - - - Populates a with - the data needed to serialize the target object. - - - The to populate - with data. - - - The destination (see ) - for this serialization. - - - - - The message about the exception. - - - - - Thrown when an - encounters an internal error, and its definitions are invalid. - - -

- An example of a situation when this exception would be thrown is - in the case of an XML document containing object definitions being - malformed. -

-
- Rod Johnson - Juergen Hoeller - Rick Evans (.NET) -
- - - Creates a new instance of the ObjectDefinitionStoreException class. - - - - - Creates a new instance of the ObjectDefinitionStoreException class. - - - A message about the exception. - - - - - Creates a new instance of the ObjectDefinitionStoreException class. - - - The description of the resource that the object definition came from - - - The name of the object that triggered the exception. - - - A message about the exception. - - - - - Initializes a new instance of the class. - - - The description of the resource that the object definition came from - - The detail message (used as exception message as-is) - The root cause. (may be null - - - - Creates a new instance of the ObjectDefinitionStoreException class. - - - The resource location (e.g. an XML object definition file) associated - with the offending object definition. - - - A message about the exception. - - - The name of the object that triggered the exception. - - - - - Creates a new instance of the ObjectDefinitionStoreException class. - - - The resource location (e.g. an XML object definition file) associated - with the offending object definition. - - - A message about the exception. - - - The name of the object that triggered the exception. - - - The root exception that is being wrapped. - - - - - Creates a new instance of the ObjectDefinitionStoreException class. - - - The description of the resource that the object definition came from - - - A message about the exception. - - - The name of the object that triggered the exception. - - - The root exception that is being wrapped. - - - - - Creates a new instance of the ObjectDefinitionStoreException class. - - - A message about the exception. - - - The root exception that is being wrapped. - - - - - Creates a new instance of the ObjectDefinitionStoreException class. - - - The - that holds the serialized object data about the exception being thrown. - - - The - that contains contextual information about the source or destination. - - - - - Populates a with - the data needed to serialize the target object. - - - The to populate - with data. - - - The destination (see ) - for this serialization. - - - - - The description of the resource associated with the object - - - - - The name of the object that trigger the exception. - - - - - The name of the object that triggered the exception (if any). - - - - - The description of the resource associated with the object (if any). - - - - - Convenience methods operating on object factories, returning object instances, - names, or counts. - - -

- The nesting hierarchy of an object factory is taken into account by the various methods - exposed by this class. -

-
- Rod Johnson - Juergen Hoeller - Rick Evans (.NET) -
- - - Used to dereference an - and distinguish it from managed objects created by the factory. - - -

- For example, if the managed object identified as foo is a - factory, getting &foo will return the factory, not the - instance returned by the factory. -

-
-
- - - The string used as a separator in the generation of synthetic id's - for those object definitions explicitly that aren't assigned one. - - -

- If a name or parent object definition - name is not unique, "#1", "#2" etc will be appended, until such - time that the name becomes unique. -

-
-
- - - Creates a new instance of the - class. - - -

- This is a utility class, and as such has no publicly visible - constructors. -

-
-
- - - Count all object definitions in any hierarchy in which this - factory participates. - - -

- Includes counts of ancestor object factories. -

-

- Objects that are "overridden" (specified in a descendant factory - with the same name) are counted only once. -

-
- The object factory. - - The count of objects including those defined in ancestor factories. - -
- - - Return all object names in the factory, including ancestor factories. - - The object factory. - The array of object names, or an empty array if none. - - - - Get all object names for the given type, including those defined in ancestor - factories. - - -

- Will return unique names in case of overridden object definitions. -

-

- Does consider objects created by s - if is set to true, - which means that s will get initialized. -

-
- - If this isn't also an - , - this method will return the same as it's own - - method. - - - The that objects must match. - - - Whether to include prototype objects too or just singletons - (also applies to instances). - - - Whether to include instances - too or just normal objects. - - - The array of object names, or an empty array if none. - -
- - - Get all object names for the given type, including those defined in ancestor - factories. - - -

- Will return unique names in case of overridden object definitions. -

-

- Does consider objects created by s, - or rather it considers the type of objects created by - (which means that - s will be instantiated). -

-
- - If this isn't also an - , - this method will return the same as it's own - - method. - - - The that objects must match. - - - The array of object names, or an empty array if none. - -
- - - Return all objects of the given type or subtypes, also picking up objects - defined in ancestor object factories if the current object factory is an - . - - -

- The return list will only contain objects of this type. - Useful convenience method when we don't care about object names. -

-
- The object factory. - The of object to match. - - Whether to include prototype objects too or just singletons - (also applies to instances). - - - Whether to include instances - too or just normal objects. - - - If the objects could not be created. - - - The of object instances, or an - empty if none. - -
- - - Return a single object of the given type or subtypes, also picking up objects defined - in ancestor object factories if the current object factory is an - . - - -

- Useful convenience method when we expect a single object and don't care - about the object name. -

-
- The object factory. - The of object to match. - - Whether to include prototype objects too or just singletons - (also applies to instances). - - - Whether to include instances - too or just normal objects. - - - If the object could not be created. - - - If more than one instance of an object was found. - - - A single object of the given type or subtypes. - -
- - - Return a single object of the given type or subtypes, not looking in - ancestor factories. - - -

- Useful convenience method when we expect a single object and don't care - about the object name. -

-
- The object factory. - The of object to match. - - Whether to include prototype objects too or just singletons - (also applies to instances). - - - Whether to include instances - too or just normal objects. - - - If the object could not be created. - - - If not exactly one instance of an object was found. - - - A single object of the given type or subtypes. - -
- - - Return a single object of the given type or subtypes, not looking in - ancestor factories. - - -

- Useful convenience method when we expect a single object and don't care - about the object name. - This version of ObjectOfType automatically includes prototypes and - instances. -

-
- The object factory. - The of object to match. - - If the object could not be created. - - - If not exactly one instance of an object was found. - - - A single object of the given type or subtypes. - -
- - - Return the object name, stripping out the factory dereference prefix if necessary. - - The name of the object. - The object name sans any factory dereference prefix. - - - - Given an (object) name, builds a corresponding factory object name such that - the return value can be used as a lookup name for a factory object. - - - The name to be used to build the resulting factory object name. - - - The transformed into its factory object name - equivalent. - - - - - - - Is the supplied a factory dereference? - - -

- That is, does the supplied begin with - the - ? -

-
- The name to check. - - if the supplied is a - factory dereference; if not, or the - aupplied is or - consists solely of the - - value. - - -
- - - Exception that an object implementation is suggested to throw if its own - factory-aware initialization code fails. - thrown by object factory methods - themselves should simply be propagated as-is. - - -

- Note that non-factory-aware initialization methods like AfterPropertiesSet () - or a custom "init-method" can throw any exception. -

-
- Juergen Hoeller - Rick Evans (.NET) -
- - - Creates a new instance of the ObjectInitializationException class. - - - - - Creates a new instance of the ObjectInitializationException class. - - - A message about the exception. - - - - - Creates a new instance of the ObjectInitializationException class. - - - A message about the exception. - - - The root exception that is being wrapped. - - - - - Creates a new instance of the ObjectInitializationException class. - - - The - that holds the serialized object data about the exception being thrown. - - - The - that contains contextual information about the source or destination. - - - - - Thrown in response to an attempt to lookup a factory object, and - the object identified by the lookup key is not a factory. - - -

- An object is a factory if it implements (either directly or indirectly - via inheritance) the - interface. -

-
- Rod Johnson - Rick Evans (.NET) -
- - - Thrown when an object doesn't match the required . - - Rod Johnson - Rick Evans (.NET) - - - - Creates a new instance of the ObjectNotOfRequiredTypeException class. - - - - - Creates a new instance of the ObjectNotOfRequiredTypeException class. - - - A message about the exception. - - - - - Creates a new instance of the ObjectNotOfRequiredTypeException class. - - - A message about the exception. - - - The root exception that is being wrapped. - - - - - Creates a new instance of the ObjectNotOfRequiredTypeException class. - - - Name of the object requested. - - - The required of the actual object - instance that was retrieved. - - - The instance actually returned, whose class did not match the - expected . - - - - - Creates a new instance of the ObjectNotOfRequiredTypeException class. - - - The - that holds the serialized object data about the exception being thrown. - - - The - that contains contextual information about the source or destination. - - - - - Populates a with - the data needed to serialize the target object. - - - The to populate - with data. - - - The destination (see ) - for this serialization. - - - - - The actual of the actual object - instance that was retrieved. - - - - - The required of the actual object - instance that was retrieved. - - - - - The instance actually returned, whose class did not match the - expected . - - - - - The name of the object requested. - - - - - Creates a new instance of the - class. - - - - - Creates a new instance of the - class. - - - A message about the exception. - - - - - Creates a new instance of the - class. - - - A message about the exception. - - - The root exception that is being wrapped. - - - - - Creates a new instance of the - class. - - - The name of the object that was being retrieved from the factory. - - - The object instance that was retrieved. - - - - - Creates a new instance of the - class. - - - The - that holds the serialized object data about the exception being thrown. - - - The - that contains contextual information about the source or destination. - - - - - Exception thrown when an object depends on other objects or simple properties - that were not specified in the object factory definition, although dependency - checking was enabled. - - Rod Johnson - Juergen Hoeller - Rick Evans (.NET) - - - - Creates a new instance of the UnsatisfiedDependencyException class. - - - - - Creates a new instance of the UnsatisfiedDependencyException class. - - - A message about the exception. - - - - - Creates a new instance of the UnsatisfiedDependencyException class. - - - A message about the exception. - - - The root exception that is being wrapped. - - - - - Creates a new instance of the UnsatisfiedDependencyException class. - - - The description of the resource associated with the object. - - - The name of the object that has the unsatisfied dependency. - - - The constructor argument index at which the dependency is - unsatisfied. - - - The of the constructor argument at - which the dependency is unsatisfied. - - - A message about the exception. - - - - - Creates a new instance of the UnsatisfiedDependencyException class. - - - The description of the resource associated with the object. - - - The name of the object that has the unsatisfied dependency. - - - The name identifying the property on which the dependency is - unsatisfied. - - - A message about the exception. - - - - - Creates a new instance of the UnsatisfiedDependencyException class. - - - The - that holds the serialized object data about the exception being thrown. - - - The - that contains contextual information about the source or destination. - - - - - Base class implementation for classes that describe an event handler. - - Rick Evans - - - - Describes an event handler. - - Rick Evans - - - - Wires up the specified handler to the named event on the - supplied event source. - - - The object (an object instance, a , etc) - exposing the named event. - - - The handler for the event (an object instance, a - , etc). - - - - - The source of the event. - - - - - The name of the method that is going to handle the event. - - - - - The name of the event that is being wired up. - - - - - Creates a new instance of the - class. - - -

- This is an class, and as such exposes no public constructors. -

-
-
- - - Creates a new instance of the - class. - - - The object (possibly unresolved) that is exposing the event. - - - The name of the method on the handler that is going to handle the event. - - -

- This is an class, and as such exposes no public constructors. -

-
-
- - - Wires up the specified handler to the named event on the - supplied event source. - - - The object (an object instance, a , etc) - exposing the named event. - - - The handler for the event (an object instance, a - , etc). - - - - - Returns a stringified representation of this object. - - A stringified representation of this object. - - - - The source of the event (may be unresolved, as in the case - of a - value). - - - - - The name of the method that is going to handle the event. - - - - - The name of the event that is being wired up. - - - - - Convenience base class for implementations. - - - - - Abstracts the state sharing strategy used - by - - Erich Eichinger - - - - Indicate, whether the given instance can be served by this factory - - the instance to serve state - the name of the instance - - a boolean value indicating, whether state can - be served for the given instance or not. - - - - - Returns the shared state for the given instance. - - the instance to obtain shared state for. - the name of this instance - a dictionary containing shared state for or null. - - - - Gets a dictionary acc. to the type of . - If no dictionary is found, create it according to - - the instance to obtain shared state for - the name of the instance. - - A dictionary containing the 's state, - or null if no state can be served by this provider. - - - - - Creates a dictionary to hold the shared state identified by . - - a key to create the dictionary for. - a dictionary according to and . - - - - Indicate, whether the given instance will be served by this provider - - the instance to serve state - the name of the instance - - a boolean value indicating, whether state shall - be resolved for the given instance or not. - - - - - Create the key used for obtaining the state dictionary for . - - the instance to create the key for - the name of the instance. - - the key identifying the state dictionary to be used for - or null, if this state manager doesn't serve the given instance. - - - - Implementations may choose to return null from this method to indicate, - that they won't serve state for the given instance. - - - Note:Keys returned by this method are always treated case-sensitive! - - - - - - Create shared state dictionaries case-sensitive or case-insensitive? - - - - - A number indicating the priority of this ( for more). - - - - - Base class for all - implemenations that actually perform event wiring. - - Rick Evans - - - - Creates a new instance of the - class. - - -

- This is an class, and as such exposes no public constructors. -

-
-
- - - Creates a new instance of the - class. - - - The object (possibly unresolved) that is exposing the event. - - - The name of the method on the handler that is going to handle the event. - - -

- This is an class, and as such exposes no public constructors. -

-
-
- - - Wires up the specified handler to the named event on the - supplied event source. - - - The object (an object instance, a , etc) - exposing the named event. - - - The handler for the event (an object instance, a - , etc). - - - - - Gets the event handler. - - - The instance that is registering for the event notification. - - - Event metadata about the event. - - - The event handler. - - - - - Resolves the method metadata that describes the method that is to be used - as the argument to a delegate constructor. - - - The exposing the method. - - - The of the delegate (e.g. System.EventHandler). - - - The custom binding flags to use when searching for the method. - - The method metadata. - - If the method could not be found. - - - - - Describes an implementation - that autowires events to handler methods. - - Rick Evans - - - - Creates a new instance of the - class. - - - - - Wires up the specified handler to the named event on the supplied event source. - - - The object (an object instance, a , etc) - exposing the named event. - - - The handler for the event (an object instance, a , - etc). - - - - - The name of the method that is going to handle the event. - - - - - Performs the matching up of handler methods to one or more source events. - - -

- This class merely marshals the matching of handler methods to the events exposed - by an event source, and then delegates to a concrete - implementation (such as - or - ) to do the heavy lifting of - actually wiring a handler method to an event. -

-

- Note : the order in which handler's are wired up to events is non-deterministic. -

-
-
- - - Creates a new instance of the - class. - - - The object exposing the event (s) being wired up. - - - The name of the event that is being wired up. - - - The object exposing the method (s) being wired to the event. - - - The name of the method that is going to handle the event. - - - - - Wires up events on the source to methods exposed on the handler. - - - - - Wires up the supplied event to any handler methods that match the event - signature. - - The event being wired up. - - - - Only replaces the first occurrence of the placeholder. - - The event whose name is going to be used. - - The method name customised for the name of the supplied event. - - - - - The object exposing the event (s) being wired up. - - - - - The object exposing the method (s) being wired to an event source. - - - - - The of the object that is handling any events. - - - - - The name of the method that is going to handle the event. - - - - - The name of the event that is being wired up. - - - - - Serves shared state on a by-type basis. - - - - - Creates a new instance matching all types by default. - - - - - Creates a new instance matching only specified list of types. - - the list of types to serve. - - - - Indicate, whether the given instance will be served by this provider - - the instance to serve state - the name of the instance - - a boolean value indicating, whether state shall - be resolved for the given instance or not. - - - - - Returns the for the given . - - the instance to obtain the key for. - the name of the instance (ignored by this provider) - instance.GetType() if it matches the list. Null otherwise. - - This method will only be called if returned true previously. - - - - - Limit object types to be served by this state manager. - - - Only objects assignable to one of the types in this list - will be served state by this manager. - - - - - Describes an event handler for an object instance. - - Rick Evans - - - - Creates a new instance of the - class. - - - - - Creates a new instance of the - class. - - - The object (possibly unresolved) that is exposing the event. - - - The name of the method on the handler that is going to handle the event. - - - - - Gets the event handler. - - - The instance that is registering for the event notification. - - - Event metadata about the event. - - - The event handler. - - - - - Definition for sorting object instances by a property. - - Juergen Hoeller - Simon White (.NET) - - - - The name of the property to sort by. - - - - - Whether upper and lower case in string values should be ignored. - - - True if the sorting should be performed in a case-insensitive fashion. - - - - - If the sorting should be ascending or descending. - - - True if the sorting should be in the ascending order. - - - - - Mutable implementation of the - interface that - supports toggling the ascending value on setting the same property again. - - Juergen Hoeller - Jean-Pierre Pawlak - Simon White (.NET) - - - - Creates a new instance of the - class. - - - - - Creates a new instance of the - class using - the specified . - - - The to use - as a source for initial property values. - - - - - Creates a new instance of the - class. - - - The name of the property to sort by. - - - Whether upper and lower case in string values should be ignored. - - - Whether or not the sorting should be ascending or descending. - - - - - Creates a new instance of the - class. - - - Whether or not the - - property should be toggled if the same name is set on the - - property. - - - - - Overrides the default method - - - The object to test against this instance for equality. - - - True if the supplied is equal to this instance. - - - - - Overrides the default method. - - The hashcode for this instance. - - - - The name of the property to sort by. - - - - - Whether upper and lower case in string values should be ignored. - - - True if the sorting should be performed in a case-insensitive fashion. - - - - - If the sorting should be ascending or descending. - - - True if the sorting should be in the ascending order. - - - - - Performs a comparison of two objects, using the specified object property via - an . - - Juergen Hoeller - Jean-Pierre Pawlak - Simon White (.NET) - - - - Creates a new instance of the - class. - - - The to use for any - sorting. - - - If the supplied is . - - - - - Compares two objects and returns a value indicating whether one is less - than, equal to or greater than the other. - - The first object to compare. - The second object to compare. - - - - - Get the 's property - value for the given object. - - The object to get the property value for. - The property value. - - - - Sort the given according to the - given sort definition. - - - The to be sorted. - - The parameters to sort by. - - In the case of a missing property name. - - - If the supplied is . - - - - - Gets the to - use for any sorting. - - - The to use for - any sorting. - - - - - Describes an event handler for a static class method. - - Rick Evans - - - - Creates a new instance of the - class. - - - - - Creates a new instance of the - class. - - - The object (possibly unresolved) that is exposing the event. - - - The name of the method on the handler that is going to handle the event. - - - - - Gets the event handler. - - - The instance that is registering for the event notification. - - - Event metadata about the event. - - - The event handler. - - - - - The central interface of Spring.NET's low-level object infrastructure. - - -

- Typically not directly used by application code but rather implicitly - via an . -

-

- Implementing classes have the ability to get and set property values - (individually or in bulk), get property descriptors and query the - readability and writability of properties. -

-

- This interface supports nested properties enabling the setting - of properties on subproperties to an unlimited depth. -

-

- If a property update causes an exception, a - will be thrown. Bulk - updates continue after exceptions are encountered, throwing an exception - wrapping all exceptions encountered during the update. -

-

- implementations can be used - repeatedly, with their "target" or wrapped object changed. -

-
- Rod Johnson - Mark Pollack (.NET) -
- - Get the value of a property. - - The name of the property to get the value of. May be nested. - - The value of the property. - - if the property isn't readable, or if the getting the value throws - an exception. - - - - - Get the for a particular - property. - - - The property to be retrieved. - - - The for the particular - property. - - - - - Get the for a particular property. - - - The property the of which is to be retrieved. - - - The for a particular property.. - - - - - Get all of the instances for - all of the properties of the wrapped object. - - - An array of instances. - - - - - Set a property value. - - -

- This is the preferred way to update an individual property. -

-
- The new property value. -
- - - Set a property value. - - -

- This method is provided for convenience only. The - - method is more powerful. -

-
- - The name of the property to set value of. - - The new property value. -
- - Set a number of property values in bulk. - -

- This is the preferred way to perform a bulk update. -

-

- Note that performing a bulk update differs from performing a single update, - in that an implementation of this class will continue to update properties - if a recoverable error (such as a vetoed property change or a type - mismatch, but not an invalid property name or the like) is - encountered, throwing a - containing - all the individual errors. This exception can be examined later to see all - binding errors. Properties that were successfully updated stay changed. -

-

- Does not allow the setting of unknown fields. Equivalent to - - with an argument of false for the second parameter. -

-
- - The collection of instances to - set on the wrapped object. - -
- - - Set a number of property values in bulk with full control over behavior. - - -

- Note that performing a bulk update differs from performing a single update, - in that an implementation of this class will continue to update properties - if a recoverable error (such as a vetoed property change or a type - mismatch, but not an invalid property name or the like) is - encountered, throwing a - containing - all the individual errors. This exception can be examined later to see all - binding errors. Properties that were successfully updated stay changed. -

-

Does not allow the setting of unknown fields. -

-
- - The to set on the target object - - - Should we ignore unknown values (not found in the object!?) - -
- - - The object wrapped by the wrapper (cannot be ). - - -

- Implementations are required to allow the type of the wrapped - object to change. -

-
- The object wrapped by this wrapper. -
- - - Convenience method to return the - of the wrapped object. - - The of the wrapped object. - - - - A collection style container for - instances. - - Rod Johnson - Mark Pollack (.NET) - - - - Return the instance with the - given name. - - The name to search for. - the , or null if a - the with the supplied - did not exist in this collection. - - - - - Is there a instance for this - property name? - - The name to search for. - - True if there is a instance for - the supplied . - - - - - Return the difference (changes, additions, but not removals) of - property values between the supplied argument and the values - contained in the collection. - - -

- Subclasses should also override Equals. -

-
- The old property values. - - An containing any changes, or - an empty instance if there were - no changes. - -
- - - Return an array of the objects - held in this object. - - An array of the objects held - in this object. - - - - - This interface should be implemented by classes that want to - have access to the shared state. - - -

- Shared state is very useful if you have data that needs to be shared by all instances - of e.g. the same webform (or other IHttpHandlers). -

-

- For example, Spring.Web.UI.Page class implements this interface, which allows - each page derived from it to cache localizalization resources and parsed data binding - expressions only once and then reuse the cached values, regardless of how many instances - of the page are created. -

-
-
- - - Gets or sets the that should be used - to store shared state for this instance. - - - - - Default implementation of the - interface. - - -

- Allows simple manipulation of properties, and provides constructors to - support deep copy and construction from a number of collection types such as - and - . -

-
- Rod Johnson - Mark Pollack (.NET) - Rick Evans (.NET) -
- - - The list of objects. - - - - - Creates a new instance of the - class. - - -

- The returned instance is initially empty... - s can be added with the various - overloaded , - , - , - and - methods. -

-
- - -
- - - Creates a new instance of the - class. - - -

- Deep copy constructor. Guarantees - references are independent, although it can't deep copy objects currently - referenced by individual objects. -

-
-
- - - Creates a new instance of the - class. - - - The with property values - keyed by property name, which must be a . - - - - - Overloaded version of Add that takes a property name and a property value. - - - The name of the property. - - - The value of the property. - - - - - Add the supplied object, - replacing any existing one for the respective property. - - - The object to add. - - - - - Add all property values from the given - . - - - The map of property values, the keys of which must be - s. - - - - - Add all property values from the given - . - - - The list of s to be added. - - - - - Remove the given , if contained. - - - The to remove. - - - - - Removes the named , if contained. - - - The name of the property. - - - - - Modify a object held in this object. Indexed from 0. - - - - - Return the property value given the name. - - - The property name is checked in a case-insensitive fashion. - - - The name of the property. - - - The property value. - - - - - Does the container of properties contain one of this name. - - The name of the property to search for. - - True if the property is contained in this collection, false otherwise. - - - - - Return the difference (changes, additions, but not removals) of - property values between the supplied argument and the values - contained in the collection. - - Another property values collection. - - The collection of property values that are different than the supplied one. - - - - - Returns an that can iterate - through a collection. - - -

- The returned is the - exposed by the - - property. -

-
- - An that can iterate through a - collection. - -
- - - Convert the object to a string representation. - - - A string representation of the object. - - - - - Property to retrieve the array of property values. - - - - - Default implementation of the - interface that should be sufficient for all normal uses. - - -

- will convert - and array - values to the corresponding target arrays, if necessary. Custom - s that deal with - s or arrays can be written against a - comma delimited as - arrays are converted in such a format if the array itself is not assignable. -

-
- Rod Johnson - Juergen Hoeller - Jean-Pierre Pawlak - Mark Pollack (.NET) - Aleksandar Seovic(.NET) -
- - The wrapped object. - - - - The ILog instance for this class. We'll create a lot of these objects, - so we don't want a new instance every time. - - - - - Creates a new instance of the class. - - -

- The wrapped target instance will need to be set afterwards. -

-
- -
- - - Creates a new instance of the class. - - - The object wrapped by this . - - - If the supplied is . - - - - - Creates a new instance of the class, - instantiating a new instance of the specified and using - it as the . - - -

- Please note that the passed as the - argument must have a no-argument constructor. - If it does not, an exception will be thrown when this class attempts - to instantiate the supplied using it's - (non-existent) constructor. -

-
- - The to instantiate and wrap. - - - If the is , or if the - invocation of the s default (no-arg) constructor - fails (due to invalid arguments, insufficient permissions, etc). - -
- - Gets the value of a property. - - The name of the property to get the value of. - - The value of the property. - - If there is no such property, if the property isn't readable, or - if getting the property value throws an exception. - - - - Gets the value of a property. - - The property expression that should be used to retrieve the property value. - - The value of the property. - - If there is no such property, if the property isn't readable, or - if getting the property value throws an exception. - - - - - Sets a property value. - - -

- This method is provided for convenience only. The - - method is more powerful. -

-
- - The name of the property to set value of. - - The new value. -
- - - Sets a property value. - - - The property expression that should be used to set the property value. - - The new value. - - - - Sets a property value. - - -

- This is the preferred way to update an individual property. -

-
- - The object containing new property value. - -
- - Set a number of property values in bulk. - -

- Does not allow unknown fields. Equivalent to - - with and for - arguments. -

-
- - The to set on the target - object. - - - If an error is encountered while setting a property. - - - On a mismatch while setting a property, insufficient permissions, etc. - - -
- - - Perform a bulk update with full control over behavior. - - -

- This method may throw a reflection-based exception, if there is a critical - failure such as no matching field... less serious exceptions will be accumulated - and thrown as a single . -

-
- - The s to set on the target object. - - - Should we ignore unknown values (not found in the object!?). - - - If an error is encountered while setting a property (only thrown if the - parameter is set to ). - - - On a mismatch while setting a property, insufficient permissions, etc. - - -
- - - Returns PropertyInfo for the specified property - - The name of the property to search for. - The for the specified property. - If cannot be determined. - - - - Get the for a particular property. - - - The property the of which is to be retrieved. - - - The for a particular property.. - - - - - Returns MemberInfo for the specified property or field - - The name of the property or field to search for. - The or for the specified property or field. - If does not resolve to a property or field. - - - - Get the properties of the wrapped object. - - - An array of s. - - - - - This method is expensive! Only call for diagnostics and debugging reasons, - not in production. - - - A string describing the state of this object. - - - - - Attempts to parse property expression first and falls back to full expression - if that fails. Performance optimization. - - Property expression to parse. - Parsed proeprty expression. - - - - The object wrapped by this . - - - If the object cannot be changed; or an attempt is made to set the - value of this property to . - - - - - Convenience method to return the of the wrapped object. - - -

- Do not use this (convenience) method prior to setting the - property. -

-
- - The of the wrapped object. - - - If the property - is . - -
- - - Return the collection of property descriptors. - - - - - Combined exception, composed of individual binding - s. - - -

- An object of this class is created at the beginning of the binding - process, and errors added to it as necessary. -

-

- The binding process continues when it encounters application-level - s, applying those changes - that can be applied and storing rejected changes in an instance of this class. -

-
- Rod Johnson - Juergen Hoeller - Mark Pollack (.NET) -
- - - Creates a new instance of the PropertyAccessExceptionsException class. - - - - - Creates a new instance of the PropertyAccessExceptionsException class. - - - A message about the exception. - - - - - Creates a new instance of the PropertyAccessExceptionsException class. - - - A message about the exception. - - - The root exception that is being wrapped. - - - - - Create new empty PropertyAccessExceptionsException. - We'll add errors to it as we attempt to bind properties. - - - - - Creates a new instance of the PropertyAccessExceptionsException class. - - - The - that holds the serialized object data about the exception being thrown. - - - The - that contains contextual information about the source or destination. - - - - - Populates a with - the data needed to serialize the target object. - - - The to populate - with data. - - - The destination (see ) - for this serialization. - - - - - The IObjectWrapper wrapping the target object at the root of the exception. - - - - The list of PropertyAccessException objects. - - - - Return the - for the supplied , or - if there isn't one. - - - - - Describe the number of exceptions contained in this container class. - - A description of the instance contents. - - - - Return the that generated - this exception. - - - - - Return the object we're binding to. - - - - - If this returns zero (0), no errors were encountered during binding. - - - - - Return an array of the s - stored in this object. - - -

- Will return the empty array (not ) if there were no errors. -

-
-
- - - Describe the group of exceptions. - - - - - Holds information and value for an individual property. - - -

- Using an object here, rather than just storing all properties in a - map keyed by property name, allows for more flexibility, and the - ability to handle indexed properties in a special way if necessary. -

-

- Note that the value doesn't need to be the final required - : an - implementation must - handle any necessary conversion, as this object doesn't know anything - about the objects it will be applied to. -

-
- Rod Johnson - Mark Pollack (.NET) -
- - - Creates a new instance of the - class. - - The name of the property. - - The value of the property (possibly before type conversion). - - - If the supplied is or - contains only whitespace character(s). - - - - - Creates a new instance of the - class. - - The name of the property. - - The value of the property (possibly before type conversion). - - Pre-parsed property name. - - If the supplied or - is , or if the name contains only whitespace characters. - - - - - Print a string representation of the property. - - A string representation of the property. - - - - Determines whether the supplied - is equal to the current . - - The other instance. - - if they are equal in content. - - - - - Serves as a hash function for a particular type, suitable for use - in hashing algorithms and data structures like a hash table. - - - A hash code for the current . - - - - The name of the property. - The name of the property. - - - - Parsed property expression. - - - - - Return the value of the property. - - -

- Note that type conversion will not have occurred here. - It is the responsibility of the - implementation to - perform type conversion. -

-
- The (possibly unresolved) value of the property. -
- - - A simple pool implementation - - -

- Based on the implementation found in Concurrent Programming in Java, - 2nd ed., by Doug Lea. -

-
- Doug Lea - Federico Spinazzi - Mark Pollack -
- - - A simple pooling interface for managing and monitoring a pool - of objects. - - -

- Based on the Jakarta Commons Pool API. -

-
- Federico Spinazzi - -
- - - Obtain an instance from the pool. - - -

- By contract, clients must return the borrowed - instance using - or a related method as defined in an implementation or - sub-interface. -

-
- An instance from the pool. - - In case the pool is unusable. - - -
- - - Return an instance to the pool. - - -

- By contract, the object must have been obtained using - - or a related method as defined in an implementation or sub-interface. -

-
- The instance to be returned to the pool. - -
- - - Create an object using the factory set by - the property - or other implementation dependent mechanism - and place it into the pool. - - -

- This is an optional operation. AddObject is useful for "pre-loading" a - pool with idle objects. -

-
- - If the implementation does not support the operation. - -
- - - Close the pool and free any resources associated with it. - - - - - Clear objects sitting idle in the pool, releasing any - associated resources. - - -

- This is an optional operation. -

-
- - If the implementation does not support the operation. - -
- - - Gets the number of instances currently borrowed from the pool. - - -

- This is an optional operation. -

-
- - If the implementation does not support the operation. - -
- - - Gets the number of instances currently idle in the pool. - - -

- This is an optional operation. -

-

- This may be considered an approximation of the number of objects - that can be borrowed without creating any new instances. -

-
- - If the implementation does not support the operation. - -
- - - Set the factory used to create new instances. - - -

- This is an optional operation. -

-
- - If the implementation does not support the operation. - -
- - - Set of permits - - - - - Creates a new instance of the - class. - - - The factory used to instantiate and manage the lifecycle of pooled objects. - - The initial size of the pool. - - If the supplied is . - - - If the supplied is less than or equal to zero. - - - - - Obtain an instance from the pool. - - - In case the pool is unusable. - - - - - - - Return an instance to the pool. - - The instance to be returned to the pool. - - - - - - Create an object using the factory set by - the property - or other implementation dependent mechanism - and place it into the pool. - - -

- This implementation always throws a - . -

-
- - If the implementation does not support the operation. - -
- - - Synchronized borrow logic. - - - - - - Synchronized release logic. - - - The object to release to the pool. - - - if the object was not a busy one. - - - - - Instantiates the supplied number of instances and adds - them to the pool. - - - The initial number of objects to build. - - - If the supplied number of is - less than or equal to zero. - - - - - Close the pool and free any resources associated with it. - - - - - Clear objects sitting idle in the pool, releasing any - associated resources. - - -

- This implementation always throws a - . -

-
- - If the implementation does not support the operation. - -
- - - Change the state of the pool to unusable. - - - - - Gets the number of instances currently borrowed from the pool. - - - If the implementation does not support the operation. - - - - - - Gets the number of instances currently idle in the pool. - - - If the implementation does not support the operation. - - - - - - Set the factory used to create new instances. - - -

- This implementation always throws a - . -

-
- - If the implementation does not support the operation. - -
- - - Defines lifecycle methods for objects that are to be used in an - implementation. - - -

- The following methods summarize the contract between an - and an - an . -

- - - - is called whenever a new instance is needed. - - - - is invoked on every instance before it is returned from - the pool. - - - - is invoked on every instance when it is returned to the pool. - - - - is invoked on every instance when it is being dropped from the - pool (see - - - -

- Based on the Jakarta Commons Pool API. -

-
- Federico Spinazzi - -
- - - Creates an instance that can be returned by the pool. - - - An instance that can be returned by the pool. - - - - - Destroys an instance no longer needed by the pool. - - -

- Invoked on every instance when it is being "dropped" - from the pool (whether due to the return value from a call to the - - method, or for reasons specific to the pool implementation.) -

-
- The instance to be destroyed. -
- - - Ensures that the instance is safe to be returned by the pool. - Returns false if this object should be destroyed. - - -

- Invoked in an implementation-specific fashion to determine if an - instance is still valid to be returned by the pool. - It will only be invoked on an "activated" instance. -

-
- The instance to validate. - - if this object is not valid and - should be dropped from the pool, otherwise . - -
- - - Reinitialize an instance to be returned by the pool. - - -

- Invoked on every instance before it is returned from the pool. -

-
- The instance to be activated. -
- - - Uninitialize an instance to be returned to the pool. - - -

- Invoked on every instance when it is returned to the pool. -

-
- The instance returned to the pool. -
- - - Base class for all pooling exceptions. - - Federico Spinazzi - - - - Creates a new instance of the - class. - - - - - Creates a new instance of the - class. - - - A message about the exception. - - - - - Creates a new instance of the - class. - - - A message about the exception. - - - The root exception that is being wrapped. - - - - - Creates a new instance of the - class. - - - The - that holds the serialized object data about the exception being thrown. - - - The - that contains contextual information about the source or destination. - - - - - Base class for method builders that contains common functionalities. - - Bruno Baia - - - - Defines interface that proxy method builders have to implement. - - Aleksandar Seovic - Bruno Baia - - - - Dynamically builds proxy method. - - The method to proxy. - - The interface definition of the method, if applicable. - - - The for the proxy method. - - - - - The type builder to use. - - - - - The implementation to use. - - - - - Indicates whether interfaces should be implemented explicitly. - - - - - Creates a new instance of the method builder. - - The type builder to use. - - The implementation to use. - - - if the interface is to be - implemented explicitly; otherwise . - - - - - Dynamically builds proxy method. - - The method to proxy. - - The interface definition of the method, if applicable. - - - The for the proxy method. - - - - - Generates the IL instructions that pushes - the proxy instance on stack. - - The IL generator to use. - - - - Generates the IL instructions that pushes - the target instance on which calls should be delegated to. - - The IL generator to use. - - - - Defines proxy method for the target object. - - The method to proxy. - - The interface definition of the method, if applicable. - - - if the supplied is to be - implemented explicitly; otherwise . - - - The for the proxy method. - - - - - Defines method parameters based on proxied method metadata. - - - The to use. - - The method to proxy. - - - - Defines generic method parameters based on proxied method metadata. - - - The to use. - - The method to proxy. - - - - Generates the proxy method. - - The IL generator to use. - The method to proxy. - - The interface definition of the method, if applicable. - - - - - Calls target method directly. - - The IL generator to use. - - The interface definition of the method, if applicable. - - - - - Calls base method directly. - - The IL generator to use. - The method to proxy. - - - - Replaces a raw reference with a reference to a proxy. - - -

- If the target object returns reference to itself -- 'this' -- - we need to treat it as a special case and return a reference - to a proxy object instead. -

-
- The IL generator to use. - The location of the return value. -
- - - Base class for proxy builders that can be used - to create a proxy for any class. - - -

- This class provides a set of template - methods that derived classes can override to provide custom behaviour - appropriate to the type of proxy that is being generated (one of - inheritance or composition-based proxying). -

-
- Aleksandar Seovic - Bruno Baia -
- - - Describes the operations for a generic proxy type builder that can be - used to create a proxy type for any class. - - Aleksandar Seovic - - - - Creates the proxy type. - - The generated proxy class. - - - - The name of the proxy . - - The name of the proxy . - - - - The of the target object. - - - - - The of the class that the proxy must - inherit from. - - - - - Gets or sets the list of interfaces proxy should implement. - - - - - Should we proxy target attributes? - - - by default. - Target type attributes, method attributes, method's return type attributes - and method's parameter attributes are copied to the proxy. - - - - - The list of custom s that the proxy - class must be decorated with. - - -

- Note that the list is composed of instances of the actual - s that are to be applied, not the - s of the s. -

-
- -

- The following code snippets show examples of how to decorate the - the proxied class with one or more s. -

- - // get a concrete implementation of an IProxyTypeBuilder... - IProxyTypeBuilder builder = ... ; - builder.TargetType = typeof( ... ); - - IDictionary typeAtts = new Hashtable(); - builder.TypeAttributes = typeAtts; - - // applies a single Attribute to the proxied class... - typeAtts = new Attribute[] { new MyCustomAttribute() }); - - // applies a number of Attributes to the proxied class... - typeAtts = new Attribute[] - { - new MyCustomAttribute(), - new AnotherAttribute(), - }); - -
-
- - - The custom s that the proxy - members must be decorated with. - - -

- This dictionary must use simple s for keys - (denoting the member names that the attributes are to be applied to), - with the corresponding values being - s. -

-

- The key may be wildcarded using the '*' character... if so, - then those proxy members that match against the key will be - decorated with the attendant list of - s. This naturally implies that using - the '*' character as a key will result in the attendant list - of s being applied to every member of - the proxied class. -

-
- -

- The following code snippets show examples of how to decorate the - members of a proxied class with one or more - s. -

- - // get a concrete implementation of an IProxyTypeBuilder... - IProxyTypeBuilder builder = ... ; - builder.TargetType = typeof( ... ); - - IDictionary memAtts = new Hashtable(); - builder.MemberAttributes = memAtts; - - // applies a single Attribute to all members of the proxied class... - memAtts ["*"] = new Attribute[] { new MyCustomAttribute() }); - - // applies a number of Attributes to all members of the proxied class... - memAtts ["*"] = new Attribute[] - { - new MyCustomAttribute(), - new AnotherAttribute(), - }); - - // applies a single Attribute to those members of the proxied class - // that have identifiers starting with 'Do' ... - memAtts ["Do*"] = new Attribute[] { new MyCustomAttribute() }); - - // applies a number of Attributes to those members of the proxied class - // that have identifiers starting with 'Do' ... - memAtts ["Do*"] = new Attribute[] - { - new MyCustomAttribute(), - new AnotherAttribute(), - }); - -
-
- - - Describes the operations that generates IL instructions - used to build the proxy type. - - Bruno Baia - - - - Generates the IL instructions that pushes - the proxy instance on stack. - - The IL generator to use. - - - - Generates the IL instructions that pushes - the target instance on which calls should be delegated to. - - The IL generator to use. - - - - The shared instance for this class (and derived classes). - - - - - Creates the proxy type. - - The generated proxy class. - - - - Generates the IL instructions that pushes - the proxy instance on stack. - - The IL generator to use. - - - - Generates the IL instructions that pushes - the target instance on which calls should be delegated to. - - The IL generator to use. - - - - Creates an appropriate type builder. - - The name to use for the proxy type name. - The type to extends if provided. - The type builder to use. - - - - Applies attributes to the proxy class. - - The type builder to use. - The proxied class. - - - - - - Applies attributes to the proxied method. - - The method builder to use. - The proxied method. - - - - - - Applies attributes to the proxied method's return type. - - The method builder to use. - The proxied method. - - - - - Applies attributes to proxied method's parameters. - - The method builder to use. - The proxied method. - - - - - Calculates and returns the list of attributes that apply to the - specified type. - - The type to find attributes for. - - A list of custom attributes that should be applied to type. - - - - - - - Calculates and returns the list of attributes that apply to the - specified method. - - The method to find attributes for. - - A list of custom attributes that should be applied to method. - - - - - - - Calculates and returns the list of attributes that apply to the - specified method's return type. - - The method to find attributes for. - - A list of custom attributes that should be applied to method's return type. - - - - - - Calculates and returns the list of attributes that apply to the - specified method's parameters. - - The method to find attributes for. - The method's parameter to find attributes for. - - A list of custom attributes that should be applied to the specified method's parameter. - - - - - - Check that the specified object is matching the passed attribute type. - - -

- The specified object can be of different type : -

- - - - - - System.Reflection.CustomAttributeData (Only with .NET 2.0) - - - - - -
- The object instance to check. - The attribute type to test against. - - if the object instance matches the attribute type; - otherwise . - -
- - - Defines the types of the parameters for the specified constructor. - - The constructor to use. - The types for constructor's parameters. - - - - Implements constructors for the proxy class. - - - The builder to use. - - - - - Generates the proxy constructor. - - The constructor builder to use. - The IL generator to use. - The constructor to use. - - - - Implements an interface. - - - Generates proxy methods that belongs to the interface - using the specified . - - The type builder to use. - - The implementation to use - - The interface to implement. - - The of the target object. - - - - - Implements an interface. - - - Generates proxy methods that belongs to the interface - using the specified . - - The type builder to use. - - The implementation to use - - The interface to implement. - - The of the target object. - - - if target virtual methods should not be proxied; - otherwise . - - - - - Gets the mapping of the interface to proxy - into the actual methods on the target type - that does not need to implement that interface. - - -

- If the target type does not implement the interface, - we return the interfaces methods as the target methods for many reasons : -

    -
  • - The target object can change for an object that implements the interface. - (See 'Spring.Aop.Framework.DynamicProxy.IAdvisedProxyMethodBuilder' - implementation in the Spring AOP framework for an example) -
  • -
  • - Allow Transparent proxies to be proxied. - (See Spring Remoting framework for an example) -
  • -
  • - Allow null target to be proxied. - (See Spring AOP framework which avoid calls to the target object - by intercepting all methods. Think "dynamic mock") - (See 'Spring.Web.Services.WebServiceProxyFactory' implementation for another example) -
  • -
-

-
- - The of the target object. - - The interface to implement. - - An interface mapping for the interface to proxy. - -
- - - Inherit from a type. - - - Generates proxy methods for base virtual methods - using the specified . - - - The builder to use for code generation. - - - The implementation to use to override base virtual methods. - - The to inherit from. - - - - Inherit from a type. - - - Generates proxy methods for base virtual methods - using the specified . - - - The builder to use for code generation. - - - The implementation to use to override base virtual methods. - - The to inherit from. - - if only members declared at the level - of the supplied 's hierarchy should be proxied; - otherwise . - - - - - Implements the specified . - - The type builder to use. - The type the property is defined on. - The property to proxy. - The implemented methods map. - - - - Implements the specified event. - - The type builder to use. - The type the event is defined on. - The event to proxy. - The implemented methods map. - - - - Returns an array of s that represent - the proxiable interfaces. - - - An interface is proxiable if it's not marked with the - . - - - The array of interfaces from which - we want to get the proxiable interfaces. - - - An array containing the interface s. - - - - - Checks if specified interface is of a special type - that should never be proxied (i.e. ISerializable). - - Interface type to check. - - true if it is, false otherwise. - - - - - The name of the proxy . - - The name of the proxy . - - - - The of the target object. - - - - - The of the class that the proxy must - inherit from. - - -

- The default value of this property is the - . -

-
-
- - - Gets or sets the list of interfaces proxy should implement. - - - The default value of this property is all the interfaces - implemented or inherited by the target type. - - - - - Should we proxy target attributes? - - - - - - The list of custom s that the proxy - class must be decorated with. - - - - - - The custom s that the proxy - members must be decorated with. - - - - - - Implementation of IProxyMethodBuilder that delegates method calls to the base class. - - Bruno Baia - - - - Creates a new instance of the method builder. - - The type builder to use. - - The implementation to use. - - - if the interface is to be - implemented explicitly; otherwise . - - - - - Generates the proxy method. - - The IL generator to use. - The method to proxy. - - The interface definition of the method, if applicable. - - - - - Builds a proxy type using composition. - - - - In order for this builder to work, the target must implement - one or more interfaces. - - - Aleksandar Seovic - Bruno Baia - - - - Target instance calls should be delegated to. - - - - - Creates a new instance of the - class. - - - - - Creates a proxy that delegates calls to an instance of the - target object. - - -

- Only interfaces can be proxied using composition, so the target - must implement one or more interfaces. -

-
- The generated proxy class. - - If the - does not implement any interfaces. - -
- - - Generates the IL instructions that pushes - the target instance on which calls should be delegated to. - - The IL generator to use. - - - - Deaclares a field that holds the target object instance. - - - The builder to use for code generation. - - - - - Generates the proxy constructor. - - -

- This implementation creates instance of the target object for delegation - using constructor arguments. -

-
- The constructor builder to use. - The IL generator to use. - The constructor to delegate the creation to. -
- - - Gets or sets a value indicating whether interfaces should be implemented explicitly. - - - if they should be; otherwise, . - - - - - Allows easy access to existing and creation of new dynamic proxies. - - Aleksandar Seovic - Bruno Baia - - - - The name of the assembly that defines proxy types created. - - - - - The attributes of the proxy type to generate. - - - - - Creates an appropriate type builder. - - The proxy type name. - The type to extends if provided. - The type builder to use. - - - - Saves dynamically generated assembly to disk. - Can only be called in DEBUG_DYNAMIC mode, per ConditionalAttribute rules. - - - - - Builds a proxy type using inheritance. - - - - In order for this builder to work, target methods have to be either - , or belong to an interface. - - - Aleksandar Seovic - Bruno Baia - - - - Creates a new instance of the - class. - - - - - Creates a proxy that inherits the proxied object's class. - - -

- Only (non-final) methods can be proxied, - unless they are members of one of the interfaces that target class - implements. In that case, methods will be proxied using explicit - interface implementation, which means that client code will have - to cast the proxy to a specific interface in order to invoke the - methods. -

-
- The generated proxy class. -
- - - Generates the IL instructions that pushes - the target instance on which calls should be delegated to. - - The IL generator to use. - - - - Generates the proxy constructor. - - -

- This implementation delegates the call to a base class constructor. -

-
- The constructor builder to use. - The IL generator to use. - - The base class constructor to delegate the call to. - -
- - - Gets or sets a value indicating whether inherited members should be proxied. - - - if they should be; otherwise, . - - - - - This attribute can be used to mark interfaces that should not be proxied - - Bruno Baia - - - - Creates a new instance of the - class. - - - - - Implementation of IProxyMethodBuilder that delegates method calls to target object. - - Bruno Baia - - - - Creates a new instance of the method builder. - - The type builder to use. - - The implementation to use. - - - if the interface is to be - implemented explicitly; otherwise . - - - - - Generates the proxy method. - - The IL generator to use. - The method to proxy. - - The interface definition of the method, if applicable. - - - - - Base class for dynamic members. - - Aleksandar Seovic - - - - Method attributes constant. - - - - - Sets up target instance for invocation. - - IL generator to use. - Type of target instance. - - - - Sets up invocation argument. - - IL generator to use. - Argument type. - Argument position. - - - - Generates method invocation code. - - IL generator to use. - Flag specifying whether method is static. - Flag specifying whether method is on the value type. - Method to invoke. - - - - Generates code to process return value if necessary. - - IL generator to use. - Type of the return value. - - - - Generates code that throws . - - IL generator to use. - Error message to use. - - - - Defines constructors that dynamic constructor class has to implement. - - - - - Invokes dynamic constructor. - - - Constructor arguments. - - - A constructor value. - - - - - Safe wrapper for the dynamic constructor. - - - will attempt to use dynamic - constructor if possible, but it will fall back to standard - reflection if necessary. - - - - - Obtains cached constructor info or creates a new entry, if none is found. - - - - - Creates a new instance of the safe constructor wrapper. - - Constructor to wrap. - - - - Invokes dynamic constructor. - - - Constructor arguments. - - - A constructor value. - - - - - Factory class for dynamic constructors. - - Aleksandar Seovic - - - - Creates dynamic constructor instance for the specified . - - Constructor info to create dynamic constructor for. - Dynamic constructor for the specified . - - - - Defines methods that dynamic field class has to implement. - - - - - Gets the value of the dynamic field for the specified target object. - - - Target object to get field value from. - - - A field value. - - - - - Gets the value of the dynamic field for the specified target object. - - - Target object to set field value on. - - - A new field value. - - - - - Safe wrapper for the dynamic field. - - - will attempt to use dynamic - field if possible, but it will fall back to standard - reflection if necessary. - - - - - Obtains cached fieldInfo or creates a new entry, if none is found. - - - - - Creates a new instance of the safe field wrapper. - - Field to wrap. - - - - Gets the value of the dynamic field for the specified target object. - - - Target object to get field value from. - - - A field value. - - - - - Gets the value of the dynamic field for the specified target object. - - - Target object to set field value on. - - - A new field value. - - - - - Holds cached Getter/Setter delegates for a Field - - - - - Factory class for dynamic fields. - - Aleksandar Seovic - - - - Creates dynamic field instance for the specified . - - Field info to create dynamic field for. - Dynamic field for the specified . - - - - Defines methods that dynamic indexer class has to implement. - - - - - Gets the value of the dynamic indexer for the specified target object. - - - Target object to get the indexer value from. - - - Indexer argument. - - - A indexer value. - - - - - Gets the value of the dynamic indexer for the specified target object. - - - Target object to get the indexer value from. - - - Indexer argument. - - - A indexer value. - - - - - Gets the value of the dynamic indexer for the specified target object. - - - Target object to get the indexer value from. - - - Indexer arguments. - - - A indexer value. - - - - - Gets the value of the dynamic indexer for the specified target object. - - - Target object to set the indexer value on. - - - Indexer argument. - - - A new indexer value. - - - - - Gets the value of the dynamic indexer for the specified target object. - - - Target object to set the indexer value on. - - - Indexer argument. - - - A new indexer value. - - - - - Gets the value of the dynamic indexer for the specified target object. - - - Target object to set the indexer value on. - - - Indexer arguments. - - - A new indexer value. - - - - - Safe wrapper for the dynamic indexer. - - - will attempt to use dynamic - indexer if possible, but it will fall back to standard - reflection if necessary. - - - - - Creates a new instance of the safe indexer wrapper. - - Indexer to wrap. - - - - Gets the value of the dynamic indexer for the specified target object. - - - Target object to get indexer value from. - - - Indexer arguments. - - - A indexer value. - - - - - Gets the value of the dynamic indexer for the specified target object. - - - Target object to get the indexer value from. - - - Indexer argument. - - - A indexer value. - - - - - Gets the value of the dynamic indexer for the specified target object. - - - Target object to get indexer value from. - - - Indexer arguments. - - - A indexer value. - - - - - Sets the value of the dynamic indexer for the specified target object. - - - Target object to set indexer value on. - - - Indexer arguments. - - - A new indexer value. - - - - - Sets the value of the dynamic indexer for the specified target object. - - - Target object to set indexer value on. - - - Indexer arguments. - - - A new indexer value. - - - - - Sets the value of the dynamic indexer for the specified target object. - - - Target object to set indexer value on. - - - Indexer arguments. - - - A new indexer value. - - - - - Internal PropertyInfo accessor. - - - - - Factory class for dynamic indexers. - - Aleksandar Seovic - - - - Prevent instantiation - - - - - Creates dynamic indexer instance for the specified . - - Indexer info to create dynamic indexer for. - Dynamic indexer for the specified . - - - - Defines methods that dynamic method class has to implement. - - - - - Invokes dynamic method on the specified target object. - - - Target object to invoke method on. - - - Method arguments. - - - A method return value. - - - - - Safe wrapper for the dynamic method. - - - will attempt to use dynamic - method if possible, but it will fall back to standard - reflection if necessary. - - - - - Obtains cached property info or creates a new entry, if none is found. - - - - - Creates a new instance of the safe method wrapper. - - Method to wrap. - - - - Invokes dynamic method. - - - Target object to invoke method on. - - - Method arguments. - - - A method return value. - - - - - Gets the class, that declares this method - - - - - Factory class for dynamic methods. - - Aleksandar Seovic - - - - Creates dynamic method instance for the specified . - - Method info to create dynamic method for. - Dynamic method for the specified . - - - - Defines methods that dynamic property class has to implement. - - - - - Gets the value of the dynamic property for the specified target object. - - - Target object to get property value from. - - - A property value. - - - - - Gets the value of the dynamic property for the specified target object. - - - Target object to set property value on. - - - A new property value. - - - - - Gets the value of the dynamic property for the specified target object. - - - Target object to get property value from. - - Optional index values for indexed properties. This value should be null reference for non-indexed properties. - - A property value. - - - - - Gets the value of the dynamic property for the specified target object. - - - Target object to set property value on. - - - A new property value. - - Optional index values for indexed properties. This value should be null reference for non-indexed properties. - - - - Safe wrapper for the dynamic property. - - - will attempt to use dynamic - property if possible, but it will fall back to standard - reflection if necessary. - - - - - Obtains cached property info or creates a new entry, if none is found. - - - - - Creates a new instance of the safe property wrapper. - - Property to wrap. - - - - Gets the value of the dynamic property for the specified target object. - - - Target object to get property value from. - - - A property value. - - - - - Gets the value of the dynamic property for the specified target object. - - - Target object to get property value from. - - Optional index values for indexed properties. This value should be null reference for non-indexed properties. - - A property value. - - - - - Gets the value of the dynamic property for the specified target object. - - - Target object to set property value on. - - - A new property value. - - - - - Gets the value of the dynamic property for the specified target object. - - - Target object to set property value on. - - - A new property value. - - Optional index values for indexed properties. This value should be null reference for non-indexed properties. - - - - Internal PropertyInfo accessor. - - - - - Holds cached Getter/Setter delegates for a Property - - - - - Factory class for dynamic properties. - - Aleksandar Seovic - - - - Creates safe dynamic property instance for the specified . - - -

This factory method will create a dynamic property with a "safe" wrapper.

-

Safe wrapper will attempt to use generated dynamic property if possible, - but it will fall back to standard reflection if necessary.

-
- Property info to create dynamic property for. - Safe dynamic property for the specified . - -
- - - Creates dynamic property instance for the specified . - - Property info to create dynamic property for. - Dynamic property for the specified . - - - - Represents a Get method - - the target instance when calling an instance method - the value return by the Get method - - - - Represents a Set method - - the target instance when calling an instance method - the value to be set - - - - Represents an Indexer Get method - - the target instance when calling an instance method - - the value return by the Get method - - - - Represents a Set method - - the target instance when calling an instance method - the value to be set - - - - - Represents a method - - the target instance when calling an instance method - arguments to be passed to the method - the value return by the method. null when calling a void method - - - - Represents a constructor - - arguments to be passed to the method - the new object instance - - - - Represents a callback method used to create an from a instance. - - - - - Represents a callback method used to create an from a instance. - - - - - Represents a callback method used to create an from a instance. - - - - - Represents a callback method used to create an from a instance. - - - - - Represents a callback method used to create an from a instance. - - - - - Allows easy access to existing and creation of new dynamic relection members. - - Aleksandar Seovic - - - - The name of the assembly that defines reflection types created. - - - - - The attributes of the reflection type to generate. - - - - - Cache for dynamic property types. - - - - - Cache for dynamic field types. - - - - - Cache for dynamic indexer types. - - - - - Cache for dynamic method types. - - - - - Cache for dynamic constructor types. - - - - - Creates an appropriate type builder. - - - The base name to use for the reflection type name. - - The type builder to use. - - - - Returns dynamic property if one exists. - - Property to look up. - callback function that will be called to create the dynamic property - An for the given property info. - - - - Returns dynamic field if one exists. - - Field to look up. - callback function that will be called to create the dynamic field - An for the given field info. - - - - Returns dynamic indexer if one exists. - - Indexer to look up. - callback function that will be called to create the dynamic indexer - An for the given indexer. - - - - Returns dynamic method if one exists. - - Method to look up. - callback function that will be called to create the dynamic method - An for the given method. - - - - Returns dynamic constructor if one exists. - - Constructor to look up. - callback function that will be called to create the dynamic constructor - An for the given constructor. - - - - Saves dynamically generated assembly to disk. - Can only be called in DEBUG mode, per ConditionalAttribute rules. - - - - - Create a new Get method delegate for the specified field using - - the field to create the delegate for - a delegate that can be used to read the field - - - - Create a new Set method delegate for the specified field using - - the field to create the delegate for - a delegate that can be used to read the field. - - If the field's returns true, the returned method - will throw an when called. - - - - - Create a new Get method delegate for the specified property using - - the property to create the delegate for - a delegate that can be used to read the property. - - If the property's returns false, the returned method - will throw an when called. - - - - - Create a new Set method delegate for the specified property using - - the property to create the delegate for - a delegate that can be used to write the property. - - If the property's returns false, the returned method - will throw an when called. - - - - - Create a new method delegate for the specified method using - - the method to create the delegate for - a delegate that can be used to invoke the method. - - - - Creates a new delegate for the specified constructor. - - the constructor to create the delegate for - delegate that can be used to invoke the constructor. - - - - Delegates a Method(object target, params object[] args) call to the actual underlying method. - - - - - Generates code to process return value if necessary. - - IL generator to use. - Type of the return value. - - - - Converts to an instance of if necessary to - e.g. avoid e.g. double/int cast exceptions. - - - - This method mimics the behavior of the compiler that - automatically performs casts like int to double in "Math.Sqrt(4)".
- See about implicit, widening type conversions on MSDN - Type Conversion Tables -
- - Note: is expected to be a value type! - -
-
- - - Generates code that throws . - - IL generator to use. - Error message to use. - - - - Indicates that an annotated class is a "component". - Such classes are considered as candidates for future features such - as auto-detection when using attribute-based configuration and assembly scanning. - - Other class-level annotations may be considered as identifying - a component as well, typically a special kind of component: - e.g. the Repository attribute. - - Mark Fisher - Mark Pollack (.NET) - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The name of the component. - - - - Gets or sets the name of the component - - The name of the component. - - - - Indicates that an annotated class is a "Repository" (or "DAO"). - - - A class with this attribute is eligible for Spring DataAccessException translation. A class - with the Repository attribute is also clarified as to its role in the overall application - architecture for the purpose of tools, aspects, etc. - - This attribute also serves as a specialization of the ComponentAttribute, allowing implementation - classes to be autodetected in future releases through assembly scanning. - - - Rod Johnson - Jueren Hoeller - Mark Pollack (.NET) - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The name of the repository. - - - - Indicates that an annotated class is a "Service" (e.g. a business service facade). - - - - This attribute also serves as a specialization of the ComponentAttribute, allowing implementation - classes to be autodetected in future releases through assembly scanning. - - - Juergen Hoeller - Mark Pollack (.NET) - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The name. - - - - Implements by using . - - Erich Eichinger - - - - Specifies the contract a strategy must be implement to store and - retrieve data that is specific to the executing thread. - - - All implementations of this interface must treat keys case-sensitive. - - Erich Eichinger - - - - Retrieves an object with the specified . - - The name of the item. - - The object in the current thread's context associated with the - specified or null if no object has been stored previously - - - - - Stores a given object and associates it with the specified . - - The name with which to associate the new item. - The object to store in the current thread's context. - - - - Empties a data slot with the specified name. - - - If the object with the specified is not found, the method does nothing. - - The name of the object to remove. - - - - Retrieves an object with the specified name. - - The name of the item. - The object in the call context associated with the specified name or null if no object has been stored previously - - - - Stores a given object and associates it with the specified name. - - The name with which to associate the new item. - The object to store in the call context. - - - - Empties a data slot with the specified name. - - The name of the data slot to empty. - - - - Acquire/Release protocol, base of many concurrency utilities. - - - -

objects isolate waiting and notification for particular logical - states, resource availability, events, and the like that are shared - across multiple threads.

- -

Use of s sometimes (but by no means always) adds - flexibility and efficiency compared to the use of plain - .Net monitor methods and locking, and are sometimes (but by no means - always) simpler to program with.

- -

Used for implementation of a

-
- - Doug Lea - Federico Spinazzi (.Net) -
- - Wait (possibly forever) until successful passage. - Fail only upon interuption. Interruptions always result in - `clean' failures. On failure, you can be sure that it has not - been acquired, and that no - corresponding release should be performed. Conversely, - a normal return guarantees that the acquire was successful. - - - - - Potentially enable others to pass. -

- Because release does not raise exceptions, - it can be used in `finally' clauses without requiring extra - embedded try/catch blocks. But keep in mind that - as with any java method, implementations may - still throw unchecked exceptions such as Error or NullPointerException - when faced with uncontinuable errors. However, these should normally - only be caught by higher-level error handlers. -

-
-
- - - Wait at most msecs to pass; report whether passed. -

- The method has best-effort semantics: - The msecs bound cannot - be guaranteed to be a precise upper bound on wait time in Java. - Implementations generally can only attempt to return as soon as possible - after the specified bound. Also, timers in Java do not stop during garbage - collection, so timeouts can occur just because a GC intervened. - So, msecs arguments should be used in - a coarse-grained manner. Further, - implementations cannot always guarantee that this method - will return at all without blocking indefinitely when used in - unintended ways. For example, deadlocks may be encountered - when called in an unintended context. -

-
- the number of milleseconds to wait - An argument less than or equal to zero means not to wait at all. - However, this may still require - access to a synchronization lock, which can impose unbounded - delay if there is a lot of contention among threads. - - true if acquired -
- - A latch is a boolean condition that is set at most once, ever. - Once a single release is issued, all acquires will pass. -

- Sample usage. Here are a set of classes that use - a latch as a start signal for a group of worker threads that - are created and started beforehand, and then later enabled. -

- - class Worker implements IRunnable { - private readonly Latch startSignal; - Worker(Latch l) - { - startSignal = l; - } - - public void Run() { - startSignal.acquire(); - DoWork(); - } - - void DoWork() { ... } - } - - class Driver { // ... - void Main() { - Latch go = new Latch(); - for (int i = 0; i < N; ++i) // make threads - new Thread(new ThreadStart(new Worker(go)).Start(); - DoSomethingElse(); // don't let run yet - go.Release(); // let all threads proceed - } - } - -
- Doug Lea - Federico Spinazzi (.Net) -
- - - can acquire ? - - - - - Method mainly used by clients who are trying to get the latch - - - - Wait at most msecs millisconds for a permit - - - - Enable all current and future acquires to pass - - - - - An abstraction to safely store "ThreadStatic" data. - - - By default, is used to store thread-specific data. - You may switch the storage strategy by calling .

- NOTE: Access to the underlying storage is not synchronized for performance reasons. - You should call only once at application startup! - - Erich Eichinger - - -

- Holds the current strategy. - - - Access to this variable is not synchronized on purpose for performance reasons. - Setting a different strategy should happen only once - at application startup. - -
- - - Set the new strategy. - - - - - Retrieves an object with the specified name. - - The name of the item. - The object in the context associated with the specified name or null if no object has been stored previously - - - - Stores a given object and associates it with the specified name. - - The name with which to associate the new item. - The object to store in the current thread's context. - - - - Empties a data slot with the specified name. - - The name of the data slot to empty. - - - -

Base class for counting semaphores based on Semaphore implementation - from Doug Lea.

-
- - -

Conceptually, a semaphore - maintains a set of permits. Each acquire() blocks if - necessary until a permit is available, and then takes it.

- -

Each release adds a permit. However, no actual permit objects are used; - the Semaphore just keeps a count of the number available - and acts accordingly.

- -

A semaphore initialized to 1 can serve as a mutual exclusion lock.

- - Used for implementation of a -
- Doug Lea - Federico Spinazzi (.Net) -
- - - current number of available permits - - - - -

Create a Semaphore with the given initial number of permits.

-

Using a seed of 1 makes the semaphore act as a mutual - exclusion lock.

- -

Negative seeds are also allowed, - in which case no acquires will proceed until the number of - releases has pushed the number of permits past 0.

-
-
- - - Release a permit - - - - - Acquire a permit - - - - - Wait at most msecs millisconds for a permit - - number of ms to wait - true if aquired - - - Release N permits. release(n) is - equivalent in effect to: -
-            for (int i = 0; i < n; ++i) release();
-            
- But may be more efficient in some semaphore implementations. -
- if n is negative. - - -
- - Return the current number of available permits. - Returns an accurate, but possibly unstable value, - that may change immediately after returning. - - - - - Utility class to use an with the - C# using () {} idiom - - - - - Creates a new trying to the given - - - the to be held - - - - Creates a new trying to the given - - - the to be held - millisecond to try to acquire the lock - - - - Releases the held - - - - - initializes and acquire access to the - - - - - - Implements by using a hashtable. - - Erich Eichinger - - - - Retrieves an object with the specified name. - - The name of the item. - The object in the call context associated with the specified name or null if no object has been stored previously - - - - Stores a given object and associates it with the specified name. - - The name with which to associate the new item. - The object to store in the call context. - - - - Empties a data slot with the specified name. - - The name of the data slot to empty. - - - Thrown by synchronization classes that report - timeouts via exceptions. The exception is treated - as a form (subclass) of InterruptedException. This both - simplifies handling, and conceptually reflects the fact that - timed-out operations are artificially interrupted by timers. - - - - - The approximate time that the operation lasted before - this timeout exception was thrown. - - - - - - Creates a new instance of the - class. - - - - - Creates a new instance of the - class with the - specified message. - - - A message about the exception. - - - - - Creates a new instance of the - class with the - specified message. - - - A message about the exception. - - - The root exception that is being wrapped. - - - - - Creates a new instance of the - class. - - - The - that holds the serialized object data about the exception being thrown. - - - The - that contains contextual information about the source or destination. - - - - - Override of GetObjectData to allow for private serialization - - serialization info - streaming context - - - Constructs a TimeoutException with given duration value. - - - - - Constructs a TimeoutException with the - specified duration value and detail message. - - - - - Gets the approximate time that the operation lasted before - this timeout exception was thrown. - - - - A TimeoutSync is an adaptor class that transforms all - calls to acquire to instead invoke attempt with a predetermined - timeout value. - - - - - - the adapted sync - - - - - timeout value - - - - Create a TimeoutSync using the given Sync object, and - using the given timeout value for all calls to acquire. - - - - - Try to acquire the sync before the timeout - - In case a time out occurred - - - - - - - - - - - - - - Support to account for differences between java nad .NET: -
    -
-
-
- - - .NET threads have not a method to check if they have been interrupted. - Moreover, differently from java threads, when entering locked - blocks, Monitor, Sleep, SpinWait and so on, a - will be raised by the runtime. -

Spring.Threading classes usually call this method before entering a lock block, to mirror java code -

Usually this is non issue because the same exception will be raised entering the monitor - associated with the lock () -

-
- if the thread has been interrupted -
- - - Normalize the given so that - is is comparable with . - - Date. - - - - - - - - - the difference between millisecodns of the first and second date - - - - Returns the number of nanoseconds for the current value of - - Current number of nanoseconds - - - - Returns the number of nano seconds represented by the - - to use - Number of nano seconds for - - - - Returns a representing the number of nanoseconds passed in via . - - Number of nanoseconds. - representing the number of nanoseconds passed in. - - - - Placeholder for java.lang.System.currentTimeMillis - - The current machine time in milliseconds - - - - Has been interrupted this thread - - - - - Miscellaneous generic collection utility methods. - - - Mainly for internal use within the framework. - - Mark Pollack (.NET) - - - - Determine whether a given collection only contains - a single unique object - - - - - - - Determines whether the contains the specified . - - The collection to check. - The object to locate in the collection. - if the element is in the collection, otherwise. - - - - Determines whether the collection contains all the elements in the specified collection. - - The collection to check. - Collection whose elements would be checked for containment. - true if the target collection contains all the elements of the specified collection. - - - - Various utility methods relating to the manipulation of arrays. - - Aleksandar Seovic - - - - Checks if the given array or collection has elements and none of the elements is null. - - the collection to be checked. - true if the collection has a length and contains only non-null elements. - - - - Checks if the given array or collection is null or has no elements. - - - - - - - Tests equality of two single-dimensional arrays by checking each element - for equality. - - The first array to be checked. - The second array to be checked. - True if arrays are the same, false otherwise. - - - - Returns hash code for an array that is generated based on the elements. - - - Hash code returned by this method is guaranteed to be the same for - arrays with equal elements. - - - Array to calculate hash code for. - - - A hash code for the specified array. - - - - - Returns string representation of an array. - - - Array to return as a string. - - - String representation of the specified . - - - - - Assertion utility methods that simplify things such as argument checks. - - -

- Not intended to be used directly by applications. -

-
- Aleksandar Seovic -
- - - Checks the value of the supplied and throws an - if it is . - - The object to check. - The argument name. - - If the supplied is . - - - - - Checks the value of the supplied and throws an - if it is . - - The object to check. - The argument name. - - An arbitrary message that will be passed to any thrown - . - - - If the supplied is . - - - - - Checks the value of the supplied string and throws an - if it is or - contains only whitespace character(s). - - The string to check. - The argument name. - - If the supplied is or - contains only whitespace character(s). - - - - - Checks the value of the supplied string and throws an - if it is or - contains only whitespace character(s). - - The string to check. - The argument name. - - An arbitrary message that will be passed to any thrown - . - - - If the supplied is or - contains only whitespace character(s). - - - - - Checks the value of the supplied and throws - an if it is or contains no elements. - - The array or collection to check. - The argument name. - - If the supplied is or - contains no elements. - - - - - Checks the value of the supplied and throws - an if it is or contains no elements. - - The array or collection to check. - The argument name. - An arbitrary message that will be passed to any thrown . - - If the supplied is or - contains no elements. - - - - - Checks the value of the supplied and throws - an if it is , contains no elements or only null elements. - - The array or collection to check. - The argument name. - - If the supplied is , - contains no elements or only null elements. - - - - - Checks whether the specified can be cast - into the . - - - The argument to check. - - - The name of the argument to check. - - - The required type for the argument. - - - An arbitrary message that will be passed to any thrown - . - - - - - Assert a boolean expression, throwing ArgumentException - if the test result is false. - - a boolean expression. - The exception message to use if the assertion fails. - - if expression is false - - - - - Assert a boolean expression, throwing ArgumentException - if the test result is false. - - a boolean expression. - - if expression is false - - - - - Assert a bool expression, throwing InvalidOperationException - if the expression is false. - - a boolean expression. - The exception message to use if the assertion fails - if expression is false - - - - Creates a new instance of the class. - - -

- This is a utility class, and as such exposes no public constructors. -

-
-
- - - General utility methods for working with annotations - - - - - Find a single Attribute of the type 'attributeType' from the supplied class, - traversing it interfaces and super classes if no attribute can be found on the - class iteslf. - - - This method explicitly handles class-level attributes which are not declared as - inherited as well as attributes on interfaces. - - The class to look for attributes on . - Type of the attribibute to look for. - the attribute of the given type found, or null - - - - Miscellaneous collection utility methods. - - - Mainly for internal use within the framework. - - Mark Pollack (.NET) - - - - Determine whether a given collection only contains - a single unique object - - - - - - - Determines whether the contains the specified . - - The collection to check. - The object to locate in the collection. - if the element is in the collection, otherwise. - - - - Adds the specified to the specified . - - The collection to add the element to. - The object to add to the collection. - - - - Determines whether the collection contains all the elements in the specified collection. - - The collection to check. - Collection whose elements would be checked for containment. - true if the target collection contains all the elements of the specified collection. - - - - Removes all the elements from the target collection that are contained in the source collection. - - Collection where the elements will be removed. - Elements to remove from the target collection. - - - - Converts an instance to an instance. - - The instance to be converted. - An instance in which its elements are the elements of the instance. - if the is null. - - - - Copies the elements of the to a - new array of the specified element type. - - The instance to be converted. - The element of the destination array to create and copy elements to - An array of the specified element type containing copies of the elements of the . - - - - Finds a value of the given type in the given collection. - - The collection to search. - The type to look for. - a value of the given type found, or null if none. - If more than one value of the given type is found - - - - Find a value of one of the given types in the given Collection, - searching the Collection for a value of the first type, then - searching for a value of the second type, etc. - - The collection to search. - The types to look for, in prioritized order. - a value of the given types found, or null if none - If more than one value of the given type is found - - - - Determines whether the specified collection is null or empty. - - The collection to check. - - true if the specified collection is empty or null; otherwise, false. - - - - - Determines whether the specified dictionary is null empty. - - The dictionary to check. - - true if the specified dictionary is empty or null; otherwise, false. - - - - - Utility class containing helper methods for object comparison. - - Aleksandar Seovic - - - Compares two objects. - First object. - Second object. - - 0, if objects are equal; - less than zero, if the first object is smaller than the second one; - greater than zero, if the first object is greater than the second one. - - - - Utility class for .NET configuration files management. - - Aleksandar Seovic - - - - Parses the configuration section. - - -

- Primary purpose of this method is to allow us to parse and - load configuration sections using the same API regardless - of the .NET framework version. -

-

- If Microsoft paid a bit more attention to preserving backwards - compatibility we would not even need it, but... :( -

-
- Name of the configuration section. - Object created by a corresponding . -
- - - Refresh the configuration section. - - -

- Primary purpose of this method is to allow us to parse and - load configuration sections using the same API regardless - of the .NET framework version. -

-

- If Microsoft paid a bit more attention to preserving backwards - compatibility we would not even need it, but... :( -

-
- Name of the configuration section. -
- - - Creates the configuration exception. - - The message to display to the client when the exception is thrown. - The inner exception. - Name of the configuration file. - The line where exception occured. - Configuration exception. - - - - Creates the configuration exception. - - The message to display to the client when the exception is thrown. - Name of the configuration file. - The line where exception occured. - Configuration exception. - - - - Creates the configuration exception. - - The message to display to the client when the exception is thrown. - The inner exception. - XML node where exception occured. - Configuration exception. - - - - Creates the configuration exception. - - The message to display to the client when the exception is thrown. - XML node where exception occured. - Configuration exception. - - - - Creates the configuration exception. - - The message to display to the client when the exception is thrown. - The inner exception. - Configuration exception. - - - - Creates the configuration exception. - - The message to display to the client when the exception is thrown. - Configuration exception. - - - - Creates the configuration exception. - - Configuration exception. - - - - Determines whether the specified exception is configuration exception. - - The exception to check. - - true if the specified exception is configuration exception; otherwise, false. - - - - - Returns the line number of the specified node. - - Node to get the line number for. - The line number of the specified node. - - - - Returns the name of the file specified node is defined in. - - Node to get the file name for. - The name of the file specified node is defined in. - - - - An holding information about its original text source location. - - Erich Eichinger - - - - Holds text position information for e.g. error reporting purposes. - - - - - - - Gets a string specifying the file/resource name related to the configuration details. - - - - - Gets an integer specifying the line number related to the configuration details. - - - - - Gets an integer specifying the line position related to the configuration details. - - - - - Creates a new instance of , storing a copy of the passed - . - - - - - Creates a duplicate of this node. - - true to recursively clone the subtree under the specified node; false to clone only the node itself - - - - The name of the resource this element was read from - - - - - The line number within the resource this element was read from - - - - - The line position within the resource this element was read from. - - - - - An implementation, who's elements retain information - about their location in the original XML text document the were read from. - - - When loading a document, the used must implement . - Typical XmlReader implementations like support this interface. - - Erich Eichinger - - - - Overridden to create a retaining the current - text position information. - - - - - Overridden to create a retaining the current - text position information. - - - - - Load the document from the given . - Child nodes will store as their property. - - the name of the resource - The XML source - - - - Load the document from the given . - Child nodes will store as their property. - - the name of the resource - The XML source - - - - Load the document from the given . - Child nodes will store as their property. - - the name of the resource - The XML source - - - - Load the document from the given . - Child nodes will store as their property. - - the name of the resource - The XML source - - - - Load the document from the given . - Child nodes will store null as their property. - - The XML source - - - - Creates an object based on the information in the . The reader must be positioned on a node or attribute. - Child nodes will store as their property. - - - The new XmlNode or null if no more nodes exist. - - the name of the resource - The XML source - The reader is positioned on a node type that does not translate to a valid DOM node (for example, EndElement or EndEntity). - - - - Creates an object based on the information in the . The reader must be positioned on a node or attribute. - Child nodes will store null as their property. - - - The new XmlNode or null if no more nodes exist. - - The XML source - The reader is positioned on a node type that does not translate to a valid DOM node (for example, EndElement or EndEntity). - - - - Get info about the current text position during loading a document. - Outside loading a document, the properties of - will always be null. - - - - - Holds the current text position during loading a document - - - - - An holding information about its original text source location. - - Erich Eichinger - - - - Creates a new instance of , storing a copy of the passed - . - - - - - Creates a duplicate of this node. - - true to recursively clone the subtree under the specified node; false to clone only the node itself - - - - The name of the resource this element was read from - - - - - The line number within the resource this element was read from - - - - - The line position within the resource this element was read from. - - - - - Discovers the attributes of a - and provides access to the - s metadata. - - Rick Evans - - - - The method name associated with a delegate invocation. - - - - - Creates a new instance of the - class. - - - The event used to extract the delegate - from. - - - if the supplied is - . - - - - - Creates a new instance of the - class. - - - The delegate . - - - If the supplied is not a subclass of the - class, or is . - - - - - Checks to see if the method encapsulated by the supplied method - metadata is compatible with the method signature associated with - this delegate type. - - The method to be checked. - - if the method signature is compatible with - the signature of this delegate; if not, or - if the supplied parameter is - . - - - - - Gets the s of the parameters of the - method signature associated with this delegate type. - - -

- This method will never return ; the returned - array may be empty, but it most certainly - will not be . -

-
- - A array of the parameter - s; or the - array if the method signature has no parameters. - -
- - - Gets the return of the - method signature associated with this delegate type. - - The return . - - - - Gets the metadata about the method signature associated - with this delegate type. - - - The metadata about the method signature associated - with this delegate type. - - - - - Determines whether the supplied - is a type. - - - The to be checked. - - - if the supplied - is a ; - if not or the supplied - is . - - - - - Checks if the signature of the supplied - is compatible with the signature expected by the supplied - . - - The event to be checked against. - - The method signature to check for compatibility. - - - if the signature of the supplied - is compatible with the signature - expected by the supplied ; - if not or either of the supplied - parameters is . - - - - - - The of the delegate. - - - - - Use this class for obtaining instances for dynamic code generation. - - -

- The purpose of this class is to provide a simple abstraction for creating and managing dynamic assemblies. -

- - Using this factory you can't define several modules within a single dynamic assembly - only a simple one2one relation between assembly/module is used. - -
- -

The following excerpt from demonstrates usage:

- - public class DynamicProxyManager - { - public const string PROXY_ASSEMBLY_NAME = "Spring.Proxy"; - - public static TypeBuilder CreateTypeBuilder(string name, Type baseType) - { - // Generates type name - string typeName = String.Format("{0}.{1}_{2}", PROXY_ASSEMBLY_NAME, name, Guid.NewGuid().ToString("N")); - ModuleBuilder module = DynamicCodeManager.GetModuleBuilder(PROXY_ASSEMBLY_NAME); - return module.DefineType(typeName, PROXY_TYPE_ATTRIBUTES); - } - } - -
- Erich Eichinger - - - -
- - - prevent instantiation - - - - - Returns the for the dynamic module within the specified assembly. - - - If the assembly does not exist yet, it will be created.
- This factory caches any dynamic assembly it creates - calling GetModule() twice with - the same name will *not* create 2 distinct modules! -
- The assembly-name of the module to be returned - the that can be used to define new types within the specified assembly -
- - - Persists the specified dynamic assembly to the file-system - - the name of the dynamic assembly to persist - - Can only be called in DEBUG_DYNAMIC mode, per ConditionalAttribute rules. - - - - - Removes all registered s. - - - - - A utility class for raising events in a generic and consistent fashion. - - Rick Evans - - - - Raises the event encapsulated by the supplied - , passing the supplied - to the event. - - The event to be raised. - The arguments to the event. - - - - Invokes the supplied , passing the supplied - to the sink. - - The sink to be invoked. - The arguments to the sink. - - - - Raises events defensively. - - -

- Raising events defensively means that as the raised event is passed to each handler, - any thrown by a handler will be caught and silently - ignored. -

-
- Rick Evans -
- - - Defensively invokes the supplied , passing the - supplied to the sink. - - The sink to be invoked. - The arguments to the sink. - - - - Utility methods for IO handling - - - - - Copies one stream into another. - (Don't forget to call on the destination stream!) - - - Does not close the input stream! - - - - - Reads a stream into a byte array. - - - Does not close the input stream! - - - - - Various utility methods relating to numbers. - - -

- Mainly for internal use within the framework. -

-
- Aleksandar Seovic -
- - - Determines whether the supplied is an integer. - - The object to check. - - if the supplied is an integer. - - - - - Determines whether the supplied is a decimal number. - - The object to check. - - if the supplied is a decimal number. - - - - - Determines whether the supplied is of numeric type. - - The object to check. - - true if the specified object is of numeric type; otherwise, false. - - - - - Determines whether the supplied can be converted to an integer. - - The object to check. - - if the supplied can be converted to an integer. - - - - - Determines whether the supplied can be converted to an integer. - - The object to check. - - if the supplied can be converted to an integer. - - - - - Determines whether the supplied can be converted to a number. - - The object to check. - - true if the specified object is decimal number; otherwise, false. - - - - - Is the supplied equal to zero (0)? - - The number to check. - - id the supplied is equal to zero (0). - - - - - Negates the supplied . - - The number to negate. - The supplied negated. - - If the supplied is not a supported numeric type. - - - - - Adds the specified numbers. - - The first number. - The second number. - - - - Subtracts the specified numbers. - - The first number. - The second number. - - - - Multiplies the specified numbers. - - The first number. - The second number. - - - - Divides the specified numbers. - - The first number. - The second number. - - - - Calculates remainder for the specified numbers. - - The first number (dividend). - The second number (divisor). - - - - Raises first number to the power of the second one. - - The first number. - The second number. - - - - Coerces the types so they can be compared. - - The right. - The left. - - - - Creates a new instance of the class. - - -

- This is a utility class, and as such exposes no public constructors. -

-
-
- - - Helper methods with regard to objects, types, properties, etc. - - -

- Not intended to be used directly by applications. -

-
- Rod Johnson - Juergen Hoeller - Rick Evans (.NET) -
- - - The instance for this class. - - - - - An empty object array. - - - - - Creates a new instance of the class. - - -

- This is a utility class, and as such exposes no public constructors. -

-
-
- - - Instantiates the type using the assembly specified to load the type. - - This is a convenience in the case of needing to instantiate a type but not - wanting to specify in the string the version, culture and public key token. - The assembly. - Name of the type. - - - If the or is - - - If cannot load the type from the assembly or the call to InstantiateType(Type) fails. - - - - - Convenience method to instantiate a using - its no-arg constructor. - - -

- As this method doesn't try to instantiate s - by name, it should avoid loading issues. -

-
- - The to instantiate* - - A new instance of the . - - If the is - - - If the is an abstract class, an interface, - an open generic type or does not have a public no-argument constructor. - -
- - - Gets the zero arg ConstructorInfo object, if the type offers such functionality. - - The type. - Zero argument ConstructorInfo - - If the type is an interface, abstract, open generic type, or does not have a zero-arg constructor. - - - - - Determines whether the specified type is instantiable, i.e. not an interface, abstract class or contains - open generic type parameters. - - The type. - - - - Convenience method to instantiate a using - the given constructor. - - -

- As this method doesn't try to instantiate s - by name, it should avoid loading issues. -

-
- - The constructor to use for the instantiation. - - - The arguments to be passed to the constructor. - - A new instance. - - If the is - - - If the 's declaring type is an abstract class, - an interface, an open generic type or does not have a public no-argument constructor. - -
- - - Checks whether the supplied is not a transparent proxy and is - assignable to the supplied . - - -

- Neccessary when dealing with server-activated remote objects, because the - object is of the type TransparentProxy and regular is testing for assignable - types does not work. -

-

- Transparent proxy instances always return when tested - with the 'is' operator (C#). This method only checks if the object - is assignable to the type if it is not a transparent proxy. -

-
- The target to be checked. - The value that should be assigned to the type. - - if the supplied is not a - transparent proxy and is assignable to the supplied . - -
- - - Determine if the given is assignable from the - given value, assuming setting by reflection. - - -

- Considers primitive wrapper classes as assignable to the - corresponding primitive types. -

-

- For example used in an object factory's constructor resolution. -

-
- The target . - The value that should be assigned to the type. - True if the type is assignable from the value. -
- - - Check if the given represents a - "simple" property, - i.e. a primitive, a , a - , or a corresponding array. - - -

- Used to determine properties to check for a "simple" dependency-check. -

-
- - The to check. - -
- - - Check if the given class represents a primitive array, - i.e. boolean, byte, char, short, int, long, float, or double. - - - - - Determines whether the specified array is null or empty. - - The array to check. - - true if the specified array is null empty; otherwise, false. - - - - - Determine if the given objects are equal, returning - if both are respectively - if only one is . - - The first object to compare. - The second object to compare. - - if the given objects are equal. - - - - - Returns the first element in the supplied . - - - The to use to enumerate - elements. - - - The first element in the supplied . - - - If the supplied did not have any elements. - - - - - Returns the first element in the supplied . - - - The to use to enumerate - elements. - - - The first element in the supplied . - - - If the supplied did not have any elements. - - - If the supplied is . - - - - - Returns the element at the specified index using the supplied - . - - - The to use to enumerate - elements until the supplied is reached. - - - The index of the element in the enumeration to return. - - - The element at the specified index using the supplied - . - - - If the supplied was less than zero, or the - supplied did not contain enough elements - to be able to reach the supplied . - - - - - Returns the element at the specified index using the supplied - . - - - The to use to enumerate - elements until the supplied is reached. - - - The index of the element in the enumeration to return. - - - The element at the specified index using the supplied - . - - - If the supplied was less than zero, or the - supplied did not contain enough elements - to be able to reach the supplied . - - - If the supplied is . - - - - - Gets the qualified name of the given method, consisting of - fully qualified interface/class name + "." method name. - - The method. - qualified name of the method. - - - - Return a String representation of an object's overall identity. - - The object (may be null). - The object's identity as String representation, - or an empty String if the object was null - - - - - Gets a hex String form of an object's identity hash code. - - The obj. - The object's identity code in hex notation - - - - Support matching of file system paths in a manner similar to that of the - NAnt FileSet. - - -

- Any (back)slashes are converted to forward slashes. -

-
- - - // true - PathMatcher.Match("c:/*.bat", @"c:\autoexec.bat"); - PathMatcher.Match("c:\fo*\*.bat", @"c:/foobar/autoexec.bat"); - PathMatcher.Match("c:\fo?\*.bat", @"c:/foo/autoexec.bat"); - // false - PathMatcher.Match("c:\fo?\*.bat", @"c:/fo/autoexec.bat"); - - - Federico Spinazzi -
- - - Determines if a given path matches a NAnt-like pattern. - - - A forward or back-slashed fileset-like pattern. - - A forward or back-slashed full path. - should the match consider the case - - if the path is matched by the pattern; - otherwise . - - - - - Determines if a given path matches a NAnt-like pattern. - - - A forward or back-slashed fileset-like pattern. - - A forward or back-slashed full path. - - if the path is matched by the pattern; - otherwise . - - - - - Replaces back(slashes) with forward slashes. - - - The path or the pattern to modify. - - A forward-slashed string. - - - - Helper method to convert a NAnt-like pattern into the - appropriate pattern for a regular expression. - - The NAnt-like pattern. - A regex-compatible pattern. - - - - Creates a new instance of the class. - - -

- This is a utility class, and as such exposes no public constructors. -

-
-
- - Utility methods for simple pattern matching, in particular for - Spring's typical "xxx*", "*xxx" and "*xxx*" pattern styles. - - Juergen Hoeller - Mark Pollack - - - Match a String against the given pattern, supporting the following simple - pattern styles: "xxx*", "*xxx" and "*xxx*" matches, as well as direct equality. - - the pattern to match against - - the String to match - - whether the String matches the given pattern - - - - Match a String against the given patterns, supporting the following simple - pattern styles: "xxx*", "*xxx" and "*xxx*" matches, as well as direct equality. - - the patterns to match against - - the String to match - - whether the String matches any of the given patterns - - - - - Convenience method that may be used by derived classes. Iterates over the list of to match against. - - the object's type. Must not be null. - the name of the object Must not be null. - the list of patterns, that shall be matched against. Must not be null. - - the used for - matching against each pattern in . Must not be null. - - the prefix to be used for dereferencing factory object names. - - If is null, will always return true, otherwise - if matches any of the patterns specified in . - - - - - Signature of callbacks that may be used for matching object names. - - the object name to check. - the pattern to match against. - true, if the matches - - - - - An implementation of the Java Properties class. - - Simon White - - - - Creates an empty property list with no default values. - - - - - Creates a property list with the specified initial properties. - - The initial properties. - - - - Reads a property list (key and element pairs) from the input stream. - - The stream to load from. - - - - Reads a property list (key and element pairs) from a text reader. - - The text reader to load from. - - - - Reads a property list (key and element pairs) from the input stream. - - the dictionary to put it in - The stream to load from. - - - - Reads a property list (key and element pairs) from a text reader. - - the dictionary to put it in - The text reader to load from. - - - - Strips whitespace from the front of the specified string. - - The string. - The string with all leading whitespace removed. - - - - Splits the specified string into a key / value pair. - - The line to split. - An array containing the key / value pair. - - - - Searches for the property with the specified key in this property list. - - The key. - The property, or null if the key was not found. - - - - Searches for the property with the specified key in this property list. - - The key. - - The default value to be returned if the key is not found. - - The property, or the default value. - - - - Writes this property list out to the specified stream. - - The stream to write to. - - - - Sets the specified property key / value pair. - - The key. - The value. - - - - Writes the properties in this instance out to the supplied stream. - - The stream to write to. - Arbitrary header information. - - - - Removes the key / value pair identified by the supplied key. - - - The key identifying the key / value pair to be removed. - - - - - Adds the specified key / object pair to this collection. - - The key. - The value. - - - - Adds the specified key / object pair to this collection. - - - - - Various reflection related methods that are missing from the standard library. - - Rod Johnson - Juergen Hoeller - Aleksandar Seovic (.NET) - Stan Dvoychenko (.NET) - Bruno Baia (.NET) - - - - Convenience value that will - match all private and public, static and instance members on a class - in a case inSenSItivE fashion. - - - - - Returns signature for the specified , method name and argument - s. - - The the method is in. - The method name. - - The argument s. - - The method signature. - - - - Returns method for the specified , method - name and argument - s. - - Searches with BindingFlags - - The target to find the method on. - - The method to find. - - The argument s. May be - if the method has no arguments. - - The target method. - - - - Returns an array of parameter s for the specified method - or constructor. - - The method (or constructor). - An array containing the parameter s. - - If is . - - - - - Returns an array of parameter s for the - specified parameter info array. - - The parameter info array. - An array containing parameter s. - - If is or any of the - elements is . - - - - - Returns an array of s that represent - the names of the generic type parameter. - - The method. - An array containing the parameter names. - - If is . - - - - - Returns an array of s that represent - the names of the generic type parameter. - - The parameter info array. - An array containing parameter names. - - If is or any of the - elements is . - - - - - From a given list of methods, selects the method having an exact match on the given ' types. - - the list of methods to choose from - the arguments to the method - the method matching exactly the passed ' types - - If more than 1 matching methods are found in the list. - - - - - From a given list of methods, selects the method having an exact match on the given ' types. - - the type of method (used for exception reporting only) - the list of methods to choose from - the arguments to the method - the method matching exactly the passed ' types - - If more than 1 matching methods are found in the list. - - - - - From a given list of constructors, selects the constructor having an exact match on the given ' types. - - the list of constructors to choose from - the arguments to the method - the constructor matching exactly the passed ' types - - If more than 1 matching methods are found in the list. - - - - - Packages arguments into argument list containing parameter array as a last argument. - - Argument vaklues to package. - Total number of oarameters. - Type of the param array element. - Packaged arguments. - - - - Convenience method to convert an interface - to a array that contains - all the interfaces inherited and the specified interface. - - The interface to convert. - An array of interface s. - - If the specified is not an interface. - - - If is . - - - - - Is the supplied the default indexer for the - supplied ? - - - The name of the property on the supplied to be checked. - - - The to be checked. - - - if the supplied is the - default indexer for the supplied . - - - If the supplied is . - - - - - Is the supplied declared on one of these interfaces? - - The method to check. - The array of interfaces we want to check. - - if the method is declared on one of these interfaces. - - - If any of the s specified is not an interface. - - - If or any of the specified interfaces is - . - - - - - Returns the default value for the specified - - -

- Follows the standard .NET conventions for default values where - relevant; for example, all numeric types default to the value - 0. -

-
- - The to return default value for. - - - The default value for the specified . - - - If the supplied is an enumerated type that - has no values. - -
- - - Returns an array consisting of the default values for the supplied - . - - - The array of s to return default values for. - - - An array consisting of the default values for the supplied - . - - - If any of the elements in the supplied - array is an enumerated type that has no values. - - - - - - Checks that the parameter s of the - supplied match the parameter - s of the supplied - . - - The method to be checked. - - The array of parameter s to check against. - - - if the parameter s - match. - - - - - Returns an array containing the s of the - objects in the supplied array. - - - The objects array for which the corresponding s - are needed. - - - An array containing the s of the objects - in the supplied array; this array will be empty (but not - if the supplied - is null or has no elements. - - -

- [C#]
- Given an array containing the following objects, - [83, "Foo", new object ()], the - array returned from this method call would consist of the following - elements... - [Int32, String, Object]. -

-
-
- - - Does the given and/or it's superclasses - have at least one or more methods with the given name (with any - argument types)? - - -

- Includes non-public methods in the methods searched. -

-
- - The to be checked. - - - The name of the method to be searched for. Case inSenSItivE. - - - if the given or / and it's - superclasses have at least one or more methods (with any argument types); - if not, or either of the parameters is . - -
- - - Within , counts the number of overloads for the method with the given (case-insensitive!) - - The type to be searched - the name of the method for which overloads shall be counted - The number of overloads for method within type - - - - Creates a . - - -

- Note that if a non- - is supplied, any read write properties exposed by the - will be used to overwrite values that may have been passed in via the - . That is, the will be used - to initialize the custom attribute, and then any read-write properties on the - will be plugged in. -

-
- - The desired . - - - Any constructor arguments for the attribute (may be - in the case of no arguments). - - - Source attribute to copy properties from (may be ). - - A custom attribute builder. - - If the parameter is . - - - If the parameter is not a - that derives from the class. - - -
- - - Creates a . - - - The desired . - - - Source attribute to copy properties from (may be ). - - A custom attribute builder. - - - - Creates a . - - - The source attribute to copy properties from. - - A custom attribute builder. - - If the supplied is - . - - - - - Creates a . - - - The desired . - - A custom attribute builder. - - - - Creates a . - - - The desired . - - - Any constructor arguments for the attribute (may be - in the case of no arguments). - - A custom attribute builder. - - - - Creates a . - - - The to create - the custom attribute builder from. - - A custom attribute builder. - - - - Tries to find matching methods in the specified - for each method in the supplied list. - - - The to look for matching methods in. - - The methods to match. - - A flag that specifies whether to throw an exception if a matching - method is not found. - - A list of the matched methods. - - If either of the or - parameters are . - - - - - Returns the of the supplied - . - - -

- If the is a - instance, the return value of this method call with be the - parameter cast to a - . If the is - anything other than a , the return value - will be the result of invoking the 's - method. -

-
- - A or instance. - - - The argument if it is a - or the result of invoking - on the argument if it - is an . - - - If the is . - -
- - - Unwraps the supplied - and returns the inner exception preserving the stack trace. - - - The to unwrap. - - The unwrapped exception. - - - - Is the supplied can be accessed outside the assembly ? - - The type to check. - - if the type can be accessed outside the assembly; - Otherwise . - - - - - Is the supplied can be accessed - from the supplied friendly assembly ? - - The type to check. - The friendly assembly name. - - if the type can be accessed - from the supplied friendly assembly; Otherwise . - - - - - Gets all of the interfaces implemented by - the specified . - - - The object to get the interfaces of. - - - All of the interfaces implemented by the - . - - - - - Returns the explicit that is the root cause of an exception. - - - If the InnerException property of the current exception is a null reference - or a , returns the current exception. - - The last exception thrown. - - The first explicit exception thrown in a chain of exceptions. - - - - - Copies all fields from one object to another. - - - The types of both objects must be related. This means, that either of the following is true: - - fromObject.GetType() == toObject.GetType() - fromObject.GetType() is derived from toObject.GetType() - toObject.GetType() is derived from fromObject.GetType() - - - The source object - The object, who's fields will be populated with values from the source object - If the object's types are not related - - - - Creates a . - - Bruno Baia - - - - Creates a new instance of the - class. - - The custom attribute type. - - - - Creates a new instance of the - class. - - The custom attribute type. - The custom attribute constructor arguments. - - - - Adds the specified values to the constructor argument list - used to create the custom attribute. - - An array of argument values. - - - - Adds a property value to the custom attribute. - - The property name. - The property value. - - - - Creates the . - - The created . - - - - Miscellaneous utility methods. - - -

- Mainly for internal use within the framework. -

-
- Rod Johnson - Juergen Hoeller - Keith Donald - Aleksandar Seovic (.NET) - Mark Pollack (.NET) - Rick Evans (.NET) -
- - - The string that signals the start of an Ant-style expression. - - - - - The string that signals the end of an Ant-style expression. - - - - - An empty array of instances. - - - - - Creates a new instance of the class. - - -

- This is a utility class, and as such exposes no public constructors. -

-
-
- - - Tokenize the given into a - array. - - -

- If is , returns an empty - array. -

-

- If is or the empty - , returns a array with one - element: itself. -

-
- The to tokenize. - - The delimiter characters, assembled as a . - - - Trim the tokens via . - - - Omit empty tokens from the result array. - An array of the tokens. -
- - - Convert a CSV list into an array of s. - - A CSV list. - - An array of s, or the empty array - if is . - - - - - Take a which is a delimited list - and convert it to a array. - - -

- If the supplied is a - or zero-length string, then a single element - array composed of the supplied - will be - eturned. If the supplied - is , then an empty, - zero-length array will be returned. -

-
- - The to be parsed. - - - The delimeter (this will not be returned). Note that only the first - character of the supplied is used. - - - An array of the tokens in the list. - -
- - - Convenience method to return an - as a delimited - (e.g. CSV) . - - - The to parse. - - - The delimiter to use (probably a ','). - - The delimited string representation. - - - - Convenience method to return an - as a CSV - . - - - The to display. - - The delimited string representation. - - - - Convenience method to return an array as a CSV - . - - - The array to parse. Elements may be of any type ( - will be called on each - element). - - - - - Convenience method to return a - array as a delimited (e.g. CSV) . - - - The array to parse. Elements may be of any type ( - will be called on each - element). - - - The delimiter to use (probably a ','). - - - - Checks if a string has length. - - The string to check, may be . - - - if the string has length and is not - . - - - - StringUtils.HasLength(null) = false - StringUtils.HasLength("") = false - StringUtils.HasLength(" ") = true - StringUtils.HasLength("Hello") = true - - - - - - Checks if a has text. - - -

- More specifically, returns if the string is - not , it's is > - zero (0), and it has at least one non-whitespace character. -

-
- - The string to check, may be . - - - if the is not - , - > zero (0), and does not consist - solely of whitespace. - - - - StringUtils.HasText(null) = false - StringUtils.HasText("") = false - StringUtils.HasText(" ") = false - StringUtils.HasText("12345") = true - StringUtils.HasText(" 12345 ") = true - - -
- - - Checks if a is - or an empty string. - - -

- More specifically, returns if the string is - , it's is equal - to zero (0), or it is composed entirely of whitespace - characters. -

-
- - The string to check, may (obviously) be . - - - if the is - , has a length equal to zero (0), or - is composed entirely of whitespace characters. - - - - StringUtils.IsNullOrEmpty(null) = true - StringUtils.IsNullOrEmpty("") = true - StringUtils.IsNullOrEmpty(" ") = true - StringUtils.IsNullOrEmpty("12345") = false - StringUtils.IsNullOrEmpty(" 12345 ") = false - - -
- - - Strips first and last character off the string. - - The string to strip. - The stripped string. - - - - Returns a list of Ant-style expressions from the specified text. - - The text to inspect. - - A list of expressions that exist in the specified text. - - - If any of the expressions in the supplied - is empty (${}). - - - - - Replaces Ant-style expression placeholder with expression value. - - -

- -

-
- The string to set the value in. - The name of the expression to set. - The expression value. - - A new string with the expression value set; the - value if the supplied - is , has a length - equal to zero (0), or is composed entirely of whitespace - characters. - -
- - - Surrounds (prepends and appends) the string value of the supplied - to the supplied . - - -

- The return value of this method call is always guaranteed to be non - . If every value passed as a parameter to this method is - , the string will be returned. -

-
- - The prefix and suffix that respectively will be prepended and - appended to the target . If this value - is not a value, it's attendant - value will be used. - - - The target that is to be surrounded. If this value is not a - value, it's attendant - value will be used. - - The surrounded string. -
- - - Surrounds (prepends and appends) the string values of the supplied - and to the supplied - . - - -

- The return value of this method call is always guaranteed to be non - . If every value passed as a parameter to this method is - , the string will be returned. -

-
- - The value that will be prepended to the . If this value - is not a value, it's attendant - value will be used. - - - The target that is to be surrounded. If this value is not a - value, it's attendant - value will be used. - - - The value that will be appended to the . If this value - is not a value, it's attendant - value will be used. - - The surrounded string. -
- - - Converts escaped characters (for example "\t") within a string - to their real character. - - The string to convert. - The converted string. - - - - Utility class containing miscellaneous system-level functionality. - - Aleksandar Seovic - - - - Registers assembly resolver that iterates over the - assemblies loaded into the current - in order to find an assembly that cannot be resolved. - - - This method has to be called if you need to serialize dynamically - generated types in transient assemblies, such as Spring AOP proxies, - because standard .NET serialization engine always tries to load - assembly from the disk. - - - - - Returns true if running on Mono - - Tests for the presence of the type Mono.Runtime - - - - Gets the thread id for the current thread. Use thread name is available, - otherwise use CurrentThread.GetHashCode() for .NET 1.0/1.1 and - CurrentThread.ManagedThreadId otherwise. - - The thread id. - - - - Holds text position information for e.g. error reporting purposes. - - - - - - - Creates a new TextPositionInfo instance. - - - - - Creates a new TextPositionInfo instance, copying values from another instance. - - - - - The filename related to this text position - - - - - The line number related to this text position - - - - - The line position related to this text position - - - - - UniqueKey allows for generating keys unique to a type or particular instance and a partial name, - that can e.g. be used as keys in . - - - // shows usage type-scoped keys - UniqueKey classAKey = UniqueKey.GetTypeScoped(typeof(ClassA), "myKey"); - UniqueKey classBKey = UniqueKey.GetTypeScoped(typeof(ClassB), "myKey"); - - HttpContext.Current.Items.Add( classAKey, "some value unqiue for class A having key 'myKey'"); - object value = HttpContext.Current.Items[ UniqueKey.GetTypeScoped(typeof(ClassA), "myKey") ]; - Assert.AreEqual( "some value unique for class A having key 'myKey'", value); - - HttpContext.Current.Items.Add( classBKey, "some value unqiue for class B having key 'myKey'"); - object value = HttpContext.Current.Items[ UniqueKey.GetTypeScoped(typeof(ClassB), "myKey") ]; - Assert.AreEqual( "some value unique for class B having key 'myKey'", value); - - - - - Initialize a new instance of from its string representation. - See and See for details. - - The string representation of the new instance. - - - - Compares this instance to another. - - - - - Compares this instance to another. - - - - - Returns the hash code for this key. - - - - - - Returns a string representation of this key. - - - - - Creates a new key instance unique to the given instance. - - The instance the key shall be unique to - The partial key to be made unique - - - If is of type - - - - Creates a new key instance unique to the given type. - - The type the key shall be unique to - The partial key to be made unique - - - - Returns a key unique for the given instance. - - The instance the key shall be unique to - The partial key to be made unique - A key formatted as typename[instance-id].partialkey - - - - Returns a key unique for the given type. - - The type the key shall be unique to - The partial key to be made unique - A key formatted as typename.partialkey - - - - XML utility methods. - - Aleksandar Seovic - - - - Gets an appropriate implementation - for the supplied . - - The XML that is going to be read. - XML schemas that should be used for validation. - Validation event handler. - - A validating implementation. - - - - - Gets an appropriate implementation - for the supplied . - - The XML that is going to be read. - to be used for resolving external references - XML schemas that should be used for validation. - Validation event handler. - - A validating implementation. - - - - - Gets an appropriate implementation - for the supplied . - - The XML that is going to be read. - - A non-validating implementation. - - - - - Implementation of that adds error message - to the validation errors container. - - Aleksandar Seovic - - - - Abstract base class that should be extended by all - validation actions. - - -

- This class implements template Execute method - and defines OnValid and OnInvalid methods that - can be overriden - by specific validation actions. -

-
- Aleksandar Seovic -
- - - An action that should be executed after validator is evaluated. - - -

- This interface allows us to define the actions that should be executed - after validation in a generic fashion. -

-

- For example, addition of error messages to validation errors collection - is performed by one specific implementation of this interface, . -

-
- Aleksandar Seovic -
- - - Executes the action. - - Whether associated validator is valid or not. - Validation context. - Additional context parameters. - Validation errors container. - - - - Initializes a new instance of the class. - - - - - Executes the action. - - Whether associated validator is valid or not. - Validation context. - Additional context parameters. - Validation errors container. - - - - Called when associated validator is valid. - - Validation context. - Additional context parameters. - Validation errors container. - - - - Called when associated validator is not valid. - - Validation context. - Additional context parameters. - Validation errors container. - - - - Evaluates 'when' expression. - - Root context to use for expression evaluation. - Additional context parameters. - True if the condition is true, False otherwise. - - - - Gets or sets the expression that determines if this validator should be evaluated. - - The expression that determines if this validator should be evaluated. - - - - Initializes a new instance of the class. - - Error message resource identifier. - Names of the error providers this message should be added to. - - - - Called when associated validator is invalid. - - Validation context. - Additional context parameters. - Validation errors container. - - - - Resolves the error message. - - Validation context to resolve message parameters against. - Additional context parameters. - Resolved error message - - - - Resolves the message parameters. - - List of parameters to resolve. - Validation context to resolve parameters against. - Additional context parameters. - Resolved message parameters. - - - - Sets the expressions that should be resolved to error message parameters. - - The expressions that should be resolved to error message parameters. - - - - Implementation of that allows you - to define Spring.NET expressions that should be evaluated after - validation. - - Aleksandar Seovic - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - Expression to execute when validator is valid. - Expression to execute when validator is not valid. - - - - Initializes a new instance of the class. - - Expression to execute when validator is valid. - Expression to execute when validator is not valid. - - - - Called when associated validator is valid. - - Validation context. - Additional context parameters. - Validation errors container. - - - - Called when associated validator is invalid. - - Validation context. - Additional context parameters. - Validation errors container. - - - - Gets or sets the expression to execute when validator is valid. - - The expression to execute when validator is valid. - - - - Gets or sets the expression to execute when validator is not valid. - - The expression to execute when validator is not valid. - - - - Implementation of the custom configuration parser for validator definitions. - - Aleksandar Seovic - - - - Initializes a new instance of the class. - - - - - Parse the specified element and register any resulting - IObjectDefinitions with the IObjectDefinitionRegistry that is - embedded in the supplied ParserContext. - - The element to be parsed into one or more IObjectDefinitions - The object encapsulating the current state of the parsing - process. - - The primary IObjectDefinition (can be null as explained above) - - - Implementations should return the primary IObjectDefinition - that results from the parse phase if they wish to used nested - inside (for example) a <property> tag. - Implementations may return null if they will not - be used in a nested scenario. - - - - - - Parses the validator definition. - - Validator's identifier. - The element to parse. - The parser helper. - Validator object definition. - - - - Parses and potentially registers a validator. - - - Only validators that have id attribute specified are registered - as separate object definitions within application context. - - Validator XML element. - The parser helper. - Validator object definition. - - - - Gets the name of the object type for the specified element. - - The element. - The name of the object type. - - - - Creates an error message action based on the specified message element. - - The message element. - The parser helper. - The error message action definition. - - - - Creates a generic action based on the specified element. - - The action definition element. - The parser helper. - Generic validation action definition. - - - - Creates object definition for the validator reference. - - The action definition element. - The parser helper. - Generic validation action definition. - - - - Evaluates validator test using condition evaluator. - - Aleksandar Seovic - - - - Base class that defines common properties for all validators. - - -

- Custom validators should always extend this class instead of - simply implementing interface, in - order to inherit common validator functionality. -

-
- Aleksandar Seovic -
- - - An object that can validate application-specific objects. - - -

- The primary motivation for this interface is to enable validation to be - decoupled from the (user) interface and placed in business objects. -

-

- Application developers writing their own custom - implementations will - typically not implement this interface directly. In most cases, custom - validators woud be better served deriving from the - class, with the - custom validation ligic being implemented in an override of the - - - template method. -

-
- Aleksandar Seovic - -
- - - Validates the specified object. - - The object to validate. - - The instance to add any error - messages to in the case of validation failure. - - - if validation was successful. - - - - - Validates the specified object. - - The object to validate. - Additional context parameters. - - The instance to add any error - messages to in the case of validation failure. - - - if validation was successful. - - - - - Creates a new instance of the class. - - - - - Creates a new instance of the class. - - The expression to validate. - The expression that determines if this validator should be evaluated. - - - - Creates a new instance of the class. - - The expression to validate. - The expression that determines if this validator should be evaluated. - - - - Validates the specified object. - - The object to validate. - instance to add error messages to. - True if validation was successful, False otherwise. - - - - Validates the specified object. - - The object to validate. - Additional context parameters. - instance to add error messages to. - True if validation was successful, False otherwise. - - - - Validates test object. - - Object to validate. - True if specified object is valid, False otherwise. - - - - Evaluates test expression. - - Root context to use for expression evaluation. - Additional context parameters. - Result of the test expression evaluation, or validation context if test is null. - - - - Evaluates when expression. - - Root context to use for expression evaluation. - Additional context parameters. - True if the condition is true, False otherwise. - - - - Processes the error messages. - - Whether validator is valid or not. - Validation context. - Additional context parameters. - Validation errors container. - - - - Gets or sets the test expression. - - The test expression. - - - - Gets or sets the expression that determines if this validator should be evaluated. - - The expression that determines if this validator should be evaluated. - - - - Gets or sets the validation actions. - - The actions that should be executed after validation. - - - - Creates a new instance of the class. - - - - - Creates a new instance of the class. - - The expression to validate. - The expression that determines if this validator should be evaluated. - - - - Creates a new instance of the class. - - The expression to validate. - The expression that determines if this validator should be evaluated. - - - - Evaluates the test using condition evaluator. - - -

- Test can be any logical expression that is supported by the Spring.NET logical - expression evaluation engine, and can use any variables that can be resolved - by the variable resolver used by the validation engine. -

-
- The object to validate. - - if the supplied is valid. - -
- - - Perform credit card validations. - - - By default, all supported card types are allowed. You can specify - which credit card type validator should be used by setting - the value of property to a concrete - instance. - - - - - Creates a new instance of the UrlValidator class. - - - - - Creates a new instance of the UrlValidator class. - - The expression to validate. - The expression that determines if this validator should be evaluated. - Credit Card type validator to use. - - - - Creates a new instance of the UrlValidator class. - - The expression to validate. - The expression that determines if this validator should be evaluated. - Credit Card type validator to use. - - - - Validates the supplied . - - - In the case of the class, - the test should be a string variable that will be evaluated and the object - obtained as a result of this evaluation will be checked if it is - a valid credit card number. - - The object to validate. - - if the supplied is valid - credit card number. - - - - - Checks if the is a valid credit card number. - - - The card number to validate. - - - true if the card number is valid. - - - - - Validates card number with the specified validator. - - - Credit card number to validate. - - - true if credit card number is a valid number of credit card type specified. - - - - - Checks for a valid credit card number. - - - Credit Card Number. - - - true if the card number passes the LuhnCheck. - - - - - Credit card type validator to use. - - - Can be concrete implementations of - interface. The following are available implementations: - , , , - . - - - - - CreditCardType interface defines how validation is performed - for one type/brand of credit card. - - - - - Returns true if the card number matches this type of - credit card. - - - The card number, never null. - - - true if the number matches. - - - - - Visa credit card type validation support. - - - - - Indicates, wheter the given credit card number matches a visa number. - - - - - American Express credit card type validation support. - - - - - Indicates, wheter the given credit card number matches an amex number. - - - - - Discover credit card type validation support. - - - - - Indicates, wheter the given credit card number matches a discover number. - - - - - Mastercard credit card type validation support. - - - - - Indicates, wheter the given credit card number matches a mastercard number. - - - - - Perform email validations. - - -

- This implementation is not guaranteed to catch all possible errors in an - email address. For example, an address like nobody@noplace.nowhere will - pass validator, even though there is no TLD "nowhere". - - Goran Milosavljevic - - -

- Creates a new instance of the EmailValidator class. - -
- - - Creates a new instance of the EmailValidator class. - - The expression to validate. - The expression that determines if this validator should be evaluated. - - - - Creates a new instance of the EmailValidator class. - - The expression to validate. - The expression that determines if this validator should be evaluated. - - - - Validates the supplied . - - - In the case of the class, - the test should be a string variable that will be evaluated and the object - obtained as a result of this evaluation will be checked if it is - a valid e-mail address. - - The object to validate. - - if the supplied is valid - e-mail address. - - - - - Regular expression used for validation of object passed to this . - - - - - Validates that the object is valid ISBN-10 or ISBN-13 value. - - Goran Milosavljevic - - - - Creates a new instance of the ISBNValidator class. - - - - - Creates a new instance of the ISBNValidator class. - - The expression to validate. - The expression that determines if this validator should be evaluated. - - - - Creates a new instance of the ISBNValidator class. - - The expression to validate. - The expression that determines if this validator should be evaluated. - - - - Validates the supplied . - - - In the case of the class, - the test should be a string variable that will be evaluated and the object - obtained as a result of this evaluation will be tested using the ISBN-10 or - ISBN-13 validation rules. - - The object to validate. - - if the supplied is valid ISBN. - - - - - Validates against ISBN-10 or ISBN-13 validation - rules. - - - ISBN string to validate. - - - true if is a valid ISBN-10 or ISBN-13 code. - - - - - ISBN-10 consists of 4 groups of numbers separated by either - dashes (-) or spaces. - - - The first group is 1-5 characters, second 1-7, third 1-6, - and fourth is 1 digit or an X. - - - - - ISBN-13 consists of 5 groups of numbers separated by either - dashes (-) or spaces. - - - The first group is 978 or 979, the second group is - 1-5 characters, third 1-7, fourth 1-6, and fifth is 1 digit. - - - - - Validates that object matches specified regular expression. - - -

- The test expression must evaluate to a ; - otherwise, an exception is thrown. -

-
- Aleksandar Seovic -
- - - Creates a new instance of the class. - - - - - Creates a new instance of the class. - - The expression to validate. - The expression that determines if this validator should be evaluated. - The regular expression to match against. - - - - Creates a new instance of the class. - - The expression to validate. - The expression that determines if this validator should be evaluated. - The regular expression to match against. - - - - Validates an object. - - Object to validate. - - if the supplied - object is valid. - - - If the supplied is not a - - - - - - The regular expression text to match against. - - The regular expression text. - - - - The for the regular expression evaluation. - - The regular expression evaluation options. - - - - - Validates that required value is not empty. - - -

- This validator uses following rules to determine if target value is valid: - - - - - - - - - - - - - - - - - - - - - - - - - -
Target Valid Value
A .Not or an empty string.
A .Not and not .
One of the number types.Not zero.
A .Not or whitespace.
Any reference type other than .Not .
-

-

- You cannot use this validator to validate any value types other than the ones - specified in the table above. -

-
- Aleksandar Seovic -
- - - Creates a new instance of the class. - - - - - Creates a new instance of the class. - - The expression to validate. - The expression that determines if this validator should be evaluated. - - - - Creates a new instance of the class. - - The expression to validate. - The expression that determines if this validator should be evaluated. - - - - Validates the supplied . - - - In the case of the class, - the test should be a variable expression that will be evaluated and the object - obtained as a result of this evaluation will be tested using the rules described - in the class overview of the - class. - - The object to validate. - - if the supplied is valid. - - - - - Validates that the value is valid URL. - - Goran Milosavljevic - - - - Creates a new instance of the UrlValidator class. - - - - - Creates a new instance of the UrlValidator class. - - The expression to validate. - The expression that determines if this validator should be evaluated. - - - - Creates a new instance of the UrlValidator class. - - The expression to validate. - The expression that determines if this validator should be evaluated. - - - - Validates the supplied . - - - In the case of the class, - the test should be a string variable that will be evaluated and the object - obtained as a result of this evaluation will be tested using the URL validation rules. - - The object to validate. - - if the supplied is valid. - - - - - Regular expression used for validation of object passed to this . - - - - - implementation that supports grouping of validators. - - -

- This validator will be valid when one or more of the validators in the Validators - collection are valid. -

-

- ValidationErrors property will return a union of all validation error messages - for the contained validators, but only if this validator is not valid (meaning, when none - of the contained validators are valid). -

-
- Aleksandar Seovic -
- - - implementation that supports grouping of validators. - - -

- This validator will be valid only when all of the validators in the Validators - collection are valid. -

-

- ValidationErrors property will return a union of all validation error messages - for the contained validators. -

-
- Aleksandar Seovic -
- - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The expression that determines if this validator should be evaluated. - - - - Initializes a new instance of the class. - - The expression that determines if this validator should be evaluated. - - - - Validates the specified object. - - The object to validate. - Additional context parameters. - instance to add error messages to. - True if validation was successful, False otherwise. - - - - Actual implementation how to validate the specified object. - - The object to validate. - Additional context parameters. - instance to add error messages to. - True if validation was successful, False otherwise. - - - - Doesn't do anything for validator group as there is no single test. - - Object to validate. - True if specified object is valid, False otherwise. - - - - Gets or sets the validators. - - The validators. - - - - When set true, shortcircuits evaluation. - - - The validators within the group will only be validated - in order until the first validator fails. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The expression that determines if this validator should be evaluated. - - - - Initializes a new instance of the class. - - The expression that determines if this validator should be evaluated. - - - - Validates the specified object. - - The object to validate. - Additional context parameters. - instance to add error messages to. - True if validation was successful, False otherwise. - - - - implementation that supports validating collections. - - -

- This validator will be valid only when all of the validators in the Validators - collection are valid for all of the objects in the specified collection. -

-

- You can specify if you want to validate all of the collection elements regardless of the errors, by - setting the ValidateAll property to true. -

-

- If you set the IncludeElementErrors property to true, - ValidationErrors collection will contain a union of all validation error messages - for the contained validators; - Otherwise it will contain only error messages that were set for this Validator. -

-
- Damjan Tomic - Aleksandar Seovic -
- - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The bool that determines if all elements of the collection should be evaluated. - regardless of the Errors - - The bool that determines whether Validate method should collect - all error messages returned by the item validators - - - - Initializes a new instance of the class. - - The expression that determines if this validator should be evaluated. - The bool that determines if this all elements of the collection should be evaluated. - regardless of the Errors - - The bool that determines whether Validate method should collect - all error messages returned by the item validators - - - - Initializes a new instance of the class. - - The expression that determines if this validator should be evaluated. - The bool that determines if this all elements of the collection should be evaluated. - regardless of the Errors - - The bool that determines whether Validate method should collect - all error messages returned by the item validators - - - - Validates the specified collection of objects. - If the IncludeElementErrors property was set to true, - collection will contain a union of all validation error messages - for the contained validators; - Otherwise it will contain only error messages that were set for this Validator. - - The collection to validate. - Additional context parameters. - instance to add error messages to. - True if validation was successful, False otherwise. - - - - Actual implementation how to validate the specified object. - - The object to validate. - Additional context parameters. - instance to add error messages to. - True if validation was successful, False otherwise. - - - - Gets or sets the value that indicates whether to validate all elements of the collection - regardless of the errors. - - This is just an alias for - - - - Gets or sets the value that indicates whether to capture all the errors of the specific - elements of the collection - - - - - Gets or sets the expression that should be used to narrow validation context. - - The expression that should be used to narrow validation context. - - - - implementation that supports grouping of validators. - - -

- This validator will be valid when one and only one of the validators in the Validators collection are valid -

-

- ValidationErrors property will return a union of all validation error messages - for the contained validators, but only if this validator is not valid (meaning, when none - of the contained validators are valid). -

-

- By default, this validator group uses == true semantics. -

-
- Aleksandar Seovic -
- - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The expression that determines if this validator should be evaluated. - - - - Initializes a new instance of the class. - - The expression that determines if this validator should be evaluated. - - - - Actual implementation how to validate the specified object. - - The object to validate. - Additional context parameters. - instance to add error messages to. - True if validation was successful, False otherwise. - - - - An interface that validation errors containers have to implement. - - Aleksandar Seovic - - - - Adds the supplied to this - instance's collection of errors. - - - The provider that should be used for message grouping; can't be - . - - The error message to add. - - If the supplied or is . - - - - - Merges another instance of into this one. - - -

- If the supplied is , - then no errors will be added to this instance, and this method will - (silently) return. -

-
- - The validation errors to merge; can be . - -
- - - Gets the list of errors for the supplied error . - - -

- If there are no errors for the supplied , - an empty will be returned. -

-
- Error key that was used to group messages. - - A list of all s for the supplied lookup . - -
- - - Gets the list of resolved error messages for the supplied lookup . - - -

- If there are no errors for the supplied lookup , - an empty will be returned. -

-
- Error key that was used to group messages. - to resolve messages against. - - A list of resolved error messages for the supplied lookup . - -
- - - Does this instance contain any validation errors? - - -

- If this returns , this means that it (obviously) - contains no validation errors. -

-
- if this instance is empty. -
- - - Gets the list of all error providers. - - - - - Allows developers to specify which validator should be used - to validate method argument. - - Damjan Tomic - Aleksandar Seovic - - - - Creates an attribute instance. - - - The name of the validator to use (must be defined within - Spring application context). - - - - - Gets the name of the validator to use. - - The name of the validator to use. - - - - A container for validation errors. - - -

- This class groups validation errors by validator names and allows - access to both the complete errors collection and to the errors for a - certain validator. -

-
- Aleksandar Seovic - Goran Milosavljevic -
- - - Default constructor. - - - - - This property is reserved, apply the - - to the class instead. - - - An that describes the - XML representation of the object that is produced by - the - method and consumed by the - - method. - - - - - Generates an object from its XML representation. - - - The stream - from which the object is deserialized. - - - - - Converts an object into its XML representation. - - - The stream - to which the object is serialized. - - - - - Adds the supplied to this - instance's collection of errors. - - - The provider that should be used for message grouping; can't be - . - - The error message to add. - - If the supplied or is . - - - - - Merges another instance of into this one. - - -

- If the supplied is , - then no errors will be added to this instance, and this method will - (silently) return. -

-
- - The validation errors to merge; can be . - -
- - - Gets the list of errors for the supplied lookup . - - -

- If there are no errors for the supplied lookup , - an empty will be returned. -

-
- Error key that was used to group messages. - - A list of all s for the supplied lookup . - -
- - - Gets the list of resolved error messages for the supplied lookup . - - -

- If there are no errors for the supplied lookup , - an empty will be returned. -

-
- Error key that was used to group messages. - to resolve messages against. - - A list of resolved error messages for the supplied lookup . - -
- - - Does this instance contain any validation errors? - - -

- If this returns , this means that it (obviously) - contains no validation errors. -

-
- if this instance is empty. -
- - - Gets the list of all providers. - - - - - Thrown by the validation advice if the method parameters validation fails. - - Aleksandar Seovic - - - - Creates a new instance of the ValidationException class. - - - - - Creates a new instance of the ValidationException class with - specified validation errors. - - - Validation errors. - - - - - Creates a new instance of the ValidationException class with the - specified message. - - - A message about the exception. - - - - - Creates a new instance of the ValidationException class with the - specified message and validation errors. - - - A message about the exception. - - - Validation errors. - - - - - Creates a new instance of the ValidationException class with the - specified message and root cause. - - - A message about the exception. - - - The root exception that is being wrapped. - - - - - Creates a new instance of the ValidationException class with the - specified message, root cause and validation errors. - - - A message about the exception. - - - The root exception that is being wrapped. - - - Validation errors. - - - - - Creates a new instance of the ValidationException class. - - - The - that holds the serialized object data about the exception being thrown. - - - The - that contains contextual information about the source or destination. - - - - - Implements object serialization. - - - The - that holds the serialized object data about the exception being thrown. - - - The - that contains contextual information about the source or destination. - - - - - Gets validation errors. - - Validation errors. - - - - Represents a reference to an externally defined validator object - - -

- This class allows validation groups to reference validators that - are defined outside of the group itself. -

-

- It also allows users to narrow the context for the referenced validator - by specifying value for the Context property. -

-
- Aleksandar Seovic -
- - - Initializes a new instance of the class. - - - - - Validates the specified object. - - The object to validate. - instance to add error messages to. - True if validation was successful, False otherwise. - - - - Validates the specified object. - - The object to validate. - Additional context parameters. - instance to add error messages to. - True if validation was successful, False otherwise. - - - - Gets or sets the name of the referenced validator. - - The name of the referenced validator. - - - - Gets or sets the expression that should be used to narrow validation context. - - The expression that should be used to narrow validation context. - - - - Callback that supplies the owning factory to an object instance. - - - Owning - (may not be ). The object can immediately - call methods on the factory. - - -

- Invoked after population of normal object properties but before an init - callback like 's - - method or a custom init-method. -

-
- - In case of initialization errors. - -
- - diff --git a/sharedlib/Spring.Net/antlr.runtime.dll b/sharedlib/Spring.Net/antlr.runtime.dll deleted file mode 100644 index f242d024941eeb490c0692c312da177522e0f274..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 106496 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 SV-gsXz?cNaB=EnN!2boRHpevp diff --git a/sharedlib/Spring.Net/license.txt b/sharedlib/Spring.Net/license.txt deleted file mode 100644 index 29f81d8..0000000 --- a/sharedlib/Spring.Net/license.txt +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. From ceec1fae43d4884e745abb24e4f2934a33cb2f96 Mon Sep 17 00:00:00 2001 From: sergio moreno Date: Thu, 28 Mar 2013 12:14:36 +0100 Subject: [PATCH 2/2] Fixed return type from invoke Fixed return type from invoke call to WFC Updated to .NET 4.0 --- .gitattributes | 22 ++ .gitignore | 2 +- WCFChannelManager/example/Client/App.config | 158 ++++---- .../example/Client/Client.csproj | 166 ++++----- WCFChannelManager/example/Client/Program.cs | 48 +-- .../example/Client/Properties/AssemblyInfo.cs | 72 ++-- .../example/Common/Common.csproj | 128 +++---- WCFChannelManager/example/Common/IService1.cs | 88 ++--- .../example/Common/Properties/AssemblyInfo.cs | 72 ++-- WCFChannelManager/example/Server/App.config | 96 ++--- .../example/Server/Properties/AssemblyInfo.cs | 72 ++-- .../example/Server/Server.csproj | 158 ++++---- WCFChannelManager/example/Server/Service1.cs | 54 +-- .../WCFChannelManagerExample/Class1.cs | 22 +- .../Properties/AssemblyInfo.cs | 72 ++-- .../WCFChannelManagerExample.csproj | 116 +++--- .../WCFChannelManagerExample.sln | 86 ++--- .../WCFChannelManager/AutoSizePool.cs | 336 ++++++++--------- .../WCFChannelManager/AutoSizePoolFactory.cs | 76 ++-- .../WCFChannelManager/ChannelCreator.cs | 104 +++--- .../WCFChannelManager/ChannelManagerBase.cs | 252 ++++++------- .../ChannelManagerFactoryObject.cs | 2 +- .../WCFChannelManager/ChannelPoolManager.cs | 302 +++++++-------- .../WCFChannelManager/ICanCreateChannels.cs | 56 +-- .../WCFChannelManager/IChannelManager.cs | 80 ++-- .../WCFChannelManager/IPoolFactory.cs | 70 ++-- .../Properties/AssemblyInfo.cs | 72 ++-- .../WCFChannelManager/ProxyChannel.cs | 40 +- .../WCFChannelManager/SimplePoolFactory.cs | 110 +++--- .../SingleActionChannelManager.cs | 144 +++---- .../WCFChannelManager.csproj | 3 +- .../WcfChannelProxyTypeBuilder.cs | 260 ++++++------- .../WCFChannelManager/WcfInterceptor.cs | 4 +- .../WCFChannelManager/WcfMethodBuilder.cs | 294 +++++++-------- .../WCFChannelManagerTests/App.config | 62 +-- .../WCFChannelManagerTests/IService.cs | 57 +-- .../OpenGenericProxyChannel.cs | 28 +- .../Properties/AssemblyInfo.cs | 72 ++-- .../WCFChannelManagerTests/Service.cs | 120 +++--- .../StubAutoSizePool.cs | 70 ++-- .../StubProxyChannel.cs | 40 +- .../Tests/AutoSizePoolFactoryTests.cs | 58 +-- .../Tests/AutoSizePoolTests.cs | 352 +++++++++--------- .../Tests/ChannelManagerFactoryObjectTests.cs | 316 ++++++++-------- .../Tests/ChannelPoolManagerTests.cs | 276 +++++++------- .../Tests/ProxyChannelTests.cs | 103 +++-- .../Tests/SimplePoolFactoryTests.cs | 96 ++--- .../Tests/SingleActionChannelManagerTests.cs | 114 +++--- .../Tests/WcfChannelProxyTypeBuilderTests.cs | 148 ++++---- .../WCFChannelManagerTests.csproj | 3 +- 50 files changed, 2805 insertions(+), 2747 deletions(-) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..412eeda --- /dev/null +++ b/.gitattributes @@ -0,0 +1,22 @@ +# Auto detect text files and perform LF normalization +* text=auto + +# Custom for Visual Studio +*.cs diff=csharp +*.sln merge=union +*.csproj merge=union +*.vbproj merge=union +*.fsproj merge=union +*.dbproj merge=union + +# Standard to msysgit +*.doc diff=astextplain +*.DOC diff=astextplain +*.docx diff=astextplain +*.DOCX diff=astextplain +*.dot diff=astextplain +*.DOT diff=astextplain +*.pdf diff=astextplain +*.PDF diff=astextplain +*.rtf diff=astextplain +*.RTF diff=astextplain diff --git a/.gitignore b/.gitignore index 5ebd21a..df6decd 100644 --- a/.gitignore +++ b/.gitignore @@ -64,7 +64,7 @@ local.properties *.dotCover ## TODO: If you have NuGet Package Restore enabled, uncomment this -#packages/ +packages/ # Visual C++ cache files ipch/ diff --git a/WCFChannelManager/example/Client/App.config b/WCFChannelManager/example/Client/App.config index d854d6f..793aa0c 100644 --- a/WCFChannelManager/example/Client/App.config +++ b/WCFChannelManager/example/Client/App.config @@ -1,80 +1,80 @@ - - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/WCFChannelManager/example/Client/Client.csproj b/WCFChannelManager/example/Client/Client.csproj index 67b1693..15e0fd8 100644 --- a/WCFChannelManager/example/Client/Client.csproj +++ b/WCFChannelManager/example/Client/Client.csproj @@ -1,84 +1,84 @@ - - - - Debug - AnyCPU - 9.0.30729 - 2.0 - {0D173DEB-76A3-455F-A2B3-84E780CC6888} - Exe - Properties - Client - Client - v3.5 - 512 - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - False - ..\..\..\sharedlib\Spring.Net\antlr.runtime.dll - - - False - ..\..\..\sharedlib\Spring.Net\Common.Logging.dll - - - False - ..\..\..\sharedlib\Spring.Net\Spring.Core.dll - - - - 3.5 - - - 3.5 - - - 3.5 - - - - - - - - - - - {E94EB6C3-E81F-4C5C-BEDE-B4CC79D0E938} - WCFChannelManager - - - {BDE976A7-184B-43B1-A4CB-EF8F6E84B325} - Common - - - - - - - + + + + Debug + AnyCPU + 9.0.30729 + 2.0 + {0D173DEB-76A3-455F-A2B3-84E780CC6888} + Exe + Properties + Client + Client + v3.5 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + False + ..\..\..\sharedlib\Spring.Net\antlr.runtime.dll + + + False + ..\..\..\sharedlib\Spring.Net\Common.Logging.dll + + + False + ..\..\..\sharedlib\Spring.Net\Spring.Core.dll + + + + 3.5 + + + 3.5 + + + 3.5 + + + + + + + + + + + {E94EB6C3-E81F-4C5C-BEDE-B4CC79D0E938} + WCFChannelManager + + + {BDE976A7-184B-43B1-A4CB-EF8F6E84B325} + Common + + + + + + + \ No newline at end of file diff --git a/WCFChannelManager/example/Client/Program.cs b/WCFChannelManager/example/Client/Program.cs index b1c3aa1..457e42e 100644 --- a/WCFChannelManager/example/Client/Program.cs +++ b/WCFChannelManager/example/Client/Program.cs @@ -1,24 +1,24 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using Spring.Context.Support; -using Server; - -namespace Client -{ - class Program - { - static void Main(string[] args) - { - var myService = ContextRegistry.GetContext().GetObject("MyService") as IService1; - string value = myService.GetData(5); - var returnValue = myService.GetDataUsingDataContract(new CompositeType() - { - BoolValue = false, - StringValue = "Perponcher" }); - Console.ReadLine(); - } - } - -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Spring.Context.Support; +using Server; + +namespace Client +{ + class Program + { + static void Main(string[] args) + { + var myService = ContextRegistry.GetContext().GetObject("MyService") as IService1; + string value = myService.GetData(5); + var returnValue = myService.GetDataUsingDataContract(new CompositeType() + { + BoolValue = false, + StringValue = "Perponcher" }); + Console.ReadLine(); + } + } + +} diff --git a/WCFChannelManager/example/Client/Properties/AssemblyInfo.cs b/WCFChannelManager/example/Client/Properties/AssemblyInfo.cs index 7b96e74..ad53bb5 100644 --- a/WCFChannelManager/example/Client/Properties/AssemblyInfo.cs +++ b/WCFChannelManager/example/Client/Properties/AssemblyInfo.cs @@ -1,36 +1,36 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("Client")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Client")] -[assembly: AssemblyCopyright("Copyright © 2009")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("2fced0aa-fb6c-46e5-9d37-d9d1d3811532")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Client")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Client")] +[assembly: AssemblyCopyright("Copyright © 2009")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("2fced0aa-fb6c-46e5-9d37-d9d1d3811532")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/WCFChannelManager/example/Common/Common.csproj b/WCFChannelManager/example/Common/Common.csproj index 2625f3e..0484efa 100644 --- a/WCFChannelManager/example/Common/Common.csproj +++ b/WCFChannelManager/example/Common/Common.csproj @@ -1,65 +1,65 @@ - - - - Debug - AnyCPU - 9.0.30729 - 2.0 - {BDE976A7-184B-43B1-A4CB-EF8F6E84B325} - Library - Properties - Common - Common - v3.5 - 512 - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - 3.5 - - - 3.0 - - - 3.0 - - - 3.5 - - - 3.5 - - - - - - - - - - + + + + Debug + AnyCPU + 9.0.30729 + 2.0 + {BDE976A7-184B-43B1-A4CB-EF8F6E84B325} + Library + Properties + Common + Common + v3.5 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + 3.5 + + + 3.0 + + + 3.0 + + + 3.5 + + + 3.5 + + + + + + + + + + \ No newline at end of file diff --git a/WCFChannelManager/example/Common/IService1.cs b/WCFChannelManager/example/Common/IService1.cs index 5297c9c..f329570 100644 --- a/WCFChannelManager/example/Common/IService1.cs +++ b/WCFChannelManager/example/Common/IService1.cs @@ -1,44 +1,44 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Runtime.Serialization; -using System.ServiceModel; -using System.Text; - -namespace Server -{ - // NOTE: If you change the interface name "IService1" here, you must also update the reference to "IService1" in App.config. - [ServiceContract] - public interface IService1 - { - [OperationContract] - string GetData(int value); - - [OperationContract] - CompositeType GetDataUsingDataContract(CompositeType composite); - - // TODO: Add your service operations here - } - - // Use a data contract as illustrated in the sample below to add composite types to service operations - [DataContract] - public class CompositeType - { - bool boolValue = true; - string stringValue = "Hello "; - - [DataMember] - public bool BoolValue - { - get { return boolValue; } - set { boolValue = value; } - } - - [DataMember] - public string StringValue - { - get { return stringValue; } - set { stringValue = value; } - } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.Serialization; +using System.ServiceModel; +using System.Text; + +namespace Server +{ + // NOTE: If you change the interface name "IService1" here, you must also update the reference to "IService1" in App.config. + [ServiceContract] + public interface IService1 + { + [OperationContract] + string GetData(int value); + + [OperationContract] + CompositeType GetDataUsingDataContract(CompositeType composite); + + // TODO: Add your service operations here + } + + // Use a data contract as illustrated in the sample below to add composite types to service operations + [DataContract] + public class CompositeType + { + bool boolValue = true; + string stringValue = "Hello "; + + [DataMember] + public bool BoolValue + { + get { return boolValue; } + set { boolValue = value; } + } + + [DataMember] + public string StringValue + { + get { return stringValue; } + set { stringValue = value; } + } + } +} diff --git a/WCFChannelManager/example/Common/Properties/AssemblyInfo.cs b/WCFChannelManager/example/Common/Properties/AssemblyInfo.cs index 8a0e0ae..162e48b 100644 --- a/WCFChannelManager/example/Common/Properties/AssemblyInfo.cs +++ b/WCFChannelManager/example/Common/Properties/AssemblyInfo.cs @@ -1,36 +1,36 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("Common")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Common")] -[assembly: AssemblyCopyright("Copyright © 2009")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("568c2bb9-6d6b-438e-ba87-ada254364cc3")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Common")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Common")] +[assembly: AssemblyCopyright("Copyright © 2009")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("568c2bb9-6d6b-438e-ba87-ada254364cc3")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/WCFChannelManager/example/Server/App.config b/WCFChannelManager/example/Server/App.config index 83c3045..059a4c1 100644 --- a/WCFChannelManager/example/Server/App.config +++ b/WCFChannelManager/example/Server/App.config @@ -1,48 +1,48 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WCFChannelManager/example/Server/Properties/AssemblyInfo.cs b/WCFChannelManager/example/Server/Properties/AssemblyInfo.cs index 1dc13d9..68f30c2 100644 --- a/WCFChannelManager/example/Server/Properties/AssemblyInfo.cs +++ b/WCFChannelManager/example/Server/Properties/AssemblyInfo.cs @@ -1,36 +1,36 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("Server")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Server")] -[assembly: AssemblyCopyright("Copyright © 2009")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("c0ba7697-b6b4-493e-9142-ee6f8e0fca07")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Server")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Server")] +[assembly: AssemblyCopyright("Copyright © 2009")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("c0ba7697-b6b4-493e-9142-ee6f8e0fca07")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/WCFChannelManager/example/Server/Server.csproj b/WCFChannelManager/example/Server/Server.csproj index f3f45a4..a525dc4 100644 --- a/WCFChannelManager/example/Server/Server.csproj +++ b/WCFChannelManager/example/Server/Server.csproj @@ -1,80 +1,80 @@ - - - Debug - AnyCPU - 9.0.30729 - 2.0 - {96DBE00A-CD5B-4A4D-B024-1D95771F8C00} - Library - Properties - Server - Server - {3D9AD99F-2412-4246-B90B-4EAA41C64699};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - /client:"WcfTestClient.exe" - v3.5 - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - 3.5 - - - - 3.0 - - - 3.0 - - - - 3.5 - - - - - - - - - - - - {BDE976A7-184B-43B1-A4CB-EF8F6E84B325} - Common - - - - - - - - - True - - - - + + + Debug + AnyCPU + 9.0.30729 + 2.0 + {96DBE00A-CD5B-4A4D-B024-1D95771F8C00} + Library + Properties + Server + Server + {3D9AD99F-2412-4246-B90B-4EAA41C64699};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + /client:"WcfTestClient.exe" + v3.5 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + 3.5 + + + + 3.0 + + + 3.0 + + + + 3.5 + + + + + + + + + + + + {BDE976A7-184B-43B1-A4CB-EF8F6E84B325} + Common + + + + + + + + + True + + + + \ No newline at end of file diff --git a/WCFChannelManager/example/Server/Service1.cs b/WCFChannelManager/example/Server/Service1.cs index 6d81d20..5562ce5 100644 --- a/WCFChannelManager/example/Server/Service1.cs +++ b/WCFChannelManager/example/Server/Service1.cs @@ -1,27 +1,27 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Runtime.Serialization; -using System.ServiceModel; -using System.Text; - -namespace Server -{ - // NOTE: If you change the class name "Service1" here, you must also update the reference to "Service1" in App.config. - public class Service1 : IService1 - { - public string GetData(int value) - { - return string.Format("You entered: {0}", value); - } - - public CompositeType GetDataUsingDataContract(CompositeType composite) - { - if (composite.BoolValue) - { - composite.StringValue += "Suffix"; - } - return composite; - } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.Serialization; +using System.ServiceModel; +using System.Text; + +namespace Server +{ + // NOTE: If you change the class name "Service1" here, you must also update the reference to "Service1" in App.config. + public class Service1 : IService1 + { + public string GetData(int value) + { + return string.Format("You entered: {0}", value); + } + + public CompositeType GetDataUsingDataContract(CompositeType composite) + { + if (composite.BoolValue) + { + composite.StringValue += "Suffix"; + } + return composite; + } + } +} diff --git a/WCFChannelManager/example/WCFChannelManagerExample/Class1.cs b/WCFChannelManager/example/WCFChannelManagerExample/Class1.cs index 2090daa..85e730f 100644 --- a/WCFChannelManager/example/WCFChannelManagerExample/Class1.cs +++ b/WCFChannelManager/example/WCFChannelManagerExample/Class1.cs @@ -1,11 +1,11 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace WCFChannelManagerExample -{ - public class Class1 - { - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace WCFChannelManagerExample +{ + public class Class1 + { + } +} diff --git a/WCFChannelManager/example/WCFChannelManagerExample/Properties/AssemblyInfo.cs b/WCFChannelManager/example/WCFChannelManagerExample/Properties/AssemblyInfo.cs index 112f10d..e5e1c74 100644 --- a/WCFChannelManager/example/WCFChannelManagerExample/Properties/AssemblyInfo.cs +++ b/WCFChannelManager/example/WCFChannelManagerExample/Properties/AssemblyInfo.cs @@ -1,36 +1,36 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("WCFChannelManagerExample")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("WCFChannelManagerExample")] -[assembly: AssemblyCopyright("Copyright © 2009")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("b1e9f2b8-2aca-4ba1-b4c6-ecd6248d7467")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("WCFChannelManagerExample")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("WCFChannelManagerExample")] +[assembly: AssemblyCopyright("Copyright © 2009")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("b1e9f2b8-2aca-4ba1-b4c6-ecd6248d7467")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/WCFChannelManager/example/WCFChannelManagerExample/WCFChannelManagerExample.csproj b/WCFChannelManager/example/WCFChannelManagerExample/WCFChannelManagerExample.csproj index 6a33318..ec73777 100644 --- a/WCFChannelManager/example/WCFChannelManagerExample/WCFChannelManagerExample.csproj +++ b/WCFChannelManager/example/WCFChannelManagerExample/WCFChannelManagerExample.csproj @@ -1,59 +1,59 @@ - - - - Debug - AnyCPU - 9.0.30729 - 2.0 - {E2AEBC55-6667-4D07-80BF-082E3429260D} - Library - Properties - WCFChannelManagerExample - WCFChannelManagerExample - v3.5 - 512 - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - 3.5 - - - 3.5 - - - 3.5 - - - - - - - - - - + + + + Debug + AnyCPU + 9.0.30729 + 2.0 + {E2AEBC55-6667-4D07-80BF-082E3429260D} + Library + Properties + WCFChannelManagerExample + WCFChannelManagerExample + v3.5 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + 3.5 + + + 3.5 + + + 3.5 + + + + + + + + + + \ No newline at end of file diff --git a/WCFChannelManager/example/WCFChannelManagerExample/WCFChannelManagerExample.sln b/WCFChannelManager/example/WCFChannelManagerExample/WCFChannelManagerExample.sln index 649c09c..1413c0b 100644 --- a/WCFChannelManager/example/WCFChannelManagerExample/WCFChannelManagerExample.sln +++ b/WCFChannelManager/example/WCFChannelManagerExample/WCFChannelManagerExample.sln @@ -1,43 +1,43 @@ - -Microsoft Visual Studio Solution File, Format Version 10.00 -# Visual Studio 2008 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Client", "..\Client\Client.csproj", "{0D173DEB-76A3-455F-A2B3-84E780CC6888}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common", "..\Common\Common.csproj", "{BDE976A7-184B-43B1-A4CB-EF8F6E84B325}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Server", "..\Server\Server.csproj", "{96DBE00A-CD5B-4A4D-B024-1D95771F8C00}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WCFChannelManagement", "WCFChannelManagement", "{2213CDCA-0100-4074-A589-563CE1C6BE90}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WCFChannelManager", "..\..\src\WCFChannelManager\WCFChannelManager\WCFChannelManager.csproj", "{E94EB6C3-E81F-4C5C-BEDE-B4CC79D0E938}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {0D173DEB-76A3-455F-A2B3-84E780CC6888}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0D173DEB-76A3-455F-A2B3-84E780CC6888}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0D173DEB-76A3-455F-A2B3-84E780CC6888}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0D173DEB-76A3-455F-A2B3-84E780CC6888}.Release|Any CPU.Build.0 = Release|Any CPU - {BDE976A7-184B-43B1-A4CB-EF8F6E84B325}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BDE976A7-184B-43B1-A4CB-EF8F6E84B325}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BDE976A7-184B-43B1-A4CB-EF8F6E84B325}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BDE976A7-184B-43B1-A4CB-EF8F6E84B325}.Release|Any CPU.Build.0 = Release|Any CPU - {96DBE00A-CD5B-4A4D-B024-1D95771F8C00}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {96DBE00A-CD5B-4A4D-B024-1D95771F8C00}.Debug|Any CPU.Build.0 = Debug|Any CPU - {96DBE00A-CD5B-4A4D-B024-1D95771F8C00}.Release|Any CPU.ActiveCfg = Release|Any CPU - {96DBE00A-CD5B-4A4D-B024-1D95771F8C00}.Release|Any CPU.Build.0 = Release|Any CPU - {E94EB6C3-E81F-4C5C-BEDE-B4CC79D0E938}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E94EB6C3-E81F-4C5C-BEDE-B4CC79D0E938}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E94EB6C3-E81F-4C5C-BEDE-B4CC79D0E938}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E94EB6C3-E81F-4C5C-BEDE-B4CC79D0E938}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {E94EB6C3-E81F-4C5C-BEDE-B4CC79D0E938} = {2213CDCA-0100-4074-A589-563CE1C6BE90} - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Client", "..\Client\Client.csproj", "{0D173DEB-76A3-455F-A2B3-84E780CC6888}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common", "..\Common\Common.csproj", "{BDE976A7-184B-43B1-A4CB-EF8F6E84B325}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Server", "..\Server\Server.csproj", "{96DBE00A-CD5B-4A4D-B024-1D95771F8C00}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WCFChannelManagement", "WCFChannelManagement", "{2213CDCA-0100-4074-A589-563CE1C6BE90}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WCFChannelManager", "..\..\src\WCFChannelManager\WCFChannelManager\WCFChannelManager.csproj", "{E94EB6C3-E81F-4C5C-BEDE-B4CC79D0E938}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {0D173DEB-76A3-455F-A2B3-84E780CC6888}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0D173DEB-76A3-455F-A2B3-84E780CC6888}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0D173DEB-76A3-455F-A2B3-84E780CC6888}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0D173DEB-76A3-455F-A2B3-84E780CC6888}.Release|Any CPU.Build.0 = Release|Any CPU + {BDE976A7-184B-43B1-A4CB-EF8F6E84B325}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BDE976A7-184B-43B1-A4CB-EF8F6E84B325}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BDE976A7-184B-43B1-A4CB-EF8F6E84B325}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BDE976A7-184B-43B1-A4CB-EF8F6E84B325}.Release|Any CPU.Build.0 = Release|Any CPU + {96DBE00A-CD5B-4A4D-B024-1D95771F8C00}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {96DBE00A-CD5B-4A4D-B024-1D95771F8C00}.Debug|Any CPU.Build.0 = Debug|Any CPU + {96DBE00A-CD5B-4A4D-B024-1D95771F8C00}.Release|Any CPU.ActiveCfg = Release|Any CPU + {96DBE00A-CD5B-4A4D-B024-1D95771F8C00}.Release|Any CPU.Build.0 = Release|Any CPU + {E94EB6C3-E81F-4C5C-BEDE-B4CC79D0E938}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E94EB6C3-E81F-4C5C-BEDE-B4CC79D0E938}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E94EB6C3-E81F-4C5C-BEDE-B4CC79D0E938}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E94EB6C3-E81F-4C5C-BEDE-B4CC79D0E938}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {E94EB6C3-E81F-4C5C-BEDE-B4CC79D0E938} = {2213CDCA-0100-4074-A589-563CE1C6BE90} + EndGlobalSection +EndGlobal diff --git a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/AutoSizePool.cs b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/AutoSizePool.cs index e528818..a079528 100644 --- a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/AutoSizePool.cs +++ b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/AutoSizePool.cs @@ -1,168 +1,168 @@ -//Copyright 2009 Benny Michielsen - -//Licensed under the Apache License, Version 2.0 (the "License"); -//you may not use this file except in compliance with the License. -//You may obtain a copy of the License at - -// http://www.apache.org/licenses/LICENSE-2.0 - -//Unless required by applicable law or agreed to in writing, software -//distributed under the License is distributed on an "AS IS" BASIS, -//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -//See the License for the specific language governing permissions and -//limitations under the License. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using Spring.Pool; - -namespace WCFChannelManager -{ - /// - /// A pool that automatically grows if more instances are requested than there are available in the queue. - /// - public class AutoSizePool - : IObjectPool - { - protected List activeObjects; - protected List passiveObjects; - protected bool closed; - private object sync; - - public AutoSizePool(IPoolableObjectFactory factory) - { - activeObjects = new List(); - passiveObjects = new List(); - sync = new object(); - PoolableObjectFactory = factory; - } - - #region IObjectPool Members - - public void AddObject() - { - lock (sync) - { - passiveObjects.Add(PoolableObjectFactory.MakeObject()); - } - } - - public object BorrowObject() - { - lock (sync) - { - if (closed) - { - throw new InvalidOperationException("The pool is closed."); - } - object useable = null; - IEnumerator objects = passiveObjects.GetEnumerator(); - List destroyedObjects = new List(); - while (objects.MoveNext() && useable == null) - { - PoolableObjectFactory.ActivateObject(objects.Current); - if (PoolableObjectFactory.ValidateObject(objects.Current)) - { - useable = objects.Current; - } - else - { - PoolableObjectFactory.DestroyObject(objects.Current); - destroyedObjects.Add(objects.Current); - } - } - passiveObjects.RemoveAll(o => destroyedObjects.Contains(o)); - if (useable == null) - { - useable = PoolableObjectFactory.MakeObject(); - PoolableObjectFactory.ActivateObject(useable); - } - activeObjects.Add(useable); - return useable; - } - } - - public void Clear() - { - lock (sync) - { - RemoveAllPassiveObjects(); - } - } - - public void Close() - { - lock (sync) - { - closed = true; - RemoveAllPassiveObjects(); - RemoveAllActiveObjects(); - } - } - - public int NumActive - { - get - { - lock (sync) - { - return activeObjects.Count; - } - } - } - - public int NumIdle - { - get - { - lock (sync) - { - return passiveObjects.Count; - } - } - } - - public IPoolableObjectFactory PoolableObjectFactory - { - get; - set; - } - - public void ReturnObject(object target) - { - lock (sync) - { - if (activeObjects.Contains(target)) - { - activeObjects.Remove(target); - PoolableObjectFactory.PassivateObject(target); - passiveObjects.Add(target); - - } - } - } - - #endregion - - private void RemoveAllPassiveObjects() - { - ClearList(passiveObjects); - } - - private void RemoveAllActiveObjects() - { - ClearList(activeObjects); - } - - private void ClearList(List list) - { - foreach (object o in list) - { - PoolableObjectFactory.DestroyObject(o); - } - list.Clear(); - } - } -} +//Copyright 2009 Benny Michielsen + +//Licensed under the Apache License, Version 2.0 (the "License"); +//you may not use this file except in compliance with the License. +//You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +//Unless required by applicable law or agreed to in writing, software +//distributed under the License is distributed on an "AS IS" BASIS, +//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +//See the License for the specific language governing permissions and +//limitations under the License. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Spring.Pool; + +namespace WCFChannelManager +{ + /// + /// A pool that automatically grows if more instances are requested than there are available in the queue. + /// + public class AutoSizePool + : IObjectPool + { + protected List activeObjects; + protected List passiveObjects; + protected bool closed; + private object sync; + + public AutoSizePool(IPoolableObjectFactory factory) + { + activeObjects = new List(); + passiveObjects = new List(); + sync = new object(); + PoolableObjectFactory = factory; + } + + #region IObjectPool Members + + public void AddObject() + { + lock (sync) + { + passiveObjects.Add(PoolableObjectFactory.MakeObject()); + } + } + + public object BorrowObject() + { + lock (sync) + { + if (closed) + { + throw new InvalidOperationException("The pool is closed."); + } + object useable = null; + IEnumerator objects = passiveObjects.GetEnumerator(); + List destroyedObjects = new List(); + while (objects.MoveNext() && useable == null) + { + PoolableObjectFactory.ActivateObject(objects.Current); + if (PoolableObjectFactory.ValidateObject(objects.Current)) + { + useable = objects.Current; + } + else + { + PoolableObjectFactory.DestroyObject(objects.Current); + destroyedObjects.Add(objects.Current); + } + } + passiveObjects.RemoveAll(o => destroyedObjects.Contains(o)); + if (useable == null) + { + useable = PoolableObjectFactory.MakeObject(); + PoolableObjectFactory.ActivateObject(useable); + } + activeObjects.Add(useable); + return useable; + } + } + + public void Clear() + { + lock (sync) + { + RemoveAllPassiveObjects(); + } + } + + public void Close() + { + lock (sync) + { + closed = true; + RemoveAllPassiveObjects(); + RemoveAllActiveObjects(); + } + } + + public int NumActive + { + get + { + lock (sync) + { + return activeObjects.Count; + } + } + } + + public int NumIdle + { + get + { + lock (sync) + { + return passiveObjects.Count; + } + } + } + + public IPoolableObjectFactory PoolableObjectFactory + { + get; + set; + } + + public void ReturnObject(object target) + { + lock (sync) + { + if (activeObjects.Contains(target)) + { + activeObjects.Remove(target); + PoolableObjectFactory.PassivateObject(target); + passiveObjects.Add(target); + + } + } + } + + #endregion + + private void RemoveAllPassiveObjects() + { + ClearList(passiveObjects); + } + + private void RemoveAllActiveObjects() + { + ClearList(activeObjects); + } + + private void ClearList(List list) + { + foreach (object o in list) + { + PoolableObjectFactory.DestroyObject(o); + } + list.Clear(); + } + } +} diff --git a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/AutoSizePoolFactory.cs b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/AutoSizePoolFactory.cs index 6eea3d3..17da953 100644 --- a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/AutoSizePoolFactory.cs +++ b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/AutoSizePoolFactory.cs @@ -1,38 +1,38 @@ -//Copyright 2009 Benny Michielsen - -//Licensed under the Apache License, Version 2.0 (the "License"); -//you may not use this file except in compliance with the License. -//You may obtain a copy of the License at - -// http://www.apache.org/licenses/LICENSE-2.0 - -//Unless required by applicable law or agreed to in writing, software -//distributed under the License is distributed on an "AS IS" BASIS, -//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -//See the License for the specific language governing permissions and -//limitations under the License. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using Spring.Pool; - -namespace WCFChannelManager -{ - /// - /// Factory for AutoSizePools. - /// - public class AutoSizePoolFactory - : IPoolFactory - { - #region IPoolFactory Members - - public IObjectPool CreatePool(IPoolableObjectFactory poolableObjectFactory) - { - return new AutoSizePool(poolableObjectFactory); - } - - #endregion - } -} +//Copyright 2009 Benny Michielsen + +//Licensed under the Apache License, Version 2.0 (the "License"); +//you may not use this file except in compliance with the License. +//You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +//Unless required by applicable law or agreed to in writing, software +//distributed under the License is distributed on an "AS IS" BASIS, +//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +//See the License for the specific language governing permissions and +//limitations under the License. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Spring.Pool; + +namespace WCFChannelManager +{ + /// + /// Factory for AutoSizePools. + /// + public class AutoSizePoolFactory + : IPoolFactory + { + #region IPoolFactory Members + + public IObjectPool CreatePool(IPoolableObjectFactory poolableObjectFactory) + { + return new AutoSizePool(poolableObjectFactory); + } + + #endregion + } +} diff --git a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/ChannelCreator.cs b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/ChannelCreator.cs index 1385313..b745698 100644 --- a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/ChannelCreator.cs +++ b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/ChannelCreator.cs @@ -1,52 +1,52 @@ -//Copyright 2009 Benny Michielsen - -//Licensed under the Apache License, Version 2.0 (the "License"); -//you may not use this file except in compliance with the License. -//You may obtain a copy of the License at - -// http://www.apache.org/licenses/LICENSE-2.0 - -//Unless required by applicable law or agreed to in writing, software -//distributed under the License is distributed on an "AS IS" BASIS, -//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -//See the License for the specific language governing permissions and -//limitations under the License. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.ServiceModel; -using System.ServiceModel.Channels; - -namespace WCFChannelManager -{ - public class ChannelCreator - : ICanCreateChannels - { - private ChannelFactory channelFactory; - - public ChannelCreator(ChannelFactory channelFactory) - { - this.channelFactory = channelFactory; - } - - #region ICanCreateChannels Members - - public TChannel CreateChannel() - { - return channelFactory.CreateChannel(); - } - - public IChannelFactory ChannelFactory - { - get - { - return channelFactory; - } - } - - #endregion - } - -} +//Copyright 2009 Benny Michielsen + +//Licensed under the Apache License, Version 2.0 (the "License"); +//you may not use this file except in compliance with the License. +//You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +//Unless required by applicable law or agreed to in writing, software +//distributed under the License is distributed on an "AS IS" BASIS, +//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +//See the License for the specific language governing permissions and +//limitations under the License. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.ServiceModel; +using System.ServiceModel.Channels; + +namespace WCFChannelManager +{ + public class ChannelCreator + : ICanCreateChannels + { + private ChannelFactory channelFactory; + + public ChannelCreator(ChannelFactory channelFactory) + { + this.channelFactory = channelFactory; + } + + #region ICanCreateChannels Members + + public TChannel CreateChannel() + { + return channelFactory.CreateChannel(); + } + + public IChannelFactory ChannelFactory + { + get + { + return channelFactory; + } + } + + #endregion + } + +} diff --git a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/ChannelManagerBase.cs b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/ChannelManagerBase.cs index a45c24a..d455f5c 100644 --- a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/ChannelManagerBase.cs +++ b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/ChannelManagerBase.cs @@ -1,126 +1,126 @@ -//Copyright 2009 Benny Michielsen - -//Licensed under the Apache License, Version 2.0 (the "License"); -//you may not use this file except in compliance with the License. -//You may obtain a copy of the License at - -// http://www.apache.org/licenses/LICENSE-2.0 - -//Unless required by applicable law or agreed to in writing, software -//distributed under the License is distributed on an "AS IS" BASIS, -//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -//See the License for the specific language governing permissions and -//limitations under the License. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.ServiceModel; -using System.ServiceModel.Channels; - -namespace WCFChannelManager -{ - /// - /// Base class for channelmanagers. - /// - /// The type of the channel - public abstract class ChannelManagerBase - : IChannelManager - { - - /// - /// Constructor taking the name of an endpoint. - /// - /// Name of an endpoint. - public ChannelManagerBase(string endpointConfigurationName) - : this(new ChannelCreator(new ChannelFactory(endpointConfigurationName))) - { - - } - - /// - /// Constructor taking a channelfactory. - /// - /// The channelfactory to use in this instance. - public ChannelManagerBase(ICanCreateChannels factory) - { - ChannelCreater = factory; - } - - - /// - /// The channelfactory. - /// - public virtual IChannelFactory ChannelFactory - { - get - { - return ChannelCreater.ChannelFactory; - } - } - - public virtual ICanCreateChannels ChannelCreater - { - get; - set; - } - - /// - /// Get a channel on which actions can be performed. - /// - /// A working channel. - public abstract TChannel FetchChannelToWorkWith(); - - /// - /// Perform any cleanup work needed when an action has been performed on a channel. - /// - /// The channel that was used. - public abstract void FinishedWorkWithChannel(TChannel channel); - - /// - /// Creates and opens a channel. - /// - /// An open channel. - protected virtual TChannel CreateAndOpenChannel() - { - return OpenChannel(CreateChannel()); - - } - - /// - /// Creates a channel - /// - /// - protected virtual TChannel CreateChannel() - { - TChannel channel = ChannelCreater.CreateChannel(); - ICommunicationObject comm = channel as ICommunicationObject; - return channel; - } - - /// - /// Open the channel. - /// - /// The channel to open. - /// An opened channel. - protected virtual TChannel OpenChannel(TChannel channel) - { - ICommunicationObject communicationChannel = channel as ICommunicationObject; - if (communicationChannel != null && communicationChannel.State == CommunicationState.Created) - { - communicationChannel.Open(); - } - return channel; - } - - protected virtual void CloseChannel(TChannel channel) - { - ICommunicationObject communicationChannel = channel as ICommunicationObject; - if (communicationChannel != null) - { - communicationChannel.Close(); - } - } - } -} +//Copyright 2009 Benny Michielsen + +//Licensed under the Apache License, Version 2.0 (the "License"); +//you may not use this file except in compliance with the License. +//You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +//Unless required by applicable law or agreed to in writing, software +//distributed under the License is distributed on an "AS IS" BASIS, +//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +//See the License for the specific language governing permissions and +//limitations under the License. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.ServiceModel; +using System.ServiceModel.Channels; + +namespace WCFChannelManager +{ + /// + /// Base class for channelmanagers. + /// + /// The type of the channel + public abstract class ChannelManagerBase + : IChannelManager + { + + /// + /// Constructor taking the name of an endpoint. + /// + /// Name of an endpoint. + public ChannelManagerBase(string endpointConfigurationName) + : this(new ChannelCreator(new ChannelFactory(endpointConfigurationName))) + { + + } + + /// + /// Constructor taking a channelfactory. + /// + /// The channelfactory to use in this instance. + public ChannelManagerBase(ICanCreateChannels factory) + { + ChannelCreater = factory; + } + + + /// + /// The channelfactory. + /// + public virtual IChannelFactory ChannelFactory + { + get + { + return ChannelCreater.ChannelFactory; + } + } + + public virtual ICanCreateChannels ChannelCreater + { + get; + set; + } + + /// + /// Get a channel on which actions can be performed. + /// + /// A working channel. + public abstract TChannel FetchChannelToWorkWith(); + + /// + /// Perform any cleanup work needed when an action has been performed on a channel. + /// + /// The channel that was used. + public abstract void FinishedWorkWithChannel(TChannel channel); + + /// + /// Creates and opens a channel. + /// + /// An open channel. + protected virtual TChannel CreateAndOpenChannel() + { + return OpenChannel(CreateChannel()); + + } + + /// + /// Creates a channel + /// + /// + protected virtual TChannel CreateChannel() + { + TChannel channel = ChannelCreater.CreateChannel(); + ICommunicationObject comm = channel as ICommunicationObject; + return channel; + } + + /// + /// Open the channel. + /// + /// The channel to open. + /// An opened channel. + protected virtual TChannel OpenChannel(TChannel channel) + { + ICommunicationObject communicationChannel = channel as ICommunicationObject; + if (communicationChannel != null && communicationChannel.State == CommunicationState.Created) + { + communicationChannel.Open(); + } + return channel; + } + + protected virtual void CloseChannel(TChannel channel) + { + ICommunicationObject communicationChannel = channel as ICommunicationObject; + if (communicationChannel != null) + { + communicationChannel.Close(); + } + } + } +} diff --git a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/ChannelManagerFactoryObject.cs b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/ChannelManagerFactoryObject.cs index 7cd6528..bae7252 100644 --- a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/ChannelManagerFactoryObject.cs +++ b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/ChannelManagerFactoryObject.cs @@ -1,4 +1,4 @@ -//Copyright 2009 Sergio Moreno Calzada +//Copyright 2013 Sergio Moreno Calzada //Licensed under the Apache License, Version 2.0 (the "License"); //you may not use this file except in compliance with the License. diff --git a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/ChannelPoolManager.cs b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/ChannelPoolManager.cs index 7280810..f9caf19 100644 --- a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/ChannelPoolManager.cs +++ b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/ChannelPoolManager.cs @@ -1,151 +1,151 @@ -//Copyright 2009 Benny Michielsen - -//Licensed under the Apache License, Version 2.0 (the "License"); -//you may not use this file except in compliance with the License. -//You may obtain a copy of the License at - -// http://www.apache.org/licenses/LICENSE-2.0 - -//Unless required by applicable law or agreed to in writing, software -//distributed under the License is distributed on an "AS IS" BASIS, -//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -//See the License for the specific language governing permissions and -//limitations under the License. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using Spring.Pool; -using System.ServiceModel; -using Spring.Pool.Support; -using System.ServiceModel.Channels; - -namespace WCFChannelManager -{ - - /// - /// A ChannelManager that pools channels that can be used. - /// - /// The channeltype. - public class ChannelPoolManager - : ChannelManagerBase, IPoolableObjectFactory - { - - /// - /// Constructs a channelpoolmanager. - /// - /// The name of the endpoint in your system.Servicemodel section. - public ChannelPoolManager(string endpointConfigurationName, IPoolFactory poolFactory) - : base(endpointConfigurationName) - { - Pool = CreatePool(poolFactory); - } - - - /// - /// Constructs a channelpoolmanager. - /// - /// The channel factory to use. - public ChannelPoolManager(ICanCreateChannels factory, IPoolFactory poolFactory) - : base(factory) - { - Pool = CreatePool(poolFactory); - } - - /// - /// Create a pool to use. - /// - /// The size of the pool. - /// A valid pool that can be used. - protected virtual IObjectPool CreatePool(IPoolFactory poolFactory) - { - return poolFactory.CreatePool(this); - } - - /// - /// The pool of channels. - /// - public virtual IObjectPool Pool - { - get; - private set; - } - - #region IPoolableObjectFactory Members - - /// - /// Activates a channel. - /// - /// The channel to activate. - void IPoolableObjectFactory.ActivateObject(object obj) - { - OpenChannel((TChannel)obj); - } - - /// - /// Destory a channel. - /// - /// The channel to destroy. - void IPoolableObjectFactory.DestroyObject(object obj) - { - CloseChannel((TChannel)obj); - } - - /// - /// Create a channel for the pool. - /// - /// A channel for the pool. - object IPoolableObjectFactory.MakeObject() - { - return CreateChannel(); - } - - /// - /// Passivate a channel. - /// - /// The channel to passivate. - void IPoolableObjectFactory.PassivateObject(object obj) - { - - } - - /// - /// Check if the channel is valid. - /// - /// The channel to check. - /// Returns true if the channel can be used, otherwise false. - bool IPoolableObjectFactory.ValidateObject(object obj) - { - ICommunicationObject communicationObject = obj as ICommunicationObject; - bool valid = false; - if (communicationObject != null && communicationObject.State == CommunicationState.Opened) - { - valid = true; - } - return valid; - } - - #endregion - - /// - /// Get a channel to send messages to. - /// - /// A channel that can be used to send messages to. - public override TChannel FetchChannelToWorkWith() - { - return (TChannel)Pool.BorrowObject(); - } - - /// - /// Perform cleanup work after sending messages to the channel. - /// - /// The channel to send messages to. - public override void FinishedWorkWithChannel(TChannel channel) - { - Pool.ReturnObject(channel); - } - - - } -} +//Copyright 2009 Benny Michielsen + +//Licensed under the Apache License, Version 2.0 (the "License"); +//you may not use this file except in compliance with the License. +//You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +//Unless required by applicable law or agreed to in writing, software +//distributed under the License is distributed on an "AS IS" BASIS, +//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +//See the License for the specific language governing permissions and +//limitations under the License. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Spring.Pool; +using System.ServiceModel; +using Spring.Pool.Support; +using System.ServiceModel.Channels; + +namespace WCFChannelManager +{ + + /// + /// A ChannelManager that pools channels that can be used. + /// + /// The channeltype. + public class ChannelPoolManager + : ChannelManagerBase, IPoolableObjectFactory + { + + /// + /// Constructs a channelpoolmanager. + /// + /// The name of the endpoint in your system.Servicemodel section. + public ChannelPoolManager(string endpointConfigurationName, IPoolFactory poolFactory) + : base(endpointConfigurationName) + { + Pool = CreatePool(poolFactory); + } + + + /// + /// Constructs a channelpoolmanager. + /// + /// The channel factory to use. + public ChannelPoolManager(ICanCreateChannels factory, IPoolFactory poolFactory) + : base(factory) + { + Pool = CreatePool(poolFactory); + } + + /// + /// Create a pool to use. + /// + /// The size of the pool. + /// A valid pool that can be used. + protected virtual IObjectPool CreatePool(IPoolFactory poolFactory) + { + return poolFactory.CreatePool(this); + } + + /// + /// The pool of channels. + /// + public virtual IObjectPool Pool + { + get; + private set; + } + + #region IPoolableObjectFactory Members + + /// + /// Activates a channel. + /// + /// The channel to activate. + void IPoolableObjectFactory.ActivateObject(object obj) + { + OpenChannel((TChannel)obj); + } + + /// + /// Destory a channel. + /// + /// The channel to destroy. + void IPoolableObjectFactory.DestroyObject(object obj) + { + CloseChannel((TChannel)obj); + } + + /// + /// Create a channel for the pool. + /// + /// A channel for the pool. + object IPoolableObjectFactory.MakeObject() + { + return CreateChannel(); + } + + /// + /// Passivate a channel. + /// + /// The channel to passivate. + void IPoolableObjectFactory.PassivateObject(object obj) + { + + } + + /// + /// Check if the channel is valid. + /// + /// The channel to check. + /// Returns true if the channel can be used, otherwise false. + bool IPoolableObjectFactory.ValidateObject(object obj) + { + ICommunicationObject communicationObject = obj as ICommunicationObject; + bool valid = false; + if (communicationObject != null && communicationObject.State == CommunicationState.Opened) + { + valid = true; + } + return valid; + } + + #endregion + + /// + /// Get a channel to send messages to. + /// + /// A channel that can be used to send messages to. + public override TChannel FetchChannelToWorkWith() + { + return (TChannel)Pool.BorrowObject(); + } + + /// + /// Perform cleanup work after sending messages to the channel. + /// + /// The channel to send messages to. + public override void FinishedWorkWithChannel(TChannel channel) + { + Pool.ReturnObject(channel); + } + + + } +} diff --git a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/ICanCreateChannels.cs b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/ICanCreateChannels.cs index 80d4a53..c51ecda 100644 --- a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/ICanCreateChannels.cs +++ b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/ICanCreateChannels.cs @@ -1,28 +1,28 @@ -//Copyright 2009 Benny Michielsen - -//Licensed under the Apache License, Version 2.0 (the "License"); -//you may not use this file except in compliance with the License. -//You may obtain a copy of the License at - -// http://www.apache.org/licenses/LICENSE-2.0 - -//Unless required by applicable law or agreed to in writing, software -//distributed under the License is distributed on an "AS IS" BASIS, -//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -//See the License for the specific language governing permissions and -//limitations under the License. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.ServiceModel.Channels; - -namespace WCFChannelManager -{ - public interface ICanCreateChannels - { - TChannel CreateChannel(); - IChannelFactory ChannelFactory { get; } - } -} +//Copyright 2009 Benny Michielsen + +//Licensed under the Apache License, Version 2.0 (the "License"); +//you may not use this file except in compliance with the License. +//You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +//Unless required by applicable law or agreed to in writing, software +//distributed under the License is distributed on an "AS IS" BASIS, +//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +//See the License for the specific language governing permissions and +//limitations under the License. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.ServiceModel.Channels; + +namespace WCFChannelManager +{ + public interface ICanCreateChannels + { + TChannel CreateChannel(); + IChannelFactory ChannelFactory { get; } + } +} diff --git a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/IChannelManager.cs b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/IChannelManager.cs index 3c0a61b..fe44af3 100644 --- a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/IChannelManager.cs +++ b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/IChannelManager.cs @@ -1,40 +1,40 @@ -//Copyright 2009 Benny Michielsen - -//Licensed under the Apache License, Version 2.0 (the "License"); -//you may not use this file except in compliance with the License. -//You may obtain a copy of the License at - -// http://www.apache.org/licenses/LICENSE-2.0 - -//Unless required by applicable law or agreed to in writing, software -//distributed under the License is distributed on an "AS IS" BASIS, -//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -//See the License for the specific language governing permissions and -//limitations under the License. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace WCFChannelManager -{ - /// - /// Interface which defines the methods channel lifecycle managers should implements. Implementors can be used - /// by the ProxyChannel. - /// - /// The type of the channel. - public interface IChannelManager - { - /// - /// Creates a channel that can be used. - /// - /// A usable channel. - TChannel FetchChannelToWorkWith(); - /// - /// When work is finished with a channel this method is called to hand it back to the manager. - /// - /// The channel which no longer is needed. - void FinishedWorkWithChannel(TChannel channel); - } -} +//Copyright 2009 Benny Michielsen + +//Licensed under the Apache License, Version 2.0 (the "License"); +//you may not use this file except in compliance with the License. +//You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +//Unless required by applicable law or agreed to in writing, software +//distributed under the License is distributed on an "AS IS" BASIS, +//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +//See the License for the specific language governing permissions and +//limitations under the License. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace WCFChannelManager +{ + /// + /// Interface which defines the methods channel lifecycle managers should implements. Implementors can be used + /// by the ProxyChannel. + /// + /// The type of the channel. + public interface IChannelManager + { + /// + /// Creates a channel that can be used. + /// + /// A usable channel. + TChannel FetchChannelToWorkWith(); + /// + /// When work is finished with a channel this method is called to hand it back to the manager. + /// + /// The channel which no longer is needed. + void FinishedWorkWithChannel(TChannel channel); + } +} diff --git a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/IPoolFactory.cs b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/IPoolFactory.cs index 07c8518..e9a28e4 100644 --- a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/IPoolFactory.cs +++ b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/IPoolFactory.cs @@ -1,35 +1,35 @@ -//Copyright 2009 Benny Michielsen - -//Licensed under the Apache License, Version 2.0 (the "License"); -//you may not use this file except in compliance with the License. -//You may obtain a copy of the License at - -// http://www.apache.org/licenses/LICENSE-2.0 - -//Unless required by applicable law or agreed to in writing, software -//distributed under the License is distributed on an "AS IS" BASIS, -//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -//See the License for the specific language governing permissions and -//limitations under the License. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using Spring.Pool; - -namespace WCFChannelManager -{ - /// - /// PoolFactories can create object pools. - /// - public interface IPoolFactory - { - /// - /// Create an ObjectPool. - /// - /// The objectFactory to be used by the pool. - /// An objectpool. - IObjectPool CreatePool(IPoolableObjectFactory poolableObjectFactory); - } -} +//Copyright 2009 Benny Michielsen + +//Licensed under the Apache License, Version 2.0 (the "License"); +//you may not use this file except in compliance with the License. +//You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +//Unless required by applicable law or agreed to in writing, software +//distributed under the License is distributed on an "AS IS" BASIS, +//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +//See the License for the specific language governing permissions and +//limitations under the License. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Spring.Pool; + +namespace WCFChannelManager +{ + /// + /// PoolFactories can create object pools. + /// + public interface IPoolFactory + { + /// + /// Create an ObjectPool. + /// + /// The objectFactory to be used by the pool. + /// An objectpool. + IObjectPool CreatePool(IPoolableObjectFactory poolableObjectFactory); + } +} diff --git a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/Properties/AssemblyInfo.cs b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/Properties/AssemblyInfo.cs index 10c81a4..f78754f 100644 --- a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/Properties/AssemblyInfo.cs +++ b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/Properties/AssemblyInfo.cs @@ -1,36 +1,36 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("WCFChannelManager")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("WCFChannelManager")] -[assembly: AssemblyCopyright("Copyright © 2009")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("9182274f-6e09-4f29-a3c9-f1af19550e2e")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("WCFChannelManager")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("WCFChannelManager")] +[assembly: AssemblyCopyright("Copyright © 2009")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("9182274f-6e09-4f29-a3c9-f1af19550e2e")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/ProxyChannel.cs b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/ProxyChannel.cs index dad1f68..b085126 100644 --- a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/ProxyChannel.cs +++ b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/ProxyChannel.cs @@ -1,4 +1,4 @@ -//Copyright Sergio Moreno Calzada +//Copyright 2013 Sergio Moreno Calzada //Licensed under the Apache License, Version 2.0 (the "License"); //you may not use this file except in compliance with the License. @@ -74,7 +74,7 @@ protected virtual TChannel GetChannelToWorkWith() /// The method to invoke on the channel. /// Any parameters that are needed when invoking the method. /// AReturns any value returned by the method invoked on the channel. - protected object[] ExecuteInChannel(MethodInfo method, object[] parameters) + protected object ExecuteInChannel(MethodInfo method, object[] parameters) { TChannel channel = GetChannelToWorkWith(); object returnValue; @@ -90,7 +90,7 @@ protected object[] ExecuteInChannel(MethodInfo method, object[] parameters) { FinishedWorkWithChannel(channel); } - return new object[] { returnValue }; + return returnValue ; } /// @@ -108,23 +108,25 @@ protected virtual void FinishedWorkWithChannel(TChannel channel) /// The name of the method. /// Parameters used by the method. /// Returns any value returned by the method invoked on the channel. - public object Execute(string methodName, object[] parameters) + public object Execute(MethodInfo method, object[] parameters) { - Type[] parameterTypes; - if(parameters == null || parameters.Length == 0) - { - parameterTypes = Type.EmptyTypes; - } - else - { - List types = new List(); - foreach(object o in parameters) - { - types.Add(o.GetType()); - } - parameterTypes = types.ToArray(); - } - MethodInfo methodToCall = typeof(TChannel).GetMethod(methodName, BindingFlags.Instance | BindingFlags.Public, null, parameterTypes,null); + + Type[] parameterTypes = method.GetParameters().Select(p => p.ParameterType).ToArray(); + //Type[] parameterTypes; + //if(parameters == null || parameters.Length == 0) + //{ + // parameterTypes = Type.EmptyTypes; + //} + //else + //{ + // List types = new List(); + // foreach(object o in parameters) + // { + // types.Add(o.GetType()); + // } + // parameterTypes = types.ToArray(); + //} + MethodInfo methodToCall = typeof(TChannel).GetMethod(method.Name, BindingFlags.Instance | BindingFlags.Public, null, parameterTypes,null); return ExecuteInChannel(methodToCall, parameters); } diff --git a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/SimplePoolFactory.cs b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/SimplePoolFactory.cs index 14c4e1f..7fdb3f0 100644 --- a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/SimplePoolFactory.cs +++ b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/SimplePoolFactory.cs @@ -1,55 +1,55 @@ -//Copyright 2009 Benny Michielsen - -//Licensed under the Apache License, Version 2.0 (the "License"); -//you may not use this file except in compliance with the License. -//You may obtain a copy of the License at - -// http://www.apache.org/licenses/LICENSE-2.0 - -//Unless required by applicable law or agreed to in writing, software -//distributed under the License is distributed on an "AS IS" BASIS, -//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -//See the License for the specific language governing permissions and -//limitations under the License. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using Spring.Pool; -using Spring.Pool.Support; - -namespace WCFChannelManager -{ - public class SimplePoolFactory - : IPoolFactory - { - public const int DefaultPoolSize = 5; - - public SimplePoolFactory() - : this(DefaultPoolSize) - { - - } - - public SimplePoolFactory(int size) - { - PoolSize = size; - } - - public int PoolSize - { - get; - set; - } - - #region IPoolFactory Members - - public IObjectPool CreatePool(IPoolableObjectFactory poolableObjectFactory) - { - return new SimplePool(poolableObjectFactory, PoolSize); - } - - #endregion - } -} +//Copyright 2009 Benny Michielsen + +//Licensed under the Apache License, Version 2.0 (the "License"); +//you may not use this file except in compliance with the License. +//You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +//Unless required by applicable law or agreed to in writing, software +//distributed under the License is distributed on an "AS IS" BASIS, +//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +//See the License for the specific language governing permissions and +//limitations under the License. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Spring.Pool; +using Spring.Pool.Support; + +namespace WCFChannelManager +{ + public class SimplePoolFactory + : IPoolFactory + { + public const int DefaultPoolSize = 5; + + public SimplePoolFactory() + : this(DefaultPoolSize) + { + + } + + public SimplePoolFactory(int size) + { + PoolSize = size; + } + + public int PoolSize + { + get; + set; + } + + #region IPoolFactory Members + + public IObjectPool CreatePool(IPoolableObjectFactory poolableObjectFactory) + { + return new SimplePool(poolableObjectFactory, PoolSize); + } + + #endregion + } +} diff --git a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/SingleActionChannelManager.cs b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/SingleActionChannelManager.cs index 3ab4e3a..972d22b 100644 --- a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/SingleActionChannelManager.cs +++ b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/SingleActionChannelManager.cs @@ -1,72 +1,72 @@ -//Copyright 2009 Benny Michielsen - -//Licensed under the Apache License, Version 2.0 (the "License"); -//you may not use this file except in compliance with the License. -//You may obtain a copy of the License at - -// http://www.apache.org/licenses/LICENSE-2.0 - -//Unless required by applicable law or agreed to in writing, software -//distributed under the License is distributed on an "AS IS" BASIS, -//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -//See the License for the specific language governing permissions and -//limitations under the License. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.ServiceModel; - -namespace WCFChannelManager -{ - /// - /// Creates a channel for one time use. - /// - /// The type of the channel. - public class SingleActionChannelManager - : ChannelManagerBase - { - - /// - /// Constructor which takes the name of a valid endpoint. - /// - /// The name of the endpoint. - public SingleActionChannelManager(string endpointConfigurationName) - : base(endpointConfigurationName) - { - - } - - /// - /// Constructor which takes a channelfactory which can be used by this instance. - /// - /// - public SingleActionChannelManager(ICanCreateChannels factory) - : base(factory) - { - - } - - /// - /// Creates a channel that can be used. - /// - /// A usable channel. - public override TChannel FetchChannelToWorkWith() - { - return CreateAndOpenChannel(); - } - - /// - /// Closes the channel being passed. - /// - /// The channel to close. - public override void FinishedWorkWithChannel(TChannel channel) - { - CloseChannel(channel); - } - - } - - -} +//Copyright 2009 Benny Michielsen + +//Licensed under the Apache License, Version 2.0 (the "License"); +//you may not use this file except in compliance with the License. +//You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +//Unless required by applicable law or agreed to in writing, software +//distributed under the License is distributed on an "AS IS" BASIS, +//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +//See the License for the specific language governing permissions and +//limitations under the License. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.ServiceModel; + +namespace WCFChannelManager +{ + /// + /// Creates a channel for one time use. + /// + /// The type of the channel. + public class SingleActionChannelManager + : ChannelManagerBase + { + + /// + /// Constructor which takes the name of a valid endpoint. + /// + /// The name of the endpoint. + public SingleActionChannelManager(string endpointConfigurationName) + : base(endpointConfigurationName) + { + + } + + /// + /// Constructor which takes a channelfactory which can be used by this instance. + /// + /// + public SingleActionChannelManager(ICanCreateChannels factory) + : base(factory) + { + + } + + /// + /// Creates a channel that can be used. + /// + /// A usable channel. + public override TChannel FetchChannelToWorkWith() + { + return CreateAndOpenChannel(); + } + + /// + /// Closes the channel being passed. + /// + /// The channel to close. + public override void FinishedWorkWithChannel(TChannel channel) + { + CloseChannel(channel); + } + + } + + +} diff --git a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/WCFChannelManager.csproj b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/WCFChannelManager.csproj index 5eaa2ad..7369c11 100644 --- a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/WCFChannelManager.csproj +++ b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/WCFChannelManager.csproj @@ -10,7 +10,7 @@ Properties WCFChannelManager Perponcher.WCFChannelManager - v3.5 + v4.0 512 @@ -19,6 +19,7 @@ 3.5 ..\ true + true diff --git a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/WcfChannelProxyTypeBuilder.cs b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/WcfChannelProxyTypeBuilder.cs index a38d75e..75bdf31 100644 --- a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/WcfChannelProxyTypeBuilder.cs +++ b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/WcfChannelProxyTypeBuilder.cs @@ -1,130 +1,130 @@ -//Copyright 2009 Benny Michielsen - -//Licensed under the Apache License, Version 2.0 (the "License"); -//you may not use this file except in compliance with the License. -//You may obtain a copy of the License at - -// http://www.apache.org/licenses/LICENSE-2.0 - -//Unless required by applicable law or agreed to in writing, software -//distributed under the License is distributed on an "AS IS" BASIS, -//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -//See the License for the specific language governing permissions and -//limitations under the License. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using Spring.Proxy; -using System.Reflection.Emit; - -namespace WCFChannelManager -{ - /// - /// Builds subclasses of a ProxyChannel type so all calls get handled by the Execute method. - /// - public class WcfChannelProxyTypeBuilder - : AbstractProxyTypeBuilder - { - /// - /// Default Constructor. - /// - /// The type to subclass. - public WcfChannelProxyTypeBuilder(Type channelActionWrapper) - { - if (!IsSubclassOfRawGeneric(typeof(ProxyChannel<>), channelActionWrapper)) - { - throw new ArgumentException("The type used as channelActionWrapper should inherit from ChannelActionWrapper"); - } - - ChannelManagerType = channelActionWrapper; - } - - /// - /// Checks if a class is a subclass of generic class. - /// - /// The generic class. - /// The type to check. - /// True if its a subclass, otherwise false. - public static bool IsSubclassOfRawGeneric(Type generic, Type toCheck) - { - bool isSubclass = false; - while (toCheck != typeof(object) && !isSubclass) - { - var cur = toCheck.IsGenericType ? toCheck.GetGenericTypeDefinition() : toCheck; - if (generic == cur) - { - return true; - } - toCheck = toCheck.BaseType; - } - return isSubclass; - } - - /// - /// Finds the channeltype from a ChannelActionWrapperType. - /// - /// The ChannelManagerType. - /// Returns the channaltype if found, otherwise null. - public static Type FindChannelType(Type channelManagerType) - { - Type t = channelManagerType; - Type channelType = null; - while (t != typeof(object)&& channelType == null) - { - var cur = t.IsGenericType ? t.GetGenericTypeDefinition() : t; - if (typeof(ProxyChannel<>) == cur) - { - channelType = t.GetGenericArguments()[0]; - } - t = t.BaseType; - } - return channelType; - } - - /// - /// The ChannelManagerType. - /// - public Type ChannelManagerType - { - get; - set; - } - - /// - /// The channeltype. - /// - public Type ChannelType - { - get - { - return FindChannelType(ChannelManagerType); - } - } - - #region AbstractProxyTypeBuilder Members - - /// - /// Create the new type. - /// - /// A subclass of ProxyChannel with channel interface implementation. - public override Type BuildProxyType() - { - TypeBuilder builder = CreateTypeBuilder(Name, ChannelManagerType); - ImplementInterface(builder, new WcfMethodBuilder(builder, this, ChannelManagerType), ChannelType, TargetType); - return builder.CreateType(); - } - - /// - /// Pushed the target. - /// - /// IL generator. - public override void PushTarget(System.Reflection.Emit.ILGenerator il) - { - PushProxy(il); - } - - #endregion - } -} +//Copyright 2009 Benny Michielsen + +//Licensed under the Apache License, Version 2.0 (the "License"); +//you may not use this file except in compliance with the License. +//You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +//Unless required by applicable law or agreed to in writing, software +//distributed under the License is distributed on an "AS IS" BASIS, +//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +//See the License for the specific language governing permissions and +//limitations under the License. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Spring.Proxy; +using System.Reflection.Emit; + +namespace WCFChannelManager +{ + /// + /// Builds subclasses of a ProxyChannel type so all calls get handled by the Execute method. + /// + public class WcfChannelProxyTypeBuilder + : AbstractProxyTypeBuilder + { + /// + /// Default Constructor. + /// + /// The type to subclass. + public WcfChannelProxyTypeBuilder(Type channelActionWrapper) + { + if (!IsSubclassOfRawGeneric(typeof(ProxyChannel<>), channelActionWrapper)) + { + throw new ArgumentException("The type used as channelActionWrapper should inherit from ChannelActionWrapper"); + } + + ChannelManagerType = channelActionWrapper; + } + + /// + /// Checks if a class is a subclass of generic class. + /// + /// The generic class. + /// The type to check. + /// True if its a subclass, otherwise false. + public static bool IsSubclassOfRawGeneric(Type generic, Type toCheck) + { + bool isSubclass = false; + while (toCheck != typeof(object) && !isSubclass) + { + var cur = toCheck.IsGenericType ? toCheck.GetGenericTypeDefinition() : toCheck; + if (generic == cur) + { + return true; + } + toCheck = toCheck.BaseType; + } + return isSubclass; + } + + /// + /// Finds the channeltype from a ChannelActionWrapperType. + /// + /// The ChannelManagerType. + /// Returns the channaltype if found, otherwise null. + public static Type FindChannelType(Type channelManagerType) + { + Type t = channelManagerType; + Type channelType = null; + while (t != typeof(object)&& channelType == null) + { + var cur = t.IsGenericType ? t.GetGenericTypeDefinition() : t; + if (typeof(ProxyChannel<>) == cur) + { + channelType = t.GetGenericArguments()[0]; + } + t = t.BaseType; + } + return channelType; + } + + /// + /// The ChannelManagerType. + /// + public Type ChannelManagerType + { + get; + set; + } + + /// + /// The channeltype. + /// + public Type ChannelType + { + get + { + return FindChannelType(ChannelManagerType); + } + } + + #region AbstractProxyTypeBuilder Members + + /// + /// Create the new type. + /// + /// A subclass of ProxyChannel with channel interface implementation. + public override Type BuildProxyType() + { + TypeBuilder builder = CreateTypeBuilder(Name, ChannelManagerType); + ImplementInterface(builder, new WcfMethodBuilder(builder, this, ChannelManagerType), ChannelType, TargetType); + return builder.CreateType(); + } + + /// + /// Pushed the target. + /// + /// IL generator. + public override void PushTarget(System.Reflection.Emit.ILGenerator il) + { + PushProxy(il); + } + + #endregion + } +} diff --git a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/WcfInterceptor.cs b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/WcfInterceptor.cs index 8bd8852..88daa02 100644 --- a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/WcfInterceptor.cs +++ b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/WcfInterceptor.cs @@ -1,4 +1,4 @@ -//Copyright 2009 Sergio Moreno Calzada +//Copyright 2013 Sergio Moreno Calzada //Licensed under the Apache License, Version 2.0 (the "License"); //you may not use this file except in compliance with the License. @@ -33,7 +33,7 @@ public object Invoke(IMethodInvocation invocation) return invocation.Proceed(); } - var result = proxy.Execute(invocation.Method.Name, invocation.Arguments); + var result = proxy.Execute(invocation.Method, invocation.Arguments); return result; } diff --git a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/WcfMethodBuilder.cs b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/WcfMethodBuilder.cs index 42cdadf..e9964e1 100644 --- a/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/WcfMethodBuilder.cs +++ b/WCFChannelManager/src/WCFChannelManager/WCFChannelManager/WcfMethodBuilder.cs @@ -1,147 +1,147 @@ -//Copyright 2009 Benny Michielsen - -//Licensed under the Apache License, Version 2.0 (the "License"); -//you may not use this file except in compliance with the License. -//You may obtain a copy of the License at - -// http://www.apache.org/licenses/LICENSE-2.0 - -//Unless required by applicable law or agreed to in writing, software -//distributed under the License is distributed on an "AS IS" BASIS, -//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -//See the License for the specific language governing permissions and -//limitations under the License. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Collections; -using System.Reflection; -using System.Reflection.Emit; -using Spring.Proxy; - -namespace WCFChannelManager -{ - public class WcfMethodBuilder - : AbstractProxyMethodBuilder - { - private const string ExecuteMethodName = "Execute"; - - public WcfMethodBuilder(TypeBuilder builder, IProxyTypeGenerator generator, Type channelManager) - : base(builder, generator, false) - { - InvokeMethod = channelManager.GetMethod(ExecuteMethodName, BindingFlags.NonPublic | BindingFlags.Instance); - } - - protected MethodInfo InvokeMethod - { - get; - set; - } - - protected override void GenerateMethod(ILGenerator il, System.Reflection.MethodInfo method, System.Reflection.MethodInfo interfaceMethod) - { - // In Parameters - ArrayList inParams = new ArrayList(); - // Ref or Out Parameters - ArrayList refOutParams = new ArrayList(); - - foreach (ParameterInfo paramInfo in interfaceMethod.GetParameters()) - { - if (paramInfo.IsRetval || paramInfo.IsOut) - { - refOutParams.Add(paramInfo); - } - else - { - inParams.Add(paramInfo); - } - } - - proxyGenerator.PushTarget(il); - - //LocalBuilder methodToCall = il.DeclareLocal(typeof(MethodInfo)); - //il.Emit(OpCodes.Newobj, interfaceMethod); - //il.Emit(OpCodes.Ldloc, methodToCall); - il.Emit(OpCodes.Ldstr, interfaceMethod.Name); - - - - // Parameter #2 - LocalBuilder parameters = il.DeclareLocal(typeof(Object[])); - il.Emit(OpCodes.Ldc_I4, inParams.Count); - il.Emit(OpCodes.Newarr, typeof(Object)); - il.Emit(OpCodes.Stloc, parameters); - - int paramIndex = 0; - foreach (ParameterInfo paramInfo in inParams) - { - il.Emit(OpCodes.Ldloc, parameters); - il.Emit(OpCodes.Ldc_I4, paramIndex); - il.Emit(OpCodes.Ldarg, paramInfo.Position + 1); - if (paramInfo.ParameterType.IsValueType) - { - il.Emit(OpCodes.Box, paramInfo.ParameterType); - } - il.Emit(OpCodes.Stelem_Ref); - - paramIndex++; - } - - il.Emit(OpCodes.Ldloc, parameters); - - // Call Invoke method and save result - LocalBuilder results = il.DeclareLocal(typeof(Object[])); - il.EmitCall(OpCodes.Callvirt, InvokeMethod, null); - il.Emit(OpCodes.Stloc, results); - - - int resultIndex = (interfaceMethod.ReturnType == typeof(void) ? 0 : 1); - foreach (ParameterInfo paramInfo in refOutParams) - { - il.Emit(OpCodes.Ldarg, paramInfo.Position + 1); - il.Emit(OpCodes.Ldloc, results); - - // Cast / Unbox the return value - il.Emit(OpCodes.Ldc_I4, resultIndex); - il.Emit(OpCodes.Ldelem_Ref); - - Type elementType = paramInfo.ParameterType.GetElementType(); - if (elementType.IsValueType) - { - il.Emit(OpCodes.Unbox, elementType); - il.Emit(OpCodes.Ldobj, elementType); - il.Emit(OpCodes.Stobj, elementType); - } - else - { - il.Emit(OpCodes.Castclass, elementType); - il.Emit(OpCodes.Stind_Ref); - } - - resultIndex++; - } - - if (interfaceMethod.ReturnType != typeof(void)) - { - il.Emit(OpCodes.Ldloc, results); - - // Cast / Unbox the return value - il.Emit(OpCodes.Ldc_I4_0); - il.Emit(OpCodes.Ldelem_Ref); - if (interfaceMethod.ReturnType.IsValueType) - { - il.Emit(OpCodes.Unbox, interfaceMethod.ReturnType); - il.Emit(OpCodes.Ldobj, interfaceMethod.ReturnType); - } - else - { - il.Emit(OpCodes.Castclass, interfaceMethod.ReturnType); - } - } - - } - } - -} +//Copyright 2009 Benny Michielsen + +//Licensed under the Apache License, Version 2.0 (the "License"); +//you may not use this file except in compliance with the License. +//You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +//Unless required by applicable law or agreed to in writing, software +//distributed under the License is distributed on an "AS IS" BASIS, +//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +//See the License for the specific language governing permissions and +//limitations under the License. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Collections; +using System.Reflection; +using System.Reflection.Emit; +using Spring.Proxy; + +namespace WCFChannelManager +{ + public class WcfMethodBuilder + : AbstractProxyMethodBuilder + { + private const string ExecuteMethodName = "Execute"; + + public WcfMethodBuilder(TypeBuilder builder, IProxyTypeGenerator generator, Type channelManager) + : base(builder, generator, false) + { + InvokeMethod = channelManager.GetMethod(ExecuteMethodName, BindingFlags.NonPublic | BindingFlags.Instance); + } + + protected MethodInfo InvokeMethod + { + get; + set; + } + + protected override void GenerateMethod(ILGenerator il, System.Reflection.MethodInfo method, System.Reflection.MethodInfo interfaceMethod) + { + // In Parameters + ArrayList inParams = new ArrayList(); + // Ref or Out Parameters + ArrayList refOutParams = new ArrayList(); + + foreach (ParameterInfo paramInfo in interfaceMethod.GetParameters()) + { + if (paramInfo.IsRetval || paramInfo.IsOut) + { + refOutParams.Add(paramInfo); + } + else + { + inParams.Add(paramInfo); + } + } + + proxyGenerator.PushTarget(il); + + //LocalBuilder methodToCall = il.DeclareLocal(typeof(MethodInfo)); + //il.Emit(OpCodes.Newobj, interfaceMethod); + //il.Emit(OpCodes.Ldloc, methodToCall); + il.Emit(OpCodes.Ldstr, interfaceMethod.Name); + + + + // Parameter #2 + LocalBuilder parameters = il.DeclareLocal(typeof(Object[])); + il.Emit(OpCodes.Ldc_I4, inParams.Count); + il.Emit(OpCodes.Newarr, typeof(Object)); + il.Emit(OpCodes.Stloc, parameters); + + int paramIndex = 0; + foreach (ParameterInfo paramInfo in inParams) + { + il.Emit(OpCodes.Ldloc, parameters); + il.Emit(OpCodes.Ldc_I4, paramIndex); + il.Emit(OpCodes.Ldarg, paramInfo.Position + 1); + if (paramInfo.ParameterType.IsValueType) + { + il.Emit(OpCodes.Box, paramInfo.ParameterType); + } + il.Emit(OpCodes.Stelem_Ref); + + paramIndex++; + } + + il.Emit(OpCodes.Ldloc, parameters); + + // Call Invoke method and save result + LocalBuilder results = il.DeclareLocal(typeof(Object[])); + il.EmitCall(OpCodes.Callvirt, InvokeMethod, null); + il.Emit(OpCodes.Stloc, results); + + + int resultIndex = (interfaceMethod.ReturnType == typeof(void) ? 0 : 1); + foreach (ParameterInfo paramInfo in refOutParams) + { + il.Emit(OpCodes.Ldarg, paramInfo.Position + 1); + il.Emit(OpCodes.Ldloc, results); + + // Cast / Unbox the return value + il.Emit(OpCodes.Ldc_I4, resultIndex); + il.Emit(OpCodes.Ldelem_Ref); + + Type elementType = paramInfo.ParameterType.GetElementType(); + if (elementType.IsValueType) + { + il.Emit(OpCodes.Unbox, elementType); + il.Emit(OpCodes.Ldobj, elementType); + il.Emit(OpCodes.Stobj, elementType); + } + else + { + il.Emit(OpCodes.Castclass, elementType); + il.Emit(OpCodes.Stind_Ref); + } + + resultIndex++; + } + + if (interfaceMethod.ReturnType != typeof(void)) + { + il.Emit(OpCodes.Ldloc, results); + + // Cast / Unbox the return value + il.Emit(OpCodes.Ldc_I4_0); + il.Emit(OpCodes.Ldelem_Ref); + if (interfaceMethod.ReturnType.IsValueType) + { + il.Emit(OpCodes.Unbox, interfaceMethod.ReturnType); + il.Emit(OpCodes.Ldobj, interfaceMethod.ReturnType); + } + else + { + il.Emit(OpCodes.Castclass, interfaceMethod.ReturnType); + } + } + + } + } + +} diff --git a/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/App.config b/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/App.config index af96bc8..0e679de 100644 --- a/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/App.config +++ b/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/App.config @@ -1,31 +1,31 @@ - - - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/IService.cs b/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/IService.cs index c7fdcba..991ad85 100644 --- a/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/IService.cs +++ b/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/IService.cs @@ -1,27 +1,30 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.ServiceModel; - -namespace WCFChannelManagerTests -{ - [ServiceContract] - public interface IService - { - [OperationContract] - void DoOperation1(); - - [OperationContract] - int DoOperation2(); - - [OperationContract] - int DoOperation2WithNumber(int number); - - [OperationContract] - void Calculate(int a, int b, out int c); - - [OperationContract] - ComplexObject ReturnComplexObject(); - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.ServiceModel; + +namespace WCFChannelManagerTests +{ + [ServiceContract] + public interface IService + { + [OperationContract] + void DoOperation1(); + + [OperationContract] + int DoOperation2(); + + [OperationContract] + int DoOperation2WithNumber(int number); + + [OperationContract] + void Calculate(int a, int b, out int c); + + [OperationContract] + ComplexObject ReturnComplexObject(); + + [OperationContract] + void DoOperationWithByRef(ref int number); + } +} diff --git a/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/OpenGenericProxyChannel.cs b/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/OpenGenericProxyChannel.cs index 7d08a3a..1b54f2c 100644 --- a/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/OpenGenericProxyChannel.cs +++ b/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/OpenGenericProxyChannel.cs @@ -1,14 +1,14 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using WCFChannelManager; - -namespace WCFChannelManagerTests -{ - public class OpenGenericProxyChannel - : ProxyChannel - { - - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using WCFChannelManager; + +namespace WCFChannelManagerTests +{ + public class OpenGenericProxyChannel + : ProxyChannel + { + + } +} diff --git a/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/Properties/AssemblyInfo.cs b/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/Properties/AssemblyInfo.cs index 4d92fa9..aa84506 100644 --- a/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/Properties/AssemblyInfo.cs +++ b/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/Properties/AssemblyInfo.cs @@ -1,36 +1,36 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("WCFChannelManagerTests")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("WCFChannelManagerTests")] -[assembly: AssemblyCopyright("Copyright © 2009")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("300aa672-f5b5-4e05-aecb-eadb4285978c")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("WCFChannelManagerTests")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("WCFChannelManagerTests")] +[assembly: AssemblyCopyright("Copyright © 2009")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("300aa672-f5b5-4e05-aecb-eadb4285978c")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/Service.cs b/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/Service.cs index 0e72e6a..0469b05 100644 --- a/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/Service.cs +++ b/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/Service.cs @@ -1,58 +1,62 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Runtime.Serialization; - -namespace WCFChannelManagerTests -{ - public class Service - : IService - { - #region IService Members - - public void DoOperation1() - { - - } - - public int DoOperation2() - { - return 5; - } - - public int DoOperation2WithNumber(int number) - { - return number; - } - - public void Calculate(int a, int b, out int c) - { - c = a + b; - } - - public object ReturnsNull() - { - return null; - } - - #endregion - - #region IService Members - - - public ComplexObject ReturnComplexObject() - { - return null; - } - - #endregion - } - - [DataContract] - public class ComplexObject - { - [DataMember] - public int Value { get; set; } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Runtime.Serialization; + +namespace WCFChannelManagerTests +{ + public class Service : IService + { + #region IService Members + + public void DoOperation1() + { + + } + + public int DoOperation2() + { + return 5; + } + + public int DoOperation2WithNumber(int number) + { + return number; + } + + public void Calculate(int a, int b, out int c) + { + c = a + b; + } + + public object ReturnsNull() + { + return null; + } + + #endregion + + #region IService Members + + + public ComplexObject ReturnComplexObject() + { + return null; + } + + public void DoOperationWithByRef(ref int number) + { + number = 5; + } + + #endregion + } + + [DataContract] + public class ComplexObject + { + [DataMember] + public int Value { get; set; } + } +} diff --git a/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/StubAutoSizePool.cs b/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/StubAutoSizePool.cs index 23f9719..9d6971d 100644 --- a/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/StubAutoSizePool.cs +++ b/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/StubAutoSizePool.cs @@ -1,35 +1,35 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using WCFChannelManager; -using Spring.Pool; - -namespace WCFChannelManagerTests -{ - public class StubAutoSizePool - : AutoSizePool - { - - public StubAutoSizePool(IPoolableObjectFactory factory) - : base(factory) - { - - } - - public void AddIdleObject(object o) - { - base.passiveObjects.Add(o); - } - - public void AddActiveObject(object o) - { - base.activeObjects.Add(o); - } - - public void SetClosed() - { - closed = true; - } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using WCFChannelManager; +using Spring.Pool; + +namespace WCFChannelManagerTests +{ + public class StubAutoSizePool + : AutoSizePool + { + + public StubAutoSizePool(IPoolableObjectFactory factory) + : base(factory) + { + + } + + public void AddIdleObject(object o) + { + base.passiveObjects.Add(o); + } + + public void AddActiveObject(object o) + { + base.activeObjects.Add(o); + } + + public void SetClosed() + { + closed = true; + } + } +} diff --git a/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/StubProxyChannel.cs b/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/StubProxyChannel.cs index 6024585..3522f7d 100644 --- a/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/StubProxyChannel.cs +++ b/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/StubProxyChannel.cs @@ -1,20 +1,20 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using WCFChannelManager; -using System.Reflection; - -namespace WCFChannelManagerTests -{ - public class StubProxyChannel - : ProxyChannel - { - public void DoOperation(MethodInfo methodInfo, object[] parameters) - { - base.ExecuteInChannel(methodInfo, parameters); - } - } - - -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using WCFChannelManager; +using System.Reflection; + +namespace WCFChannelManagerTests +{ + public class StubProxyChannel + : ProxyChannel + { + public void DoOperation(MethodInfo methodInfo, object[] parameters) + { + base.ExecuteInChannel(methodInfo, parameters); + } + } + + +} diff --git a/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/Tests/AutoSizePoolFactoryTests.cs b/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/Tests/AutoSizePoolFactoryTests.cs index 623a9b2..5dfedb6 100644 --- a/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/Tests/AutoSizePoolFactoryTests.cs +++ b/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/Tests/AutoSizePoolFactoryTests.cs @@ -1,29 +1,29 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using NUnit.Framework; -using WCFChannelManager; -using Rhino.Mocks; -using Spring.Pool; - -namespace WCFChannelManagerTests -{ - [TestFixture] - public class AutoSizePoolFactoryTests - { - [Test] - public void CreatePool_WhenCalled_ReturnsAutoSizePool() - { - var repo = new MockRepository(); - var poolableObjectFactory = repo.StrictMock(); - repo.ReplayAll(); - AutoSizePoolFactory factory = new AutoSizePoolFactory(); - - var result = factory.CreatePool(poolableObjectFactory); - - Assert.IsInstanceOfType(typeof(AutoSizePool), result); - repo.VerifyAll(); - } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using NUnit.Framework; +using WCFChannelManager; +using Rhino.Mocks; +using Spring.Pool; + +namespace WCFChannelManagerTests +{ + [TestFixture] + public class AutoSizePoolFactoryTests + { + [Test] + public void CreatePool_WhenCalled_ReturnsAutoSizePool() + { + var repo = new MockRepository(); + var poolableObjectFactory = repo.StrictMock(); + repo.ReplayAll(); + AutoSizePoolFactory factory = new AutoSizePoolFactory(); + + var result = factory.CreatePool(poolableObjectFactory); + + Assert.IsInstanceOfType(typeof(AutoSizePool), result); + repo.VerifyAll(); + } + } +} diff --git a/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/Tests/AutoSizePoolTests.cs b/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/Tests/AutoSizePoolTests.cs index ac0179a..9535ef7 100644 --- a/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/Tests/AutoSizePoolTests.cs +++ b/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/Tests/AutoSizePoolTests.cs @@ -1,176 +1,176 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using NUnit.Framework; -using WCFChannelManager; -using Rhino.Mocks; -using Spring.Pool; - -namespace WCFChannelManagerTests -{ - [TestFixture] - public class AutoSizePoolTests - { - private MockRepository repo; - private IPoolableObjectFactory factory; - private StubAutoSizePool pool; - - [SetUp] - public void Init() - { - repo = new MockRepository(); - factory = repo.StrictMock(); - pool = new StubAutoSizePool(factory); - } - - [TearDown] - public void StopTest() - { - repo.VerifyAll(); - } - - [Test] - public void PoolConstructor_WhenCalled_InitializesProperties() - { - repo.ReplayAll(); - - Assert.AreEqual(0, pool.NumActive); - Assert.AreEqual(0, pool.NumIdle); - Assert.AreSame(factory, pool.PoolableObjectFactory); - } - - [Test] - public void AddObject_WhenCalled_AddsObjectToIdle() - { - Expect.Call(factory.MakeObject()).Return(new object()); - repo.ReplayAll(); - pool.AddObject(); - Assert.AreEqual(1, pool.NumIdle); - } - - [Test] - public void BorrowObject_WhenCalled_ReturnsNewObjectWhenNoneExistedBefore() - { - object factoryProduct = new object(); - - Expect.Call(factory.MakeObject()).Return(factoryProduct); - factory.ActivateObject(factoryProduct); - repo.ReplayAll(); - - object borrowedObject = pool.BorrowObject(); - Assert.AreSame(borrowedObject, factoryProduct); - } - - [Test] - public void BorrowObject_WhenCalled_ReturnsIdleObject() - { - object idleObject = new object(); - pool.AddIdleObject(idleObject); - - factory.ActivateObject(idleObject); - Expect.Call(factory.ValidateObject(idleObject)).Return(true); - repo.ReplayAll(); - - object borrowedObject = pool.BorrowObject(); - Assert.AreSame(borrowedObject, idleObject); - } - - [Test] - public void BorrowObject_WhenCalled_CleansupInvalidIdles() - { - object invalidIdle = new object(); - object validObject = new object(); - pool.AddIdleObject(invalidIdle); - - factory.ActivateObject(invalidIdle); - Expect.Call(factory.ValidateObject(invalidIdle)).Return(false); - factory.DestroyObject(invalidIdle); - Expect.Call(factory.MakeObject()).Return(validObject); - factory.ActivateObject(validObject); - repo.ReplayAll(); - - object borrowedObject = pool.BorrowObject(); - Assert.AreSame(borrowedObject, validObject); - } - - [Test] - public void BorrowObject_WhenCalled_AddObjectToActiveList() - { - object newObject = new object(); - - Expect.Call(factory.MakeObject()).Return(newObject); - factory.ActivateObject(newObject); - repo.ReplayAll(); - - object borrowed = pool.BorrowObject(); - Assert.AreEqual(1, pool.NumActive); - } - - [Test] - public void Clear_WhenCalled_RemovesAllIdleObjects() - { - object idleOne = new object(); - object idleTwo = new object(); - pool.AddIdleObject(idleOne); - pool.AddIdleObject(idleTwo); - - factory.DestroyObject(idleOne); - factory.DestroyObject(idleTwo); - repo.ReplayAll(); - - pool.Clear(); - Assert.AreEqual(0, pool.NumIdle); - } - - [Test] - public void Close_WhenCalled_ClearsActiveAndIdleObjects() - { - object idle = new object(); - object active = new object(); - pool.AddIdleObject(idle); - pool.AddActiveObject(active); - - factory.DestroyObject(idle); - factory.DestroyObject(active); - repo.ReplayAll(); - - pool.Close(); - Assert.AreEqual(0, pool.NumIdle); - Assert.AreEqual(0, pool.NumActive); - } - - [Test] - [ExpectedException(typeof(InvalidOperationException))] - public void BorrowObject_WhenCalledOnClosedPool_ThrowsException() - { - repo.ReplayAll(); - pool.SetClosed(); - pool.BorrowObject(); - } - - [Test] - public void ReturnObject_WhenCalled_MakesObjectIdle() - { - object activeObject = new object(); - pool.AddActiveObject(activeObject); - - factory.PassivateObject(activeObject); - repo.ReplayAll(); - - pool.ReturnObject(activeObject); - Assert.AreEqual(1, pool.NumIdle); - } - - [Test] - public void ReturnObject_WhenCalledWithNotKnownObject_DoesNotMakeObjectIdle() - { - object stranger = new object(); - - repo.ReplayAll(); - - pool.ReturnObject(stranger); - Assert.AreEqual(0, pool.NumIdle); - } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using NUnit.Framework; +using WCFChannelManager; +using Rhino.Mocks; +using Spring.Pool; + +namespace WCFChannelManagerTests +{ + [TestFixture] + public class AutoSizePoolTests + { + private MockRepository repo; + private IPoolableObjectFactory factory; + private StubAutoSizePool pool; + + [SetUp] + public void Init() + { + repo = new MockRepository(); + factory = repo.StrictMock(); + pool = new StubAutoSizePool(factory); + } + + [TearDown] + public void StopTest() + { + repo.VerifyAll(); + } + + [Test] + public void PoolConstructor_WhenCalled_InitializesProperties() + { + repo.ReplayAll(); + + Assert.AreEqual(0, pool.NumActive); + Assert.AreEqual(0, pool.NumIdle); + Assert.AreSame(factory, pool.PoolableObjectFactory); + } + + [Test] + public void AddObject_WhenCalled_AddsObjectToIdle() + { + Expect.Call(factory.MakeObject()).Return(new object()); + repo.ReplayAll(); + pool.AddObject(); + Assert.AreEqual(1, pool.NumIdle); + } + + [Test] + public void BorrowObject_WhenCalled_ReturnsNewObjectWhenNoneExistedBefore() + { + object factoryProduct = new object(); + + Expect.Call(factory.MakeObject()).Return(factoryProduct); + factory.ActivateObject(factoryProduct); + repo.ReplayAll(); + + object borrowedObject = pool.BorrowObject(); + Assert.AreSame(borrowedObject, factoryProduct); + } + + [Test] + public void BorrowObject_WhenCalled_ReturnsIdleObject() + { + object idleObject = new object(); + pool.AddIdleObject(idleObject); + + factory.ActivateObject(idleObject); + Expect.Call(factory.ValidateObject(idleObject)).Return(true); + repo.ReplayAll(); + + object borrowedObject = pool.BorrowObject(); + Assert.AreSame(borrowedObject, idleObject); + } + + [Test] + public void BorrowObject_WhenCalled_CleansupInvalidIdles() + { + object invalidIdle = new object(); + object validObject = new object(); + pool.AddIdleObject(invalidIdle); + + factory.ActivateObject(invalidIdle); + Expect.Call(factory.ValidateObject(invalidIdle)).Return(false); + factory.DestroyObject(invalidIdle); + Expect.Call(factory.MakeObject()).Return(validObject); + factory.ActivateObject(validObject); + repo.ReplayAll(); + + object borrowedObject = pool.BorrowObject(); + Assert.AreSame(borrowedObject, validObject); + } + + [Test] + public void BorrowObject_WhenCalled_AddObjectToActiveList() + { + object newObject = new object(); + + Expect.Call(factory.MakeObject()).Return(newObject); + factory.ActivateObject(newObject); + repo.ReplayAll(); + + object borrowed = pool.BorrowObject(); + Assert.AreEqual(1, pool.NumActive); + } + + [Test] + public void Clear_WhenCalled_RemovesAllIdleObjects() + { + object idleOne = new object(); + object idleTwo = new object(); + pool.AddIdleObject(idleOne); + pool.AddIdleObject(idleTwo); + + factory.DestroyObject(idleOne); + factory.DestroyObject(idleTwo); + repo.ReplayAll(); + + pool.Clear(); + Assert.AreEqual(0, pool.NumIdle); + } + + [Test] + public void Close_WhenCalled_ClearsActiveAndIdleObjects() + { + object idle = new object(); + object active = new object(); + pool.AddIdleObject(idle); + pool.AddActiveObject(active); + + factory.DestroyObject(idle); + factory.DestroyObject(active); + repo.ReplayAll(); + + pool.Close(); + Assert.AreEqual(0, pool.NumIdle); + Assert.AreEqual(0, pool.NumActive); + } + + [Test] + [ExpectedException(typeof(InvalidOperationException))] + public void BorrowObject_WhenCalledOnClosedPool_ThrowsException() + { + repo.ReplayAll(); + pool.SetClosed(); + pool.BorrowObject(); + } + + [Test] + public void ReturnObject_WhenCalled_MakesObjectIdle() + { + object activeObject = new object(); + pool.AddActiveObject(activeObject); + + factory.PassivateObject(activeObject); + repo.ReplayAll(); + + pool.ReturnObject(activeObject); + Assert.AreEqual(1, pool.NumIdle); + } + + [Test] + public void ReturnObject_WhenCalledWithNotKnownObject_DoesNotMakeObjectIdle() + { + object stranger = new object(); + + repo.ReplayAll(); + + pool.ReturnObject(stranger); + Assert.AreEqual(0, pool.NumIdle); + } + } +} diff --git a/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/Tests/ChannelManagerFactoryObjectTests.cs b/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/Tests/ChannelManagerFactoryObjectTests.cs index 9d9328d..d2a31cc 100644 --- a/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/Tests/ChannelManagerFactoryObjectTests.cs +++ b/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/Tests/ChannelManagerFactoryObjectTests.cs @@ -1,158 +1,158 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using NUnit.Framework; -using WCFChannelManager; -using Spring.Objects.Factory.Support; -using Spring.Context.Support; -using Spring.Objects; -using System.ServiceModel; -using Spring.Pool.Support; - -namespace WCFChannelManagerTests -{ - [TestFixture] - public class ChannelManagerFactoryObjectTests - { - public const string EndpointName = "MyEndpoint"; - - public ChannelManagerFactoryObject Factory - { - get; - set; - } - - [SetUp] - public void StartTest() - { - Factory = new ChannelManagerFactoryObject(); - } - - private void SetupFactoryWithEndpointAndService() - { - SetupFactory(EndpointName, typeof(IService)); - } - - private void SetupFactory(string endpointName, Type channelType) - { - Factory.EndpointConfigurationName = endpointName; - Factory.ChannelType = channelType; - } - - [Test, ExpectedException(typeof(ArgumentException))] - public void AfterPropertiesSet_WhenNothingIsConfigured_ThrowsException() - { - Factory.AfterPropertiesSet(); - } - - [Test, ExpectedException(typeof(ArgumentException))] - public void AfterPropertiesSet_WhenMissingEndpoint_ThrowsException() - { - Factory.ChannelType = typeof(IService); - - Factory.AfterPropertiesSet(); - } - - [Test, ExpectedException(typeof(ArgumentException))] - public void AfterPropertiesSet_WhenMissingChannelType_ThrowsException() - { - Factory.EndpointConfigurationName = EndpointName; - - Factory.AfterPropertiesSet(); - } - - [Test, ExpectedException(typeof(ArgumentException))] - public void AfterPropertiesSet_WhenChannelTypeCanNotBeDerived_ThrowsException() - { - SetupFactory(EndpointName, null); - Factory.ChannelActionWrapperType = typeof(OpenGenericProxyChannel<>); - - Factory.AfterPropertiesSet(); - } - - [Test] - public void AfterProperties_WhenChannelTypeAndEndpointConfigured_Succeeds() - { - SetupFactoryWithEndpointAndService(); - - Factory.AfterPropertiesSet(); - } - - [Test] - public void AfterProperties_WhenChannelTypeCanBeDerivedAndEndpointConfigured_Succeeds() - { - SetupFactory(EndpointName, typeof(StubProxyChannel)); - - Factory.AfterPropertiesSet(); - } - - [Test] - public void GetObject_WhenCalled_ReturnsChannelMatchingChannelType() - { - SetupFactoryWithEndpointAndService(); - - object result = Factory.GetObject(); - - Assert.IsTrue(result is IService); - } - - [Test] - public void GetObject_WhenCalled_ReturnsChannelWithDefaultValues() - { - SetupFactoryWithEndpointAndService(); - - var result = Factory.GetObject() as ProxyChannel; - - Assert.IsNotNull(result.ChannelManager, "No default channelmanager was set"); - Assert.IsInstanceOfType(typeof(SingleActionChannelManager), result.ChannelManager); - } - - [Test] - public void GetObject_WhenConfiguredWithFixedPool_ReturnsChannelWithFixedPool() - { - AssertChannelHasPool(ChannelManagerFactoryObject.FixedPool, typeof(SimplePool)); - } - - private void AssertChannelHasPool(string channelManagementMode, Type poolType) - { - SetupFactoryWithEndpointAndService(); - Factory.ChannelManagementMode = channelManagementMode; - - var result = Factory.GetObject() as ProxyChannel; - - Assert.IsInstanceOfType(typeof(ChannelPoolManager), result.ChannelManager); - Assert.IsInstanceOfType(poolType, ((ChannelPoolManager)result.ChannelManager).Pool); - } - - - [Test] - public void GetObject_WhenCalledWithAutoSizePool_ReturnsChannelWithAutoSizePool() - { - AssertChannelHasPool(ChannelManagerFactoryObject.VariablePool, typeof(AutoSizePool)); - } - - [Test] - public void Factory_WhenObtainedFromContainer_HasContainerConfiguration() - { - RootObjectDefinition productTemplate = new RootObjectDefinition(); - productTemplate.PropertyValues.Add(new Spring.Objects.PropertyValue("ChannelManager.ChannelFactory.Credentials.UserName.UserName", "un")); - productTemplate.PropertyValues.Add(new Spring.Objects.PropertyValue("ChannelManager.ChannelFactory.Credentials.UserName.Password", "pw")); - GenericApplicationContext context = new GenericApplicationContext(); - IObjectDefinitionFactory objectDefinitionFactory = new DefaultObjectDefinitionFactory(); - ObjectDefinitionBuilder builder = ObjectDefinitionBuilder.RootObjectDefinition(objectDefinitionFactory, typeof(ChannelManagerFactoryObject)); - builder.AddPropertyValue("EndpointConfigurationName",EndpointName); - builder.AddPropertyValue("ChannelType",typeof(IService)); - builder.AddPropertyValue("ProductTemplate", productTemplate); - context.RegisterObjectDefinition("myChannelFactoryObject", builder.ObjectDefinition); - - var obj = context.GetObject("myChannelFactoryObject")as ProxyChannel; - - Assert.IsNotNull(obj); - ChannelManagerBase channelManager = obj.ChannelManager as ChannelManagerBase; - Assert.IsNotNull(channelManager); - Assert.AreEqual("un", ((ChannelFactory)channelManager.ChannelFactory).Credentials.UserName.UserName); - Assert.AreEqual("pw", ((ChannelFactory)channelManager.ChannelFactory).Credentials.UserName.Password); - } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using NUnit.Framework; +using WCFChannelManager; +using Spring.Objects.Factory.Support; +using Spring.Context.Support; +using Spring.Objects; +using System.ServiceModel; +using Spring.Pool.Support; + +namespace WCFChannelManagerTests +{ + [TestFixture] + public class ChannelManagerFactoryObjectTests + { + public const string EndpointName = "MyEndpoint"; + + public ChannelManagerFactoryObject Factory + { + get; + set; + } + + [SetUp] + public void StartTest() + { + Factory = new ChannelManagerFactoryObject(); + } + + private void SetupFactoryWithEndpointAndService() + { + SetupFactory(EndpointName, typeof(IService)); + } + + private void SetupFactory(string endpointName, Type channelType) + { + Factory.EndpointConfigurationName = endpointName; + Factory.ChannelType = channelType; + } + + [Test, ExpectedException(typeof(ArgumentException))] + public void AfterPropertiesSet_WhenNothingIsConfigured_ThrowsException() + { + Factory.AfterPropertiesSet(); + } + + [Test, ExpectedException(typeof(ArgumentException))] + public void AfterPropertiesSet_WhenMissingEndpoint_ThrowsException() + { + Factory.ChannelType = typeof(IService); + + Factory.AfterPropertiesSet(); + } + + [Test, ExpectedException(typeof(ArgumentException))] + public void AfterPropertiesSet_WhenMissingChannelType_ThrowsException() + { + Factory.EndpointConfigurationName = EndpointName; + + Factory.AfterPropertiesSet(); + } + + [Test, ExpectedException(typeof(ArgumentException))] + public void AfterPropertiesSet_WhenChannelTypeCanNotBeDerived_ThrowsException() + { + SetupFactory(EndpointName, null); + Factory.ChannelActionWrapperType = typeof(OpenGenericProxyChannel<>); + + Factory.AfterPropertiesSet(); + } + + [Test] + public void AfterProperties_WhenChannelTypeAndEndpointConfigured_Succeeds() + { + SetupFactoryWithEndpointAndService(); + + Factory.AfterPropertiesSet(); + } + + [Test] + public void AfterProperties_WhenChannelTypeCanBeDerivedAndEndpointConfigured_Succeeds() + { + SetupFactory(EndpointName, typeof(StubProxyChannel)); + + Factory.AfterPropertiesSet(); + } + + [Test] + public void GetObject_WhenCalled_ReturnsChannelMatchingChannelType() + { + SetupFactoryWithEndpointAndService(); + + object result = Factory.GetObject(); + + Assert.IsTrue(result is IService); + } + + [Test] + public void GetObject_WhenCalled_ReturnsChannelWithDefaultValues() + { + SetupFactoryWithEndpointAndService(); + + var result = Factory.GetObject() as ProxyChannel; + + Assert.IsNotNull(result.ChannelManager, "No default channelmanager was set"); + Assert.IsInstanceOfType(typeof(SingleActionChannelManager), result.ChannelManager); + } + + [Test] + public void GetObject_WhenConfiguredWithFixedPool_ReturnsChannelWithFixedPool() + { + AssertChannelHasPool(ChannelManagerFactoryObject.FixedPool, typeof(SimplePool)); + } + + private void AssertChannelHasPool(string channelManagementMode, Type poolType) + { + SetupFactoryWithEndpointAndService(); + Factory.ChannelManagementMode = channelManagementMode; + + var result = Factory.GetObject() as ProxyChannel; + + Assert.IsInstanceOfType(typeof(ChannelPoolManager), result.ChannelManager); + Assert.IsInstanceOfType(poolType, ((ChannelPoolManager)result.ChannelManager).Pool); + } + + + [Test] + public void GetObject_WhenCalledWithAutoSizePool_ReturnsChannelWithAutoSizePool() + { + AssertChannelHasPool(ChannelManagerFactoryObject.VariablePool, typeof(AutoSizePool)); + } + + [Test] + public void Factory_WhenObtainedFromContainer_HasContainerConfiguration() + { + RootObjectDefinition productTemplate = new RootObjectDefinition(); + productTemplate.PropertyValues.Add(new Spring.Objects.PropertyValue("ChannelManager.ChannelFactory.Credentials.UserName.UserName", "un")); + productTemplate.PropertyValues.Add(new Spring.Objects.PropertyValue("ChannelManager.ChannelFactory.Credentials.UserName.Password", "pw")); + GenericApplicationContext context = new GenericApplicationContext(); + IObjectDefinitionFactory objectDefinitionFactory = new DefaultObjectDefinitionFactory(); + ObjectDefinitionBuilder builder = ObjectDefinitionBuilder.RootObjectDefinition(objectDefinitionFactory, typeof(ChannelManagerFactoryObject)); + builder.AddPropertyValue("EndpointConfigurationName",EndpointName); + builder.AddPropertyValue("ChannelType",typeof(IService)); + builder.AddPropertyValue("ProductTemplate", productTemplate); + context.RegisterObjectDefinition("myChannelFactoryObject", builder.ObjectDefinition); + + var obj = context.GetObject("myChannelFactoryObject")as ProxyChannel; + + Assert.IsNotNull(obj); + ChannelManagerBase channelManager = obj.ChannelManager as ChannelManagerBase; + Assert.IsNotNull(channelManager); + Assert.AreEqual("un", ((ChannelFactory)channelManager.ChannelFactory).Credentials.UserName.UserName); + Assert.AreEqual("pw", ((ChannelFactory)channelManager.ChannelFactory).Credentials.UserName.Password); + } + } +} diff --git a/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/Tests/ChannelPoolManagerTests.cs b/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/Tests/ChannelPoolManagerTests.cs index 9ce01d9..b7e4364 100644 --- a/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/Tests/ChannelPoolManagerTests.cs +++ b/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/Tests/ChannelPoolManagerTests.cs @@ -1,138 +1,138 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using NUnit.Framework; -using Rhino.Mocks; -using WCFChannelManager; -using Spring.Pool; -using System.ServiceModel; - -namespace WCFChannelManagerTests -{ - [TestFixture] - public class ChannelPoolManagerTests - { - MockRepository repo; - ICanCreateChannels channelCreator; - IPoolFactory poolFactory; - IObjectPool pool; - - [SetUp] - public void BeginTest() - { - repo = new MockRepository(); - channelCreator = repo.StrictMock>(); - poolFactory = repo.StrictMock(); - pool = repo.StrictMock(); - Expect.Call(poolFactory.CreatePool(null)).IgnoreArguments().Return(pool); - LastCall.IgnoreArguments(); - } - - [TearDown] - public void EndTest() - { - repo.VerifyAll(); - } - - private ChannelPoolManager CreatePoolManager() - { - return new ChannelPoolManager(channelCreator, poolFactory); - } - - private ICommunicationObject CreateCommunicationObject() - { - return repo.StrictMultiMock(typeof(IService)); - } - - private void AssertValidateObjectWithChannelInState(CommunicationState state, bool validateObjectReturns) - { - var commObject = CreateCommunicationObject(); - Expect.Call(commObject.State).Return(state); - repo.ReplayAll(); - - var isValid = ((IPoolableObjectFactory)CreatePoolManager()).ValidateObject(commObject); - - Assert.AreEqual(validateObjectReturns, isValid); - } - - [Test] - public void Constructor_WhenCalled_CreatesPool() - { - repo.ReplayAll(); - - Assert.IsNotNull(CreatePoolManager().Pool); - - } - - [Test] - public void ActivateObject_WhenCalled_OpensChannel() - { - var commObject = CreateCommunicationObject(); - Expect.Call(commObject.State).Return(CommunicationState.Created); - commObject.Open(); - repo.ReplayAll(); - - ((IPoolableObjectFactory)CreatePoolManager()).ActivateObject(commObject); - } - - [Test] - public void DestroyObject_WhenCalled_ClosesChannel() - { - var commObject = CreateCommunicationObject(); - commObject.Close(); - repo.ReplayAll(); - - ((IPoolableObjectFactory)CreatePoolManager()).DestroyObject(commObject); - } - - [Test] - public void MakeObject_WhenCalled_CreatesChannel() - { - Service channel = new Service(); - Expect.Call(channelCreator.CreateChannel()).Return(channel); - repo.ReplayAll(); - - var result = ((IPoolableObjectFactory)CreatePoolManager()).MakeObject(); - - Assert.AreSame(channel, result); - } - - [Test] - public void ValidateObject_WhenCalledWithOpenChannel_ReturnsTrue() - { - bool ValidateObjectReturns = true; - AssertValidateObjectWithChannelInState(CommunicationState.Opened, ValidateObjectReturns); - } - - [Test] - public void ValidateObject_WhenCalledWithClosedChannel_ReturnsFalse() - { - bool ValidateObjectReturns = false; - AssertValidateObjectWithChannelInState(CommunicationState.Closed, ValidateObjectReturns); - } - - [Test] - public void FetchChannelToWorkWith_WhenCalled_AsksPoolBorrow() - { - Service channel = new Service(); - Expect.Call(pool.BorrowObject()).Return(channel); - repo.ReplayAll(); - - var result = CreatePoolManager().FetchChannelToWorkWith(); - - Assert.AreSame(result, channel); - } - - - [Test] - public void FinishedWorkWithChannel_WhenCalled_ReturnsObjectToPool() - { - pool.ReturnObject(null); - LastCall.IgnoreArguments(); - repo.ReplayAll(); - - CreatePoolManager().FinishedWorkWithChannel(null); - } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using NUnit.Framework; +using Rhino.Mocks; +using WCFChannelManager; +using Spring.Pool; +using System.ServiceModel; + +namespace WCFChannelManagerTests +{ + [TestFixture] + public class ChannelPoolManagerTests + { + MockRepository repo; + ICanCreateChannels channelCreator; + IPoolFactory poolFactory; + IObjectPool pool; + + [SetUp] + public void BeginTest() + { + repo = new MockRepository(); + channelCreator = repo.StrictMock>(); + poolFactory = repo.StrictMock(); + pool = repo.StrictMock(); + Expect.Call(poolFactory.CreatePool(null)).IgnoreArguments().Return(pool); + LastCall.IgnoreArguments(); + } + + [TearDown] + public void EndTest() + { + repo.VerifyAll(); + } + + private ChannelPoolManager CreatePoolManager() + { + return new ChannelPoolManager(channelCreator, poolFactory); + } + + private ICommunicationObject CreateCommunicationObject() + { + return repo.StrictMultiMock(typeof(IService)); + } + + private void AssertValidateObjectWithChannelInState(CommunicationState state, bool validateObjectReturns) + { + var commObject = CreateCommunicationObject(); + Expect.Call(commObject.State).Return(state); + repo.ReplayAll(); + + var isValid = ((IPoolableObjectFactory)CreatePoolManager()).ValidateObject(commObject); + + Assert.AreEqual(validateObjectReturns, isValid); + } + + [Test] + public void Constructor_WhenCalled_CreatesPool() + { + repo.ReplayAll(); + + Assert.IsNotNull(CreatePoolManager().Pool); + + } + + [Test] + public void ActivateObject_WhenCalled_OpensChannel() + { + var commObject = CreateCommunicationObject(); + Expect.Call(commObject.State).Return(CommunicationState.Created); + commObject.Open(); + repo.ReplayAll(); + + ((IPoolableObjectFactory)CreatePoolManager()).ActivateObject(commObject); + } + + [Test] + public void DestroyObject_WhenCalled_ClosesChannel() + { + var commObject = CreateCommunicationObject(); + commObject.Close(); + repo.ReplayAll(); + + ((IPoolableObjectFactory)CreatePoolManager()).DestroyObject(commObject); + } + + [Test] + public void MakeObject_WhenCalled_CreatesChannel() + { + Service channel = new Service(); + Expect.Call(channelCreator.CreateChannel()).Return(channel); + repo.ReplayAll(); + + var result = ((IPoolableObjectFactory)CreatePoolManager()).MakeObject(); + + Assert.AreSame(channel, result); + } + + [Test] + public void ValidateObject_WhenCalledWithOpenChannel_ReturnsTrue() + { + bool ValidateObjectReturns = true; + AssertValidateObjectWithChannelInState(CommunicationState.Opened, ValidateObjectReturns); + } + + [Test] + public void ValidateObject_WhenCalledWithClosedChannel_ReturnsFalse() + { + bool ValidateObjectReturns = false; + AssertValidateObjectWithChannelInState(CommunicationState.Closed, ValidateObjectReturns); + } + + [Test] + public void FetchChannelToWorkWith_WhenCalled_AsksPoolBorrow() + { + Service channel = new Service(); + Expect.Call(pool.BorrowObject()).Return(channel); + repo.ReplayAll(); + + var result = CreatePoolManager().FetchChannelToWorkWith(); + + Assert.AreSame(result, channel); + } + + + [Test] + public void FinishedWorkWithChannel_WhenCalled_ReturnsObjectToPool() + { + pool.ReturnObject(null); + LastCall.IgnoreArguments(); + repo.ReplayAll(); + + CreatePoolManager().FinishedWorkWithChannel(null); + } + } +} diff --git a/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/Tests/ProxyChannelTests.cs b/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/Tests/ProxyChannelTests.cs index 1417dc6..74e343e 100644 --- a/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/Tests/ProxyChannelTests.cs +++ b/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/Tests/ProxyChannelTests.cs @@ -1,39 +1,64 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.ServiceModel; -using WCFChannelManager; -using System.Reflection; -using System.ServiceModel.Channels; -using NUnit.Framework; -using Spring.Context.Support; -using Rhino.Mocks; - -namespace WCFChannelManagerTests -{ - [TestFixture] - public class ProxyChannelTests - { - [Test] - public void ProxyChannel_WhenCalledToExecuteMethod_DoesWorkflow() - { - StubProxyChannel wrapper = new StubProxyChannel(); - MockRepository repo = new MockRepository(); - var channelManager = repo.StrictMock>(); - var channel = repo.StrictMock(); - - Expect.Call(channelManager.FetchChannelToWorkWith()).Return(channel); - channel.DoOperation1(); - channelManager.FinishedWorkWithChannel(channel); - repo.ReplayAll(); - - wrapper.ChannelManager = channelManager; - MethodInfo methodToExecuteOnChannel = (typeof(IService)).GetMethod("DoOperation1"); - wrapper.DoOperation(methodToExecuteOnChannel, null); - repo.VerifyAll(); - - } - - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.ServiceModel; +using WCFChannelManager; +using System.Reflection; +using System.ServiceModel.Channels; +using NUnit.Framework; +using Spring.Context.Support; +using Rhino.Mocks; + +namespace WCFChannelManagerTests +{ + [TestFixture] + public class ProxyChannelTests + { + [Test] + public void ProxyChannel_WhenCalledToExecuteMethod_DoesWorkflow() + { + StubProxyChannel wrapper = new StubProxyChannel(); + MockRepository repo = new MockRepository(); + var channelManager = repo.StrictMock>(); + var channel = repo.StrictMock(); + + Expect.Call(channelManager.FetchChannelToWorkWith()).Return(channel); + channel.DoOperation1(); + channelManager.FinishedWorkWithChannel(channel); + repo.ReplayAll(); + + wrapper.ChannelManager = channelManager; + MethodInfo methodToExecuteOnChannel = (typeof(IService)).GetMethod("DoOperation1"); + wrapper.DoOperation(methodToExecuteOnChannel, null); + repo.VerifyAll(); + + } + + [Test] + public void ProxyChannel_WhenCalledToExecuteMethod_WithByRefParameter_DoesWorkflow() + { + StubProxyChannel wrapper = new StubProxyChannel(); + MockRepository repo = new MockRepository(); + var channelManager = repo.StrictMock>(); + var channel = repo.StrictMock(); + + Expect.Call(channelManager.FetchChannelToWorkWith()).Return(channel); + var number = 0; + channel.DoOperationWithByRef(ref number); + channelManager.FinishedWorkWithChannel(channel); + repo.ReplayAll(); + + wrapper.ChannelManager = channelManager; + MethodInfo methodToExecuteOnChannel = (typeof(IService)).GetMethod("DoOperationWithByRef"); + wrapper.DoOperation(methodToExecuteOnChannel, new object[] {number}); + + repo.VerifyAll(); + + } + + } + + + +} diff --git a/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/Tests/SimplePoolFactoryTests.cs b/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/Tests/SimplePoolFactoryTests.cs index 98d9411..7817899 100644 --- a/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/Tests/SimplePoolFactoryTests.cs +++ b/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/Tests/SimplePoolFactoryTests.cs @@ -1,48 +1,48 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using NUnit.Framework; -using WCFChannelManager; -using Rhino.Mocks; -using Spring.Pool; -using Spring.Pool.Support; - -namespace WCFChannelManagerTests -{ - [TestFixture] - public class SimplePoolFactoryTests - { - [Test] - public void ConstructorWithNoArgs_WhenCalled_SetsDefaultPoolSize() - { - SimplePoolFactory factory = new SimplePoolFactory(); - - Assert.AreEqual(SimplePoolFactory.DefaultPoolSize, factory.PoolSize); - } - - [Test] - public void ConstructorWithIntArg_WhenCalled_SetsPoolSize() - { - int poolSize = 8; - SimplePoolFactory factory = new SimplePoolFactory(poolSize); - - Assert.AreEqual(poolSize, factory.PoolSize); - } - - [Test] - public void CreatePool_WhenCalled_CreateSimplePool() - { - MockRepository repo = new MockRepository(); - var poolableObjectFactory = repo.StrictMock(); - Expect.Call(poolableObjectFactory.MakeObject()).Return(new object()).Repeat.Times(SimplePoolFactory.DefaultPoolSize); - SimplePoolFactory factory = new SimplePoolFactory(); - repo.ReplayAll(); - - var result = factory.CreatePool(poolableObjectFactory); - - Assert.IsInstanceOfType(typeof(SimplePool), result); - repo.VerifyAll(); - } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using NUnit.Framework; +using WCFChannelManager; +using Rhino.Mocks; +using Spring.Pool; +using Spring.Pool.Support; + +namespace WCFChannelManagerTests +{ + [TestFixture] + public class SimplePoolFactoryTests + { + [Test] + public void ConstructorWithNoArgs_WhenCalled_SetsDefaultPoolSize() + { + SimplePoolFactory factory = new SimplePoolFactory(); + + Assert.AreEqual(SimplePoolFactory.DefaultPoolSize, factory.PoolSize); + } + + [Test] + public void ConstructorWithIntArg_WhenCalled_SetsPoolSize() + { + int poolSize = 8; + SimplePoolFactory factory = new SimplePoolFactory(poolSize); + + Assert.AreEqual(poolSize, factory.PoolSize); + } + + [Test] + public void CreatePool_WhenCalled_CreateSimplePool() + { + MockRepository repo = new MockRepository(); + var poolableObjectFactory = repo.StrictMock(); + Expect.Call(poolableObjectFactory.MakeObject()).Return(new object()).Repeat.Times(SimplePoolFactory.DefaultPoolSize); + SimplePoolFactory factory = new SimplePoolFactory(); + repo.ReplayAll(); + + var result = factory.CreatePool(poolableObjectFactory); + + Assert.IsInstanceOfType(typeof(SimplePool), result); + repo.VerifyAll(); + } + } +} diff --git a/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/Tests/SingleActionChannelManagerTests.cs b/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/Tests/SingleActionChannelManagerTests.cs index 09c1528..a0c14d6 100644 --- a/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/Tests/SingleActionChannelManagerTests.cs +++ b/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/Tests/SingleActionChannelManagerTests.cs @@ -1,57 +1,57 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using NUnit.Framework; -using WCFChannelManager; -using Rhino.Mocks; -using System.ServiceModel; - -namespace WCFChannelManagerTests.Tests -{ - [TestFixture] - public class SingleActionChannelManagerTests - { - MockRepository repo; - ICanCreateChannels channelFactory; - ICommunicationObject communicationObject; - SingleActionChannelManager manager; - - [SetUp] - public void BeginTest() - { - repo = new MockRepository(); - channelFactory = repo.StrictMock>(); - communicationObject = repo.StrictMultiMock(typeof(IService)); - manager = new SingleActionChannelManager(channelFactory); - } - - [TearDown] - public void EndTest() - { - repo.VerifyAll(); - } - - [Test] - public void FetchChannelToWorkWith_WhenCalled_CreatesAndOpensChannel() - { - Expect.Call(channelFactory.CreateChannel()).Return((IService)communicationObject); - Expect.Call(communicationObject.State).Return(CommunicationState.Created); - communicationObject.Open(); - repo.ReplayAll(); - - var channel = manager.FetchChannelToWorkWith(); - - Assert.AreSame(communicationObject, channel); - } - - [Test] - public void FinishedWorkWithChannel_WhenCalled_ClosesChannel() - { - communicationObject.Close(); - repo.ReplayAll(); - - manager.FinishedWorkWithChannel((IService)communicationObject); - } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using NUnit.Framework; +using WCFChannelManager; +using Rhino.Mocks; +using System.ServiceModel; + +namespace WCFChannelManagerTests.Tests +{ + [TestFixture] + public class SingleActionChannelManagerTests + { + MockRepository repo; + ICanCreateChannels channelFactory; + ICommunicationObject communicationObject; + SingleActionChannelManager manager; + + [SetUp] + public void BeginTest() + { + repo = new MockRepository(); + channelFactory = repo.StrictMock>(); + communicationObject = repo.StrictMultiMock(typeof(IService)); + manager = new SingleActionChannelManager(channelFactory); + } + + [TearDown] + public void EndTest() + { + repo.VerifyAll(); + } + + [Test] + public void FetchChannelToWorkWith_WhenCalled_CreatesAndOpensChannel() + { + Expect.Call(channelFactory.CreateChannel()).Return((IService)communicationObject); + Expect.Call(communicationObject.State).Return(CommunicationState.Created); + communicationObject.Open(); + repo.ReplayAll(); + + var channel = manager.FetchChannelToWorkWith(); + + Assert.AreSame(communicationObject, channel); + } + + [Test] + public void FinishedWorkWithChannel_WhenCalled_ClosesChannel() + { + communicationObject.Close(); + repo.ReplayAll(); + + manager.FinishedWorkWithChannel((IService)communicationObject); + } + } +} diff --git a/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/Tests/WcfChannelProxyTypeBuilderTests.cs b/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/Tests/WcfChannelProxyTypeBuilderTests.cs index cd1959d..5f48944 100644 --- a/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/Tests/WcfChannelProxyTypeBuilderTests.cs +++ b/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/Tests/WcfChannelProxyTypeBuilderTests.cs @@ -1,74 +1,74 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using NUnit.Framework; -using WCFChannelManager; -using System.Reflection; - -namespace WCFChannelManagerTests -{ - [TestFixture] - public class WcfChannelProxyTypeBuilderTests - { - [Test, ExpectedException(typeof(ArgumentException))] - public void Constructor_WhenCalledWithAnIncorrectType_ThrowsException() - { - WcfChannelProxyTypeBuilder builder = new WcfChannelProxyTypeBuilder(typeof(TimeZone)); - } - - [Test] - public void IsSubclassOfRawGeneric_WhenCalledWithClosedGenericSubclass_FindsGenericType() - { - Assert.IsTrue(WcfChannelProxyTypeBuilder.IsSubclassOfRawGeneric(typeof(ProxyChannel<>),typeof(StubProxyChannel))); - Assert.IsFalse(WcfChannelProxyTypeBuilder.IsSubclassOfRawGeneric(typeof(ProxyChannel<>), typeof(TimeZone))); - } - - [Test] - public void FindChannelType_WhenCalledWithSubclass_FindsChannelType() - { - Type t = WcfChannelProxyTypeBuilder.FindChannelType(typeof(StubProxyChannel)); - Assert.IsNotNull(t); - Assert.AreEqual(t, typeof(IService)); - } - - [Test] - public void BuildProxyType_WhenCalled_ImplementsInterfaceAndSubclassesProxyChannel() - { - WcfChannelProxyTypeBuilder builder = new WcfChannelProxyTypeBuilder(typeof(ProxyChannel)); - Type t = builder.BuildProxyType(); - Assert.IsNotNull(t); - Assert.IsTrue(t.IsSubclassOf(typeof(ProxyChannel))); - Assert.IsNotNull(t.GetInterface("IService", true)); - } - - [Test] - public void Proxy_WhenCallingMethodThatReturnsNull_DoesNotThrowException() - { - WcfChannelProxyTypeBuilder builder = new WcfChannelProxyTypeBuilder(typeof(ProxyChannel)); - - Type t = builder.BuildProxyType(); - ConstructorInfo constructorInfo = t.GetConstructors()[0]; - - ProxyChannel channel = (ProxyChannel) constructorInfo.Invoke(null); - channel.ChannelManager = new StubChannelManager(); - ((IService)channel).ReturnComplexObject(); - - } - - public class StubChannelManager - : IChannelManager - { - public IService FetchChannelToWorkWith() - { - return new Service(); - } - - public void FinishedWorkWithChannel(IService channel) - { - - } - } - - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using NUnit.Framework; +using WCFChannelManager; +using System.Reflection; + +namespace WCFChannelManagerTests +{ + [TestFixture] + public class WcfChannelProxyTypeBuilderTests + { + [Test, ExpectedException(typeof(ArgumentException))] + public void Constructor_WhenCalledWithAnIncorrectType_ThrowsException() + { + WcfChannelProxyTypeBuilder builder = new WcfChannelProxyTypeBuilder(typeof(TimeZone)); + } + + [Test] + public void IsSubclassOfRawGeneric_WhenCalledWithClosedGenericSubclass_FindsGenericType() + { + Assert.IsTrue(WcfChannelProxyTypeBuilder.IsSubclassOfRawGeneric(typeof(ProxyChannel<>),typeof(StubProxyChannel))); + Assert.IsFalse(WcfChannelProxyTypeBuilder.IsSubclassOfRawGeneric(typeof(ProxyChannel<>), typeof(TimeZone))); + } + + [Test] + public void FindChannelType_WhenCalledWithSubclass_FindsChannelType() + { + Type t = WcfChannelProxyTypeBuilder.FindChannelType(typeof(StubProxyChannel)); + Assert.IsNotNull(t); + Assert.AreEqual(t, typeof(IService)); + } + + [Test] + public void BuildProxyType_WhenCalled_ImplementsInterfaceAndSubclassesProxyChannel() + { + WcfChannelProxyTypeBuilder builder = new WcfChannelProxyTypeBuilder(typeof(ProxyChannel)); + Type t = builder.BuildProxyType(); + Assert.IsNotNull(t); + Assert.IsTrue(t.IsSubclassOf(typeof(ProxyChannel))); + Assert.IsNotNull(t.GetInterface("IService", true)); + } + + [Test] + public void Proxy_WhenCallingMethodThatReturnsNull_DoesNotThrowException() + { + WcfChannelProxyTypeBuilder builder = new WcfChannelProxyTypeBuilder(typeof(ProxyChannel)); + + Type t = builder.BuildProxyType(); + ConstructorInfo constructorInfo = t.GetConstructors()[0]; + + ProxyChannel channel = (ProxyChannel) constructorInfo.Invoke(null); + channel.ChannelManager = new StubChannelManager(); + ((IService)channel).ReturnComplexObject(); + + } + + public class StubChannelManager + : IChannelManager + { + public IService FetchChannelToWorkWith() + { + return new Service(); + } + + public void FinishedWorkWithChannel(IService channel) + { + + } + } + + } +} diff --git a/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/WCFChannelManagerTests.csproj b/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/WCFChannelManagerTests.csproj index 52aa3f4..64ad4d6 100644 --- a/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/WCFChannelManagerTests.csproj +++ b/WCFChannelManager/src/WCFChannelManager/WCFChannelManagerTests/WCFChannelManagerTests.csproj @@ -10,7 +10,7 @@ Properties WCFChannelManagerTests Perponcher.WCFChannelManagerTests - v3.5 + v4.0 512 @@ -19,6 +19,7 @@ 3.5 ..\ true + true

c$Nu-7XRuST~U0k?^azL~`nHznL%i@j2`_ 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�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 diff --git a/sharedlib/Spring.Net/Spring.Core.pdb b/sharedlib/Spring.Net/Spring.Core.pdb deleted file mode 100644 index 351d4628b5d60fcf7e13031097befe2e51330060..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2149888 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 z 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Ⓢ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