This commit is contained in:
eeichinger
2009-12-03 09:20:05 +00:00
parent 606e441c73
commit 2c1b7227c7
2 changed files with 81 additions and 3 deletions

View File

@@ -0,0 +1,51 @@
#region License
/*
* Copyright 2002-2009 the original author or authors.
*
* 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.
*/
#endregion
using System;
namespace Spring.Objects.Factory.Config
{
/// <summary>
/// May be used to store custom value references in object definition properties.
/// </summary>
/// <see cref="Spring.Objects.Factory.Support.ObjectDefinitionValueResolver"/>
/// <author>Erich Eichinger</author>
public interface ICustomValueReferenceHolder
{
/// <summary>
/// </summary>
/// <param name="objectFactory">
/// the object factory holding the given object definition
/// </param>
/// <param name="name">
/// The name of the object that is having the value of one of its properties resolved.
/// </param>
/// <param name="definition">
/// The definition of the named object.
/// </param>
/// <param name="argumentName">
/// The name of the property the value of which is being resolved.
/// </param>
/// <param name="argumentValue">
/// The value of the property that is being resolved.
/// </param>
object Resolve(IObjectFactory objectFactory, string name, IObjectDefinition definition, string argumentName, object argumentValue);
}
}

View File

@@ -34,7 +34,7 @@ namespace Spring.Transaction.Interceptor
/// <author>Juergen Hoeller</author>
/// <author>Griffin Caprio (.NET)</author>
[Serializable]
public class NameMatchTransactionAttributeSource : ITransactionAttributeSource
public class NameMatchTransactionAttributeSource : ITransactionAttributeSource, IEnumerable
{
/// <summary>
/// Logger available to subclasses, static for optimal serialization
@@ -45,7 +45,7 @@ namespace Spring.Transaction.Interceptor
/// <summary>
/// Keys are method names; values are ITransactionAttributes
/// </summary>
private IDictionary nameMap;
private readonly IDictionary nameMap;
/// <summary>
/// Creates a new instance of the
@@ -56,7 +56,34 @@ namespace Spring.Transaction.Interceptor
nameMap = new Hashtable();
}
/// <summary>
/// <summary>
/// Enumerate the string/<see cref="ITransactionAttribute"/> mapping entries.
/// </summary>
public IEnumerator GetEnumerator()
{
return nameMap.GetEnumerator();
}
/// <summary>
/// Add a mapping.
/// </summary>
public void Add(string methodPattern, ITransactionAttribute txAttribute)
{
AddTransactionMethod(methodPattern, txAttribute);
}
/// <summary>
/// Add a mapping.
/// </summary>
public void Add(string methodPattern, string txAttributeText)
{
TransactionAttributeEditor editor = new TransactionAttributeEditor();
editor.SetAsText(txAttributeText);
ITransactionAttribute txAttribute = editor.Value;
AddTransactionMethod(methodPattern, txAttribute);
}
/// <summary>
/// Set a name/attribute map, consisting of method names (e.g. "MyMethod") and
/// <see cref="Spring.Transaction.Interceptor.ITransactionAttribute"/> instances
/// (or Strings to be converted to ITransactionAttribute instances).