springnet-commits Mailing List for Spring Framework .NET (Page 50)
Brought to you by:
aseovic,
markpollack
You can subscribe to this list here.
2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(33) |
Aug
(163) |
Sep
(491) |
Oct
(289) |
Nov
(336) |
Dec
(84) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
(227) |
Feb
(413) |
Mar
(128) |
Apr
(232) |
May
(92) |
Jun
(299) |
Jul
(386) |
Aug
(228) |
Sep
(237) |
Oct
(426) |
Nov
(325) |
Dec
(405) |
2006 |
Jan
(315) |
Feb
(311) |
Mar
(152) |
Apr
(177) |
May
(443) |
Jun
(92) |
Jul
(88) |
Aug
(80) |
Sep
(288) |
Oct
(515) |
Nov
(1049) |
Dec
(440) |
2007 |
Jan
(179) |
Feb
(406) |
Mar
(294) |
Apr
(80) |
May
(432) |
Jun
(242) |
Jul
(452) |
Aug
(710) |
Sep
(206) |
Oct
(240) |
Nov
(65) |
Dec
(227) |
2008 |
Jan
(80) |
Feb
(90) |
Mar
(98) |
Apr
(136) |
May
(101) |
Jun
(12) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Mark P. <mar...@us...> - 2007-09-10 02:57:25
|
Update of /cvsroot/springnet/Spring.Net.Integration/projects/Spring.Scheduling.Quartz/lib In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv7683/lib Log Message: Directory /cvsroot/springnet/Spring.Net.Integration/projects/Spring.Scheduling.Quartz/lib added to the repository |
From: Mark P. <mar...@us...> - 2007-09-10 02:57:25
|
Update of /cvsroot/springnet/Spring.Net.Integration/projects/Spring.Scheduling.Quartz In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv7584/Spring.Scheduling.Quartz Log Message: Directory /cvsroot/springnet/Spring.Net.Integration/projects/Spring.Scheduling.Quartz added to the repository |
From: Mark P. <mar...@us...> - 2007-09-10 02:57:25
|
Update of /cvsroot/springnet/Spring.Net.Integration/projects/Spring.Scheduling.Quartz/doc In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv7683/doc Log Message: Directory /cvsroot/springnet/Spring.Net.Integration/projects/Spring.Scheduling.Quartz/doc added to the repository |
From: Mark P. <mar...@us...> - 2007-09-10 02:57:25
|
Update of /cvsroot/springnet/Spring.Net.Integration/projects/Spring.Scheduling.Quartz/src In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv7683/src Log Message: Directory /cvsroot/springnet/Spring.Net.Integration/projects/Spring.Scheduling.Quartz/src added to the repository |
From: Mark P. <mar...@us...> - 2007-09-10 02:23:40
|
Update of /cvsroot/springnet/Spring.Net In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv26786 Modified Files: Spring.build Log Message: add back in placement of 'latest' spirng build under http://www.springframework.net/downloads/latest/bin/net Index: Spring.build =================================================================== RCS file: /cvsroot/springnet/Spring.Net/Spring.build,v retrieving revision 1.188 retrieving revision 1.189 diff -C2 -d -r1.188 -r1.189 *** Spring.build 20 Aug 2007 18:38:10 -0000 1.188 --- Spring.build 10 Sep 2007 02:23:35 -0000 1.189 *************** *** 802,806 **** </exec> - <!-- <echo message="extracting ${filetoupload} to downloads/latest"/> <property name="extract.command" value="cd website/downloads/nightly/; ./update-latest.sh"/> --- 802,805 ---- *************** *** 809,813 **** <arg value="${extract.command}" /> </exec> ! --> </target> --- 808,812 ---- <arg value="${extract.command}" /> </exec> ! </target> |
From: Mark P. <mar...@us...> - 2007-09-09 22:53:24
|
Update of /cvsroot/springnet/Spring.Net/doc/reference/src In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv11010 Modified Files: objects.xml Log Message: complete docs for IInstantiationAwareObjectPostProcessor fix xml snippit for abstract/child definitions - thanks James Index: objects.xml =================================================================== RCS file: /cvsroot/springnet/Spring.Net/doc/reference/src/objects.xml,v retrieving revision 1.106 retrieving revision 1.107 diff -C2 -d -r1.106 -r1.107 *** objects.xml 21 Aug 2007 19:28:27 -0000 1.106 --- objects.xml 9 Sep 2007 22:53:12 -0000 1.107 *************** *** 1,5 **** <?xml version="1.0" encoding="UTF-8"?> <chapter id="objects"> ! <title>Objects, Object Factories, and Application Contexts</title> <sect1 id="objects-introduction"> --- 1,6 ---- <?xml version="1.0" encoding="UTF-8"?> <chapter id="objects"> ! <title>abstractObjectObjects, Object Factories, and Application ! Contexts</title> <sect1 id="objects-introduction"> *************** *** 3162,3166 **** </object> <object id="inheritsFromAbstract" type="Spring.Objects.DerivedTestObject, Spring.Core.Tests" ! parent="inheritedTestObjectWithoutClass" init-method="Initialize"> <property name="name" value="override"/> <!-- age will inherit value of 1 from parent --> --- 3163,3167 ---- </object> <object id="inheritsFromAbstract" type="Spring.Objects.DerivedTestObject, Spring.Core.Tests" ! parent="abstractObject" init-method="Initialize"> <property name="name" value="override"/> <!-- age will inherit value of 1 from parent --> *************** *** 3389,3406 **** { object PostProcessBeforeInstantiation(Type objectType, string objectName); ! } public interface IDestructionAwareObjectPostProcessor : IObjectPostProcessor { void PostProcessBeforeDestruction (object instance, string name); ! }</programlisting> The "BeforeInstantiation" callback method is called right ! before the container creates the object. If the object returned by this ! method is not null then the default instantiation behavor of the ! container is short circuited. The returned object is the one registered ! with the container and no other <literal>IObjectPostProcessor</literal> ! callbacks will be invoked on it. This mechanism is useful if you would ! like to expose a proxy to the object instead of the actual target ! object. The "BeforeDestruction" callack is called before a singletons ! destroy method is invoked.</para> <para>It is important to know that the --- 3390,3428 ---- { object PostProcessBeforeInstantiation(Type objectType, string objectName); ! ! bool PostProcessAfterInstantiation(object objectInstance, string objectName); ! ! IPropertyValues PostProcessPropertyValues(IPropertyValues pvs, PropertyInfo[] pis, object objectInstance, string objectName); ! } public interface IDestructionAwareObjectPostProcessor : IObjectPostProcessor { void PostProcessBeforeDestruction (object instance, string name); ! }</programlisting> The <classname>PostProcessBeforeInstantiation</classname> ! callback method is called right before the container creates the object. ! If the object returned by this method is not null then the default ! instantiation behavor of the container is short circuited. The returned ! object is the one registered with the container and no other ! <literal>IObjectPostProcessor</literal> callbacks will be invoked on it. ! This mechanism is useful if you would like to expose a proxy to the ! object instead of the actual target object. The ! <classname>PostProcessAfterInstantiation</classname> callback method is ! called after the object has been instantiated but before Spring performs ! property population based on explicit properties or autowiring. A return ! value of false would short circuit the standard Spring based property ! population. The callback method ! <classname>PostProcessPropertyValues</classname> is called after Spring ! collects all the property values to apply to the object, but before they ! are applied. This gives you the opportunity to perform additional ! processing such as making sure that a property is set to a value if it ! contains the a <classname>[Required] </classname>attribute or to perform ! attribute based wiring, i.e. adding the attribute ! <classname>[Inject("objectName")]</classname> on a property. Both of ! these features are scheduled to be included in Spring .12.</para> ! ! <para>The <classname>IDestructionAwareObjectPostProcessor</classname> ! callback contains a single method, ! <classname>PostProcessBeforeDestruction</classname>, which is called ! before a singletons destroy method is invoked.</para> <para>It is important to know that the |
From: Mark P. <mar...@us...> - 2007-09-07 05:12:37
|
Update of /cvsroot/springnet/Spring.Net/test/Spring/Spring.Data.Tests/Transaction/Config In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv28849 Modified Files: TxNamespaceParserTests.cs TxNamespaceParserTests.xml Log Message: SPRNET-485 - Add logging of transaction definition name and description when creating new transaction. Index: TxNamespaceParserTests.xml =================================================================== RCS file: /cvsroot/springnet/Spring.Net/test/Spring/Spring.Data.Tests/Transaction/Config/TxNamespaceParserTests.xml,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** TxNamespaceParserTests.xml 7 Aug 2007 23:58:28 -0000 1.3 --- TxNamespaceParserTests.xml 7 Sep 2007 04:47:09 -0000 1.4 *************** *** 3,9 **** xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.net/tx" xsi:schemaLocation="http://www.springframework.net http://www.springframework.net/schema/objects/spring-objects.xsd ! http://www.springframework.net/tx http://www.springframework.net/schema/tx/spring-tx-1.1.xsd"> <tx:advice id="txAdvice"> <tx:attributes> --- 3,14 ---- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.net/tx" + xmlns:aop="http://www.springframework.net/aop" xsi:schemaLocation="http://www.springframework.net http://www.springframework.net/schema/objects/spring-objects.xsd ! http://www.springframework.net/tx http://www.springframework.net/schema/tx/spring-tx-1.1.xsd"> + <object id="testObjectOperation" type="Spring.Aop.Support.SdkRegularExpressionMethodPointcut, Spring.Aop"> + <property name="pattern" value="Spring.Objects.TestObject.*"/> + </object> + <tx:advice id="txAdvice"> <tx:attributes> *************** *** 13,16 **** --- 18,22 ---- </tx:advice> + <!-- this advice is not applied, just testing advice definition itself. --> <tx:advice id="txRollbackAdvice"> <tx:attributes> *************** *** 20,26 **** </tx:advice> ! <tx:attribute-driven/> <object name="transactionManager" type="Spring.Transaction.CallCountingTransactionManager, Spring.Data.Tests"/> --- 26,40 ---- </tx:advice> ! <!-- this will not match any object in the context, just used to check internal registration --> <tx:attribute-driven/> + + <aop:config> + + <aop:advisor pointcut-ref="testObjectOperation" advice-ref="txAdvice"/> + + </aop:config> + + <object name="transactionManager" type="Spring.Transaction.CallCountingTransactionManager, Spring.Data.Tests"/> Index: TxNamespaceParserTests.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/test/Spring/Spring.Data.Tests/Transaction/Config/TxNamespaceParserTests.cs,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** TxNamespaceParserTests.cs 7 Aug 2007 23:58:28 -0000 1.3 --- TxNamespaceParserTests.cs 7 Sep 2007 04:47:09 -0000 1.4 *************** *** 46,49 **** --- 46,50 ---- { NamespaceParserRegistry.RegisterParser(typeof(TxNamespaceParser)); + NamespaceParserRegistry.RegisterParser(typeof(AopNamespaceParser)); ctx = new XmlApplicationContext("assembly://Spring.Data.Tests/Spring.Transaction.Config/TxNamespaceParserTests.xml"); } *************** *** 59,63 **** [Test] - [Ignore("wait for aop schema support")] public void InvokeTransactional() { --- 60,63 ---- *************** *** 77,81 **** // try with exceptional ! } --- 77,89 ---- // try with exceptional ! try ! { ! testObject.Exceptional(new ArgumentNullException()); ! Assert.Fail("Should not get here"); ! } catch (Exception) ! { ! Assert.AreEqual(2, ptm.begun, "Should have another started transaction"); ! Assert.AreEqual(1, ptm.rollbacks, "Should have 1 rolled back transaction"); ! } } |
From: Mark P. <mar...@us...> - 2007-09-07 05:09:04
|
Update of /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Util In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv28442 Modified Files: ObjectUtils.cs Log Message: SPRNET-485 - Add logging of transaction definition name and description when creating new transaction. Index: ObjectUtils.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Util/ObjectUtils.cs,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** ObjectUtils.cs 22 Aug 2007 20:16:20 -0000 1.5 --- ObjectUtils.cs 7 Sep 2007 04:46:39 -0000 1.6 *************** *** 449,452 **** --- 449,464 ---- #endregion + + /// <summary> + /// Gets the qualified name of the given method, consisting of + /// fully qualified interface/class name + "." method name. + /// </summary> + /// <param name="method">The method.</param> + /// <returns>qualified name of the method.</returns> + public static string GetQualifiedMethodName(MethodInfo method) + { + AssertUtils.ArgumentNotNull(method,"method", "MethodInfo must not be null"); + return method.DeclaringType.FullName + "." + method.Name; + } } } \ No newline at end of file |
From: Mark P. <mar...@us...> - 2007-09-07 05:02:47
|
Update of /cvsroot/springnet/Spring.Net/src/Spring/Spring.Data In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv28456 Modified Files: Spring.Data.2005.csproj Log Message: SPRNET-485 - Add logging of transaction definition name and description when creating new transaction. Index: Spring.Data.2005.csproj =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Data/Spring.Data.2005.csproj,v retrieving revision 1.51 retrieving revision 1.52 diff -C2 -d -r1.51 -r1.52 *** Spring.Data.2005.csproj 8 Aug 2007 17:46:09 -0000 1.51 --- Spring.Data.2005.csproj 7 Sep 2007 04:46:53 -0000 1.52 *************** *** 223,226 **** --- 223,227 ---- <Compile Include="Transaction\Interceptor\DefaultTransactionAttribute.cs" /> <Compile Include="Transaction\Interceptor\DefaultTransactionAttributeSourceAdvisor.cs" /> + <Compile Include="Transaction\Interceptor\DelegatingTransactionAttributeWithName.cs" /> <Compile Include="Transaction\Interceptor\ITransactionAttribute.cs" /> <Compile Include="Transaction\Interceptor\ITransactionAttributeSource.cs" /> |
From: Mark P. <mar...@us...> - 2007-09-07 05:02:45
|
Update of /cvsroot/springnet/Spring.Net/src/Spring/Spring.Data/Transaction/Support In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv28456/Transaction/Support Modified Files: AbstractPlatformTransactionManager.cs Log Message: SPRNET-485 - Add logging of transaction definition name and description when creating new transaction. Index: AbstractPlatformTransactionManager.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Data/Transaction/Support/AbstractPlatformTransactionManager.cs,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** AbstractPlatformTransactionManager.cs 30 Aug 2007 19:59:56 -0000 1.23 --- AbstractPlatformTransactionManager.cs 7 Sep 2007 04:46:53 -0000 1.24 *************** *** 502,506 **** if (debugEnabled) { ! log.Debug("Creating new transaction with name [" + definition.Name + "]"); } DoBegin(transaction, definition); --- 502,506 ---- if (debugEnabled) { ! log.Debug("Creating new transaction with name [" + definition.Name + "]:" + definition); } DoBegin(transaction, definition); *************** *** 545,549 **** { log.Debug("Suspending current transaction, creating new transaction with name [" + ! definition.Name + "]"); } object suspendedResources = Suspend(transaction); --- 545,549 ---- { log.Debug("Suspending current transaction, creating new transaction with name [" + ! definition.Name + "]:" + definition); } object suspendedResources = Suspend(transaction); *************** *** 581,585 **** if (debugEnabled) { ! log.Debug("Creating nested transaction with name [" + definition.Name + "]"); } --- 581,585 ---- if (debugEnabled) { ! log.Debug("Creating nested transaction with name [" + definition.Name + "]:" + definition); } |
From: Mark P. <mar...@us...> - 2007-09-07 04:47:06
|
Update of /cvsroot/springnet/Spring.Net/test/Spring/Spring.Core.Tests In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv28484 Modified Files: Spring.Core.Tests.2005.csproj Log Message: SPRNET-485 - Add logging of transaction definition name and description when creating new transaction. Index: Spring.Core.Tests.2005.csproj =================================================================== RCS file: /cvsroot/springnet/Spring.Net/test/Spring/Spring.Core.Tests/Spring.Core.Tests.2005.csproj,v retrieving revision 1.65 retrieving revision 1.66 diff -C2 -d -r1.65 -r1.66 *** Spring.Core.Tests.2005.csproj 7 Sep 2007 01:54:59 -0000 1.65 --- Spring.Core.Tests.2005.csproj 7 Sep 2007 04:47:01 -0000 1.66 *************** *** 674,677 **** --- 674,678 ---- </Compile> <Compile Include="Core\TypeConversion\UniqueKeyConverterTests.cs" /> + <Compile Include="Util\SystemUtilsTests.cs" /> <Compile Include="Util\UniqueKeyTests.cs" /> <Compile Include="Validation\Actions\ErrorMessageActionTests.cs" /> |
Update of /cvsroot/springnet/Spring.Net/src/Spring/Spring.Data/Transaction/Interceptor In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv28456/Transaction/Interceptor Modified Files: TransactionAspectSupport.cs TransactionInterceptor.cs Added Files: DelegatingTransactionAttributeWithName.cs Log Message: SPRNET-485 - Add logging of transaction definition name and description when creating new transaction. Index: TransactionAspectSupport.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Data/Transaction/Interceptor/TransactionAspectSupport.cs,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** TransactionAspectSupport.cs 16 Aug 2007 05:41:03 -0000 1.12 --- TransactionAspectSupport.cs 7 Sep 2007 04:46:53 -0000 1.13 *************** *** 25,28 **** --- 25,30 ---- using Spring.Objects.Factory; using Spring.Threading; + using Spring.Util; + using IsolationLevel=System.Data.IsolationLevel; namespace Spring.Transaction.Interceptor *************** *** 73,77 **** private ITransactionAttribute _transactionAttribute; ! private MethodInfo _methodInfo; private ITransactionStatus _transactionStatus; private TransactionInfo _oldTransactionInfo; --- 75,79 ---- private ITransactionAttribute _transactionAttribute; ! private string _joinpointIdentification; private ITransactionStatus _transactionStatus; private TransactionInfo _oldTransactionInfo; *************** *** 83,91 **** /// </summary> /// <param name="transactionAttribute">The transaction attributes to associate with any transaction.</param> ! /// <param name="methodInfo">The method info for diagnostic display of joinpoint</param> ! public TransactionInfo( ITransactionAttribute transactionAttribute, MethodInfo methodInfo) { _transactionAttribute = transactionAttribute; ! _methodInfo = methodInfo; } --- 85,93 ---- /// </summary> /// <param name="transactionAttribute">The transaction attributes to associate with any transaction.</param> ! /// <param name="joinpointIdentification">The info for diagnostic display of joinpoint</param> ! public TransactionInfo( ITransactionAttribute transactionAttribute, string joinpointIdentification) { _transactionAttribute = transactionAttribute; ! _joinpointIdentification = joinpointIdentification; } *************** *** 118,122 **** public void BindToThread() { ! TransactionInfo currentTransactionInfo = LogicalThreadContext.GetData(CURRENT_TRANSACTIONINFO_SLOTNAME) as TransactionInfo; _oldTransactionInfo = currentTransactionInfo; --- 120,125 ---- public void BindToThread() { ! // Expose current TransactionStatus, preserving any existing TransactionStatus ! // for restoration after this transaction is complete. TransactionInfo currentTransactionInfo = LogicalThreadContext.GetData(CURRENT_TRANSACTIONINFO_SLOTNAME) as TransactionInfo; _oldTransactionInfo = currentTransactionInfo; *************** *** 131,134 **** --- 134,139 ---- public void RestoreThreadLocalStatus() { + // Use stack to restore old transaction TransactionInfo. + // Will be null if none was set. LogicalThreadContext.SetData(CURRENT_TRANSACTIONINFO_SLOTNAME, _oldTransactionInfo); } *************** *** 145,153 **** } ! public string JoinpointIdentification() ! { ! //TODO return fully qualified name. ! return _methodInfo.ToString(); ! } } #endregion --- 150,157 ---- } ! public string JoinpointIdentification ! { ! get { return _joinpointIdentification; } ! } } #endregion *************** *** 316,361 **** ITransactionAttribute sourceAttr = _transactionAttributeSource.ReturnTransactionAttribute( method, targetType ); ! ITransactionAttribute txAttr = sourceAttr; ! if (txAttr != null && txAttr.Name == null) ! { ! //TODO assign tx name as method name ! } ! TransactionInfo transactionInfo = new TransactionInfo( txAttr, method ); ! if ( txAttr != null ) ! { ! // We need a transaction for this method ! #region Instrumentation ! if (log.IsDebugEnabled) ! { ! log.Debug("Getting transaction for " + transactionInfo.JoinpointIdentification()); ! } ! #endregion ! // The transaction manager will flag an error if an incompatible tx already exists ! transactionInfo.TransactionStatus = _transactionManager.GetTransaction(txAttr); ! } ! else ! { ! // The TransactionInfo.HasTransaction property will return ! // false. We created it only to preserve the integrity of ! // the ThreadLocal stack maintained in this class. ! if (log.IsDebugEnabled) ! { ! log.Debug("Don't need to create transaction for [" + method + ! "]: this method isn't transactional"); ! } ! } ! // We always bind the TransactionInfo to the thread, even if we didn't create ! // a new transaction here. This guarantees that the TransactionInfo stack ! // will be managed correctly even if no transaction was created by this aspect. ! transactionInfo.BindToThread( ); ! return transactionInfo; ! } ! /// <summary> /// Execute after the successful completion of call, but not after an exception was handled. /// </summary> --- 320,375 ---- ITransactionAttribute sourceAttr = _transactionAttributeSource.ReturnTransactionAttribute( method, targetType ); ! return CreateTransactionIfNecessary(sourceAttr, MethodIdentification(method)); ! } ! protected TransactionInfo CreateTransactionIfNecessary(ITransactionAttribute sourceAttr, string joinpointIdentification) ! { ! ITransactionAttribute txAttr = sourceAttr; ! if (txAttr != null && txAttr.Name == null) ! { ! txAttr = new DelegatingTransactionAttributeWithName(txAttr, joinpointIdentification); ! } ! TransactionInfo transactionInfo = new TransactionInfo(txAttr, joinpointIdentification); ! if ( txAttr != null ) ! { ! // We need a transaction for this method ! #region Instrumentation ! if (log.IsDebugEnabled) ! { ! log.Debug("Getting transaction for " + transactionInfo.JoinpointIdentification); ! } ! #endregion ! // The transaction manager will flag an error if an incompatible tx already exists ! transactionInfo.TransactionStatus = _transactionManager.GetTransaction(txAttr); ! } ! else ! { ! // The TransactionInfo.HasTransaction property will return ! // false. We created it only to preserve the integrity of ! // the ThreadLocal stack maintained in this class. ! if (log.IsDebugEnabled) ! { ! log.Debug("Don't need to create transaction for [" + joinpointIdentification + ! "]: this method isn't transactional"); ! } ! } ! // We always bind the TransactionInfo to the thread, even if we didn't create ! // a new transaction here. This guarantees that the TransactionInfo stack ! // will be managed correctly even if no transaction was created by this aspect. ! transactionInfo.BindToThread( ); ! return transactionInfo; ! } ! ! protected string MethodIdentification(MethodInfo methodInfo) ! { ! return ObjectUtils.GetQualifiedMethodName(methodInfo); ! } ! ! /// <summary> /// Execute after the successful completion of call, but not after an exception was handled. /// </summary> *************** *** 378,382 **** if (log.IsDebugEnabled) { ! log.Debug("Invoking commit for transaction on " + transactionInfo.JoinpointIdentification()); } --- 392,396 ---- if (log.IsDebugEnabled) { ! log.Debug("Invoking commit for transaction on " + transactionInfo.JoinpointIdentification); } *************** *** 408,412 **** if (log.IsDebugEnabled) { ! log.Debug("Completing transaction for [" + transactionInfo.JoinpointIdentification() + "] after exception: " + exception); } --- 422,426 ---- if (log.IsDebugEnabled) { ! log.Debug("Completing transaction for [" + transactionInfo.JoinpointIdentification + "] after exception: " + exception); } Index: TransactionInterceptor.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Data/Transaction/Interceptor/TransactionInterceptor.cs,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** TransactionInterceptor.cs 8 Aug 2007 19:27:46 -0000 1.11 --- TransactionInterceptor.cs 7 Sep 2007 04:46:53 -0000 1.12 *************** *** 20,23 **** --- 20,24 ---- using System; + using System.Reflection; using AopAlliance.Intercept; *************** *** 33,37 **** /// transaction API: subclasses such as this are responsible for calling /// superclass methods such as ! /// <see cref="Spring.Transaction.Interceptor.TransactionAspectSupport.CreateTransactionIfNecessary"/> /// in the correct order, in the event of normal invocation return or an exception. /// </p> --- 34,38 ---- /// transaction API: subclasses such as this are responsible for calling /// superclass methods such as ! /// <see cref="Spring.Transaction.Interceptor.TransactionAspectSupport.CreateTransactionIfNecessary(MethodInfo, Type) "/> /// in the correct order, in the event of normal invocation return or an exception. /// </p> --- NEW FILE: DelegatingTransactionAttributeWithName.cs --- #region License /* * Copyright 2002-2004 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; #if NET_2_0 using System.Transactions; #endif using IsolationLevel=System.Data.IsolationLevel; namespace Spring.Transaction.Interceptor { /// <summary> /// ITransactionAttribute that delegates all calls to a give target attribute except for the /// name, which is specified in the constructor. /// </summary> public class DelegatingTransactionAttributeWithName : ITransactionAttribute { private ITransactionAttribute targetAttribute; private string joinpointIdentification; /// <summary> /// Initializes a new instance of the <see cref="DelegatingTransactionAttributeWithName"/> class. /// </summary> /// <param name="targetAttribute">The target attribute.</param> /// <param name="identification">The identification.</param> public DelegatingTransactionAttributeWithName(ITransactionAttribute targetAttribute, string identification) { this.targetAttribute = targetAttribute; joinpointIdentification = identification; } /// <summary> /// Decides if rollback is required for the supplied <paramref name="exception"/>. /// </summary> /// <param name="exception">The <see cref="System.Exception"/> to evaluate.</param> /// <returns> /// True if the exception causes a rollback, false otherwise. /// </returns> public bool RollbackOn(Exception exception) { return targetAttribute.RollbackOn(exception); } /// <summary> /// Return the propagation behavior of type /// <see cref="Spring.Transaction.TransactionPropagation"/>. /// </summary> /// <value></value> public TransactionPropagation PropagationBehavior { get { return targetAttribute.PropagationBehavior; } } /// <summary> /// Return the isolation level of type <see cref="System.Data.IsolationLevel"/>. /// </summary> /// <value></value> /// <remarks> /// <p> /// Only makes sense in combination with /// <see cref="Spring.Transaction.TransactionPropagation.Required"/> and /// <see cref="Spring.Transaction.TransactionPropagation.RequiresNew"/>. /// </p> /// <p> /// Note that a transaction manager that does not support custom isolation levels /// will throw an exception when given any other level than /// <see cref="System.Data.IsolationLevel.Unspecified"/>. /// </p> /// </remarks> public IsolationLevel TransactionIsolationLevel { get { return targetAttribute.TransactionIsolationLevel; } } /// <summary> /// Return the transaction timeout. /// </summary> /// <value></value> /// <remarks> /// <p> /// Must return a number of seconds, or -1. /// Only makes sense in combination with /// <see cref="Spring.Transaction.TransactionPropagation.Required"/> and /// <see cref="Spring.Transaction.TransactionPropagation.RequiresNew"/>. /// Note that a transaction manager that does not support timeouts will /// throw an exception when given any other timeout than -1. /// </p> /// </remarks> public int TransactionTimeout { get { return targetAttribute.TransactionTimeout; } } /// <summary> /// Get whether to optimize as read-only transaction. /// </summary> /// <value></value> /// <remarks> /// <p> /// This just serves as hint for the actual transaction subsystem, /// it will <i>not necessarily</i> cause failure of write accesses. /// </p> /// <p> /// Only makes sense in combination with /// <see cref="Spring.Transaction.TransactionPropagation.Required"/> and /// <see cref="Spring.Transaction.TransactionPropagation.RequiresNew"/>. /// </p> /// <p> /// A transaction manager that cannot interpret the read-only hint /// will <i>not</i> throw an exception when given <c>ReadOnly=true</c>. /// </p> /// </remarks> public bool ReadOnly { get { return targetAttribute.ReadOnly; } } /// <summary> /// Return the name of this transaction. /// </summary> /// <value></value> /// <remarks> /// The exposed name will be the fully /// qualified type name + "." method name + assembly (by default). /// </remarks> public string Name { get { return joinpointIdentification; } } #if NET_2_0 /// <summary> /// Gets the enterprise services interop option. /// </summary> /// <value>The enterprise services interop option.</value> public EnterpriseServicesInteropOption EnterpriseServicesInteropOption { get { throw new NotImplementedException(); } } #endif /// <summary> /// Return a description of this transaction attribute. /// </summary> /// <remarks> /// <p> /// The format matches the one used by the /// <see cref="Spring.Transaction.Interceptor.TransactionAttributeEditor"/>, /// to be able to feed any result into a <see cref="Spring.Transaction.Interceptor.ITransactionAttribute"/> /// instance's properties. /// </p> /// </remarks> public override string ToString() { return targetAttribute.ToString(); } } } |
Update of /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv24754 Modified Files: ArrayConstructorNode.cs AssignNode.cs AttributeNode.cs BaseNode.cs BinaryOperator.cs BooleanLiteralNode.cs ConstructorNode.cs DateLiteralNode.cs DefaultNode.cs ExpressionListNode.cs FunctionNode.cs HexLiteralNode.cs IndexerNode.cs IntLiteralNode.cs LambdaExpressionNode.cs ListInitializerNode.cs LocalFunctionNode.cs LocalVariableNode.cs MapEntryNode.cs MapInitializerNode.cs MethodNode.cs NamedArgumentNode.cs NodeWithArguments.cs NullLiteralNode.cs OpADD.cs OpAND.cs OpBetween.cs OpDIVIDE.cs OpEqual.cs OpGreater.cs OpGreaterOrEqual.cs OpIn.cs OpIs.cs OpLess.cs OpLessOrEqual.cs OpLike.cs OpMODULUS.cs OpMULTIPLY.cs OpMatches.cs OpNOT.cs OpNotEqual.cs OpOR.cs OpPOWER.cs OpSUBTRACT.cs OpUnaryMinus.cs OpUnaryPlus.cs ProjectionNode.cs PropertyOrFieldNode.cs QualifiedIdentifier.cs RealLiteralNode.cs ReferenceNode.cs SelectionFirstNode.cs SelectionLastNode.cs SelectionNode.cs StringLiteralNode.cs TernaryNode.cs TypeNode.cs UnaryOperator.cs VariableNode.cs Log Message: SPRNET-718 - Make node classes in SpEL public to allow for node traveral. Index: HexLiteralNode.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/HexLiteralNode.cs,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** HexLiteralNode.cs 16 May 2007 15:09:41 -0000 1.8 --- HexLiteralNode.cs 7 Sep 2007 03:01:26 -0000 1.9 *************** *** 31,35 **** /// <version>$Id$</version> [Serializable] ! internal class HexLiteralNode : BaseNode { private object nodeValue; --- 31,35 ---- /// <version>$Id$</version> [Serializable] ! public class HexLiteralNode : BaseNode { private object nodeValue; Index: NamedArgumentNode.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/NamedArgumentNode.cs,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** NamedArgumentNode.cs 16 May 2007 15:09:41 -0000 1.3 --- NamedArgumentNode.cs 7 Sep 2007 03:01:26 -0000 1.4 *************** *** 30,34 **** /// <version>$Id$</version> [Serializable] ! internal class NamedArgumentNode : BaseNode { /// <summary> --- 30,34 ---- /// <version>$Id$</version> [Serializable] ! public class NamedArgumentNode : BaseNode { /// <summary> Index: VariableNode.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/VariableNode.cs,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** VariableNode.cs 23 Aug 2007 23:30:53 -0000 1.7 --- VariableNode.cs 7 Sep 2007 03:01:26 -0000 1.8 *************** *** 30,34 **** /// <version>$Id$</version> [Serializable] ! internal class VariableNode : BaseNode { /// <summary> --- 30,34 ---- /// <version>$Id$</version> [Serializable] ! public class VariableNode : BaseNode { /// <summary> Index: OpMODULUS.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/OpMODULUS.cs,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** OpMODULUS.cs 16 May 2007 15:09:41 -0000 1.7 --- OpMODULUS.cs 7 Sep 2007 03:01:26 -0000 1.8 *************** *** 31,35 **** /// <version>$Id$</version> [Serializable] ! internal class OpMODULUS : BinaryOperator { /// <summary> --- 31,35 ---- /// <version>$Id$</version> [Serializable] ! public class OpMODULUS : BinaryOperator { /// <summary> Index: IndexerNode.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/IndexerNode.cs,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** IndexerNode.cs 8 Aug 2007 06:49:48 -0000 1.15 --- IndexerNode.cs 7 Sep 2007 03:01:26 -0000 1.16 *************** *** 35,39 **** /// <version>$Id$</version> [Serializable] ! internal class IndexerNode : NodeWithArguments { private const BindingFlags BINDING_FLAGS --- 35,39 ---- /// <version>$Id$</version> [Serializable] ! public class IndexerNode : NodeWithArguments { private const BindingFlags BINDING_FLAGS Index: AssignNode.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/AssignNode.cs,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** AssignNode.cs 31 Jul 2007 08:18:20 -0000 1.8 --- AssignNode.cs 7 Sep 2007 03:01:21 -0000 1.9 *************** *** 31,35 **** /// <version>$Id$</version> [Serializable] ! internal class AssignNode : BaseNode { /// <summary> --- 31,35 ---- /// <version>$Id$</version> [Serializable] ! public class AssignNode : BaseNode { /// <summary> Index: QualifiedIdentifier.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/QualifiedIdentifier.cs,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** QualifiedIdentifier.cs 16 May 2007 15:09:41 -0000 1.6 --- QualifiedIdentifier.cs 7 Sep 2007 03:01:26 -0000 1.7 *************** *** 31,35 **** /// <version>$Id$</version> [Serializable] ! internal class QualifiedIdentifier : BaseNode { private const string ESCAPE_CHAR = "\\"; --- 31,35 ---- /// <version>$Id$</version> [Serializable] ! public class QualifiedIdentifier : BaseNode { private const string ESCAPE_CHAR = "\\"; Index: OpLessOrEqual.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/OpLessOrEqual.cs,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** OpLessOrEqual.cs 16 May 2007 15:09:41 -0000 1.9 --- OpLessOrEqual.cs 7 Sep 2007 03:01:26 -0000 1.10 *************** *** 32,36 **** /// <version>$Id$</version> [Serializable] ! internal class OpLessOrEqual : BinaryOperator { /// <summary> --- 32,36 ---- /// <version>$Id$</version> [Serializable] ! public class OpLessOrEqual : BinaryOperator { /// <summary> Index: OpADD.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/OpADD.cs,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** OpADD.cs 16 May 2007 15:09:41 -0000 1.9 --- OpADD.cs 7 Sep 2007 03:01:26 -0000 1.10 *************** *** 33,37 **** /// <version>$Id$</version> [Serializable] ! internal class OpADD : BinaryOperator { /// <summary> --- 33,37 ---- /// <version>$Id$</version> [Serializable] ! public class OpADD : BinaryOperator { /// <summary> Index: OpLike.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/OpLike.cs,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** OpLike.cs 21 Aug 2007 19:27:07 -0000 1.4 --- OpLike.cs 7 Sep 2007 03:01:26 -0000 1.5 *************** *** 34,38 **** /// <version>$Id$</version> [Serializable] ! internal class OpLike : BinaryOperator { /// <summary> --- 34,38 ---- /// <version>$Id$</version> [Serializable] ! public class OpLike : BinaryOperator { /// <summary> Index: OpMatches.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/OpMatches.cs,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** OpMatches.cs 16 May 2007 15:09:41 -0000 1.4 --- OpMatches.cs 7 Sep 2007 03:01:26 -0000 1.5 *************** *** 31,35 **** /// <version>$Id$</version> [Serializable] ! internal class OpMatches : BinaryOperator { private Regex regex; --- 31,35 ---- /// <version>$Id$</version> [Serializable] ! public class OpMatches : BinaryOperator { private Regex regex; Index: IntLiteralNode.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/IntLiteralNode.cs,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** IntLiteralNode.cs 16 May 2007 15:09:41 -0000 1.9 --- IntLiteralNode.cs 7 Sep 2007 03:01:26 -0000 1.10 *************** *** 30,34 **** /// <version>$Id$</version> [Serializable] ! internal class IntLiteralNode : BaseNode { private object nodeValue; --- 30,34 ---- /// <version>$Id$</version> [Serializable] ! public class IntLiteralNode : BaseNode { private object nodeValue; Index: MapInitializerNode.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/MapInitializerNode.cs,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** MapInitializerNode.cs 16 May 2007 15:09:41 -0000 1.3 --- MapInitializerNode.cs 7 Sep 2007 03:01:26 -0000 1.4 *************** *** 32,36 **** /// <version>$Id$</version> [Serializable] ! internal class MapInitializerNode : BaseNode { /// <summary> --- 32,36 ---- /// <version>$Id$</version> [Serializable] ! public class MapInitializerNode : BaseNode { /// <summary> Index: OpUnaryMinus.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/OpUnaryMinus.cs,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** OpUnaryMinus.cs 16 May 2007 15:09:41 -0000 1.7 --- OpUnaryMinus.cs 7 Sep 2007 03:01:26 -0000 1.8 *************** *** 31,35 **** /// <version>$Id$</version> [Serializable] ! internal class OpUnaryMinus : UnaryOperator { /// <summary> --- 31,35 ---- /// <version>$Id$</version> [Serializable] ! public class OpUnaryMinus : UnaryOperator { /// <summary> Index: ListInitializerNode.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/ListInitializerNode.cs,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** ListInitializerNode.cs 16 May 2007 15:09:41 -0000 1.3 --- ListInitializerNode.cs 7 Sep 2007 03:01:26 -0000 1.4 *************** *** 31,35 **** /// <version>$Id$</version> [Serializable] ! internal class ListInitializerNode : NodeWithArguments { /// <summary> --- 31,35 ---- /// <version>$Id$</version> [Serializable] ! public class ListInitializerNode : NodeWithArguments { /// <summary> Index: ArrayConstructorNode.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/ArrayConstructorNode.cs,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** ArrayConstructorNode.cs 31 Jul 2007 18:16:25 -0000 1.10 --- ArrayConstructorNode.cs 7 Sep 2007 03:01:21 -0000 1.11 *************** *** 35,39 **** /// <version>$Id$</version> [Serializable] ! internal class ArrayConstructorNode : NodeWithArguments { private Type arrayType; --- 35,39 ---- /// <version>$Id$</version> [Serializable] ! public class ArrayConstructorNode : NodeWithArguments { private Type arrayType; Index: OpBetween.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/OpBetween.cs,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** OpBetween.cs 16 May 2007 15:09:41 -0000 1.4 --- OpBetween.cs 7 Sep 2007 03:01:26 -0000 1.5 *************** *** 32,36 **** /// <version>$Id$</version> [Serializable] ! internal class OpBetween : BinaryOperator { /// <summary> --- 32,36 ---- /// <version>$Id$</version> [Serializable] ! public class OpBetween : BinaryOperator { /// <summary> Index: DateLiteralNode.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/DateLiteralNode.cs,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** DateLiteralNode.cs 16 May 2007 15:09:41 -0000 1.6 --- DateLiteralNode.cs 7 Sep 2007 03:01:21 -0000 1.7 *************** *** 32,36 **** /// <version>$Id$</version> [Serializable] ! internal class DateLiteralNode : BaseNode { private object nodeValue; --- 32,36 ---- /// <version>$Id$</version> [Serializable] ! public class DateLiteralNode : BaseNode { private object nodeValue; Index: OpIs.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/OpIs.cs,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** OpIs.cs 16 May 2007 15:09:41 -0000 1.3 --- OpIs.cs 7 Sep 2007 03:01:26 -0000 1.4 *************** *** 30,34 **** /// <version>$Id$</version> [Serializable] ! internal class OpIs : BinaryOperator { /// <summary> --- 30,34 ---- /// <version>$Id$</version> [Serializable] ! public class OpIs : BinaryOperator { /// <summary> Index: LambdaExpressionNode.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/LambdaExpressionNode.cs,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** LambdaExpressionNode.cs 23 Aug 2007 23:30:52 -0000 1.7 --- LambdaExpressionNode.cs 7 Sep 2007 03:01:26 -0000 1.8 *************** *** 32,36 **** /// <version>$Id$</version> [Serializable] ! internal class LambdaExpressionNode : BaseNode { /// <summary> --- 32,36 ---- /// <version>$Id$</version> [Serializable] ! public class LambdaExpressionNode : BaseNode { /// <summary> Index: OpNotEqual.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/OpNotEqual.cs,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** OpNotEqual.cs 16 May 2007 15:09:41 -0000 1.10 --- OpNotEqual.cs 7 Sep 2007 03:01:26 -0000 1.11 *************** *** 31,35 **** /// <version>$Id$</version> [Serializable] ! internal class OpNotEqual : BinaryOperator { /// <summary> --- 31,35 ---- /// <version>$Id$</version> [Serializable] ! public class OpNotEqual : BinaryOperator { /// <summary> Index: OpLess.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/OpLess.cs,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** OpLess.cs 16 May 2007 15:09:41 -0000 1.9 --- OpLess.cs 7 Sep 2007 03:01:26 -0000 1.10 *************** *** 31,35 **** /// <version>$Id$</version> [Serializable] ! internal class OpLess : BinaryOperator { /// <summary> --- 31,35 ---- /// <version>$Id$</version> [Serializable] ! public class OpLess : BinaryOperator { /// <summary> Index: BinaryOperator.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/BinaryOperator.cs,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** BinaryOperator.cs 16 May 2007 15:09:41 -0000 1.7 --- BinaryOperator.cs 7 Sep 2007 03:01:21 -0000 1.8 *************** *** 30,34 **** /// <version>$Id$</version> [Serializable] ! internal abstract class BinaryOperator : BaseNode { /// <summary> --- 30,34 ---- /// <version>$Id$</version> [Serializable] ! public abstract class BinaryOperator : BaseNode { /// <summary> Index: ConstructorNode.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/ConstructorNode.cs,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** ConstructorNode.cs 8 Aug 2007 08:25:35 -0000 1.15 --- ConstructorNode.cs 7 Sep 2007 03:01:21 -0000 1.16 *************** *** 36,40 **** /// <version>$Id$</version> [Serializable] ! internal class ConstructorNode : NodeWithArguments { private SafeConstructor constructor; --- 36,40 ---- /// <version>$Id$</version> [Serializable] ! public class ConstructorNode : NodeWithArguments { private SafeConstructor constructor; Index: FunctionNode.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/FunctionNode.cs,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** FunctionNode.cs 16 May 2007 15:09:41 -0000 1.5 --- FunctionNode.cs 7 Sep 2007 03:01:26 -0000 1.6 *************** *** 31,35 **** /// <version>$Id$</version> [Serializable] ! internal class FunctionNode : NodeWithArguments { /// <summary> --- 31,35 ---- /// <version>$Id$</version> [Serializable] ! public class FunctionNode : NodeWithArguments { /// <summary> Index: MethodNode.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/MethodNode.cs,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** MethodNode.cs 26 Aug 2007 01:59:49 -0000 1.18 --- MethodNode.cs 7 Sep 2007 03:01:26 -0000 1.19 *************** *** 35,39 **** /// <version>$Id$</version> [Serializable] ! internal class MethodNode : NodeWithArguments { private const BindingFlags BINDING_FLAGS --- 35,39 ---- /// <version>$Id$</version> [Serializable] ! public class MethodNode : NodeWithArguments { private const BindingFlags BINDING_FLAGS *************** *** 167,170 **** --- 167,178 ---- } + /// <summary> + /// Gets the best method given the name, argument values, for a given type. + /// </summary> + /// <param name="type">The type on which to search for the method.</param> + /// <param name="methodName">Name of the method.</param> + /// <param name="bindingFlags">The binding flags.</param> + /// <param name="argValues">The arg values.</param> + /// <returns>Best matching method or null if none found.</returns> public static MethodInfo GetBestMethod(Type type, string methodName, BindingFlags bindingFlags, object[] argValues) { Index: LocalVariableNode.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/LocalVariableNode.cs,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** LocalVariableNode.cs 16 May 2007 15:09:41 -0000 1.3 --- LocalVariableNode.cs 7 Sep 2007 03:01:26 -0000 1.4 *************** *** 31,35 **** /// <version>$Id$</version> [Serializable] ! internal class LocalVariableNode : BaseNode { //internal const string LOCAL_VARIABLES = "__locals"; --- 31,35 ---- /// <version>$Id$</version> [Serializable] ! public class LocalVariableNode : BaseNode { //internal const string LOCAL_VARIABLES = "__locals"; Index: MapEntryNode.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/MapEntryNode.cs,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** MapEntryNode.cs 16 May 2007 15:09:41 -0000 1.3 --- MapEntryNode.cs 7 Sep 2007 03:01:26 -0000 1.4 *************** *** 31,35 **** /// <version>$Id$</version> [Serializable] ! internal class MapEntryNode : BaseNode { /// <summary> --- 31,35 ---- /// <version>$Id$</version> [Serializable] ! public class MapEntryNode : BaseNode { /// <summary> Index: NullLiteralNode.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/NullLiteralNode.cs,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** NullLiteralNode.cs 16 May 2007 15:09:41 -0000 1.7 --- NullLiteralNode.cs 7 Sep 2007 03:01:26 -0000 1.8 *************** *** 30,34 **** /// <version>$Id$</version> [Serializable] ! internal class NullLiteralNode : BaseNode { /// <summary> --- 30,34 ---- /// <version>$Id$</version> [Serializable] ! public class NullLiteralNode : BaseNode { /// <summary> Index: UnaryOperator.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/UnaryOperator.cs,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** UnaryOperator.cs 16 May 2007 15:09:41 -0000 1.7 --- UnaryOperator.cs 7 Sep 2007 03:01:26 -0000 1.8 *************** *** 29,33 **** /// <version>$Id$</version> //[Serializable] ! internal abstract class UnaryOperator : BaseNode { /// <summary> --- 29,33 ---- /// <version>$Id$</version> //[Serializable] ! public abstract class UnaryOperator : BaseNode { /// <summary> Index: PropertyOrFieldNode.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/PropertyOrFieldNode.cs,v retrieving revision 1.26 retrieving revision 1.27 diff -C2 -d -r1.26 -r1.27 *** PropertyOrFieldNode.cs 8 Aug 2007 04:00:15 -0000 1.26 --- PropertyOrFieldNode.cs 7 Sep 2007 03:01:26 -0000 1.27 *************** *** 44,48 **** /// <version>$Id$</version> [Serializable] ! internal class PropertyOrFieldNode : BaseNode { //private static readonly Common.Logging.ILog Log = Common.Logging.LogManager.GetLogger(typeof(PropertyOrFieldNode)); --- 44,48 ---- /// <version>$Id$</version> [Serializable] ! public class PropertyOrFieldNode : BaseNode { //private static readonly Common.Logging.ILog Log = Common.Logging.LogManager.GetLogger(typeof(PropertyOrFieldNode)); Index: BooleanLiteralNode.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/BooleanLiteralNode.cs,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** BooleanLiteralNode.cs 16 May 2007 15:09:41 -0000 1.8 --- BooleanLiteralNode.cs 7 Sep 2007 03:01:21 -0000 1.9 *************** *** 30,34 **** /// <version>$Id$</version> [Serializable] ! internal class BooleanLiteralNode : BaseNode { private object nodeValue; --- 30,34 ---- /// <version>$Id$</version> [Serializable] ! public class BooleanLiteralNode : BaseNode { private object nodeValue; Index: SelectionLastNode.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/SelectionLastNode.cs,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** SelectionLastNode.cs 23 Aug 2007 23:30:53 -0000 1.4 --- SelectionLastNode.cs 7 Sep 2007 03:01:26 -0000 1.5 *************** *** 31,35 **** /// <version>$Id$</version> [Serializable] ! internal class SelectionLastNode : BaseNode { /// <summary> --- 31,35 ---- /// <version>$Id$</version> [Serializable] ! public class SelectionLastNode : BaseNode { /// <summary> Index: OpAND.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/OpAND.cs,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** OpAND.cs 16 May 2007 15:09:41 -0000 1.7 --- OpAND.cs 7 Sep 2007 03:01:26 -0000 1.8 *************** *** 30,34 **** /// <version>$Id$</version> [Serializable] ! internal class OpAND : BinaryOperator { /// <summary> --- 30,34 ---- /// <version>$Id$</version> [Serializable] ! public class OpAND : BinaryOperator { /// <summary> Index: OpSUBTRACT.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/OpSUBTRACT.cs,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** OpSUBTRACT.cs 16 May 2007 15:09:41 -0000 1.9 --- OpSUBTRACT.cs 7 Sep 2007 03:01:26 -0000 1.10 *************** *** 33,37 **** /// <version>$Id$</version> [Serializable] ! internal class OpSUBTRACT : BinaryOperator { /// <summary> --- 33,37 ---- /// <version>$Id$</version> [Serializable] ! public class OpSUBTRACT : BinaryOperator { /// <summary> Index: LocalFunctionNode.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/LocalFunctionNode.cs,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** LocalFunctionNode.cs 23 Aug 2007 23:30:52 -0000 1.6 --- LocalFunctionNode.cs 7 Sep 2007 03:01:26 -0000 1.7 *************** *** 31,35 **** /// <version>$Id$</version> [Serializable] ! internal class LocalFunctionNode : NodeWithArguments { /// <summary> --- 31,35 ---- /// <version>$Id$</version> [Serializable] ! public class LocalFunctionNode : NodeWithArguments { /// <summary> Index: OpNOT.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/OpNOT.cs,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** OpNOT.cs 16 May 2007 15:09:41 -0000 1.7 --- OpNOT.cs 7 Sep 2007 03:01:26 -0000 1.8 *************** *** 30,34 **** /// <version>$Id$</version> [Serializable] ! internal class OpNOT : UnaryOperator { /// <summary> --- 30,34 ---- /// <version>$Id$</version> [Serializable] ! public class OpNOT : UnaryOperator { /// <summary> Index: DefaultNode.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/DefaultNode.cs,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** DefaultNode.cs 16 May 2007 15:09:41 -0000 1.2 --- DefaultNode.cs 7 Sep 2007 03:01:24 -0000 1.3 *************** *** 30,34 **** /// <version>$Id$</version> [Serializable] ! internal class DefaultNode : BinaryOperator { /// <summary> --- 30,34 ---- /// <version>$Id$</version> [Serializable] ! public class DefaultNode : BinaryOperator { /// <summary> Index: SelectionNode.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/SelectionNode.cs,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** SelectionNode.cs 23 Aug 2007 23:30:53 -0000 1.4 --- SelectionNode.cs 7 Sep 2007 03:01:26 -0000 1.5 *************** *** 31,35 **** /// <version>$Id$</version> [Serializable] ! internal class SelectionNode : BaseNode { /// <summary> --- 31,35 ---- /// <version>$Id$</version> [Serializable] ! public class SelectionNode : BaseNode { /// <summary> Index: OpGreaterOrEqual.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/OpGreaterOrEqual.cs,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** OpGreaterOrEqual.cs 16 May 2007 15:09:41 -0000 1.9 --- OpGreaterOrEqual.cs 7 Sep 2007 03:01:26 -0000 1.10 *************** *** 31,35 **** /// <version>$Id$</version> [Serializable] ! internal class OpGreaterOrEqual : BinaryOperator { /// <summary> --- 31,35 ---- /// <version>$Id$</version> [Serializable] ! public class OpGreaterOrEqual : BinaryOperator { /// <summary> Index: ExpressionListNode.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/ExpressionListNode.cs,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** ExpressionListNode.cs 16 May 2007 15:09:41 -0000 1.5 --- ExpressionListNode.cs 7 Sep 2007 03:01:24 -0000 1.6 *************** *** 31,35 **** /// <version>$Id$</version> [Serializable] ! internal class ExpressionListNode : BaseNode { /// <summary> --- 31,35 ---- /// <version>$Id$</version> [Serializable] ! public class ExpressionListNode : BaseNode { /// <summary> Index: NodeWithArguments.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/NodeWithArguments.cs,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** NodeWithArguments.cs 23 Aug 2007 23:30:52 -0000 1.14 --- NodeWithArguments.cs 7 Sep 2007 03:01:26 -0000 1.15 *************** *** 32,36 **** /// <version>$Id$</version> [Serializable] ! internal abstract class NodeWithArguments : BaseNode { private BaseNode[] args; --- 32,36 ---- /// <version>$Id$</version> [Serializable] ! public abstract class NodeWithArguments : BaseNode { private BaseNode[] args; Index: TypeNode.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/TypeNode.cs,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** TypeNode.cs 31 Jul 2007 18:16:25 -0000 1.10 --- TypeNode.cs 7 Sep 2007 03:01:26 -0000 1.11 *************** *** 33,37 **** /// <version>$Id$</version> [Serializable] ! internal class TypeNode : BaseNode { private Type type; --- 33,37 ---- /// <version>$Id$</version> [Serializable] ! public class TypeNode : BaseNode { private Type type; Index: OpUnaryPlus.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/OpUnaryPlus.cs,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** OpUnaryPlus.cs 16 May 2007 15:09:41 -0000 1.7 --- OpUnaryPlus.cs 7 Sep 2007 03:01:26 -0000 1.8 *************** *** 31,35 **** /// <version>$Id$</version> [Serializable] ! internal class OpUnaryPlus : UnaryOperator { /// <summary> --- 31,35 ---- /// <version>$Id$</version> [Serializable] ! public class OpUnaryPlus : UnaryOperator { /// <summary> Index: OpGreater.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/OpGreater.cs,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** OpGreater.cs 16 May 2007 15:09:41 -0000 1.9 --- OpGreater.cs 7 Sep 2007 03:01:26 -0000 1.10 *************** *** 31,35 **** /// <version>$Id$</version> [Serializable] ! internal class OpGreater : BinaryOperator { /// <summary> --- 31,35 ---- /// <version>$Id$</version> [Serializable] ! public class OpGreater : BinaryOperator { /// <summary> Index: OpEqual.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/OpEqual.cs,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** OpEqual.cs 16 May 2007 15:09:41 -0000 1.11 --- OpEqual.cs 7 Sep 2007 03:01:26 -0000 1.12 *************** *** 31,35 **** /// <version>$Id$</version> [Serializable] ! internal class OpEqual : BinaryOperator { /// <summary> --- 31,35 ---- /// <version>$Id$</version> [Serializable] ! public class OpEqual : BinaryOperator { /// <summary> Index: SelectionFirstNode.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/SelectionFirstNode.cs,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** SelectionFirstNode.cs 23 Aug 2007 23:30:53 -0000 1.4 --- SelectionFirstNode.cs 7 Sep 2007 03:01:26 -0000 1.5 *************** *** 31,35 **** /// <version>$Id$</version> [Serializable] ! internal class SelectionFirstNode : BaseNode { /// <summary> --- 31,35 ---- /// <version>$Id$</version> [Serializable] ! public class SelectionFirstNode : BaseNode { /// <summary> Index: BaseNode.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/BaseNode.cs,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** BaseNode.cs 23 Aug 2007 23:30:52 -0000 1.23 --- BaseNode.cs 7 Sep 2007 03:01:21 -0000 1.24 *************** *** 38,42 **** /// Holds the state during evaluating an expression. /// </summary> ! protected internal class EvaluationContext { #region Holder classes --- 38,42 ---- /// Holds the state during evaluating an expression. /// </summary> ! public class EvaluationContext { #region Holder classes Index: OpDIVIDE.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/OpDIVIDE.cs,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** OpDIVIDE.cs 16 May 2007 15:09:41 -0000 1.7 --- OpDIVIDE.cs 7 Sep 2007 03:01:26 -0000 1.8 *************** *** 32,36 **** /// <version>$Id$</version> [Serializable] ! internal class OpDIVIDE : BinaryOperator { /// <summary> --- 32,36 ---- /// <version>$Id$</version> [Serializable] ! public class OpDIVIDE : BinaryOperator { /// <summary> Index: StringLiteralNode.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/StringLiteralNode.cs,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** StringLiteralNode.cs 16 May 2007 15:09:41 -0000 1.7 --- StringLiteralNode.cs 7 Sep 2007 03:01:26 -0000 1.8 *************** *** 30,34 **** /// <version>$Id$</version> [Serializable] ! internal class StringLiteralNode : BaseNode { /// <summary> --- 30,34 ---- /// <version>$Id$</version> [Serializable] ! public class StringLiteralNode : BaseNode { /// <summary> Index: OpPOWER.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/OpPOWER.cs,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** OpPOWER.cs 16 May 2007 15:09:41 -0000 1.7 --- OpPOWER.cs 7 Sep 2007 03:01:26 -0000 1.8 *************** *** 31,35 **** /// <version>$Id$</version> [Serializable] ! internal class OpPOWER : BinaryOperator { /// <summary> --- 31,35 ---- /// <version>$Id$</version> [Serializable] ! public class OpPOWER : BinaryOperator { /// <summary> Index: OpIn.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/OpIn.cs,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** OpIn.cs 16 May 2007 15:09:41 -0000 1.4 --- OpIn.cs 7 Sep 2007 03:01:26 -0000 1.5 *************** *** 31,35 **** /// <version>$Id$</version> [Serializable] ! internal class OpIn : BinaryOperator { /// <summary> --- 31,35 ---- /// <version>$Id$</version> [Serializable] ! public class OpIn : BinaryOperator { /// <summary> Index: AttributeNode.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/AttributeNode.cs,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** AttributeNode.cs 31 Jul 2007 18:16:25 -0000 1.8 --- AttributeNode.cs 7 Sep 2007 03:01:21 -0000 1.9 *************** *** 33,37 **** /// <version>$Id$</version> [Serializable] ! internal class AttributeNode : ConstructorNode { /// <summary> --- 33,37 ---- /// <version>$Id$</version> [Serializable] ! public class AttributeNode : ConstructorNode { /// <summary> Index: RealLiteralNode.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/RealLiteralNode.cs,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** RealLiteralNode.cs 16 May 2007 15:09:41 -0000 1.10 --- RealLiteralNode.cs 7 Sep 2007 03:01:26 -0000 1.11 *************** *** 31,35 **** /// <version>$Id$</version> [Serializable] ! internal class RealLiteralNode : BaseNode { private object nodeValue; --- 31,35 ---- /// <version>$Id$</version> [Serializable] ! public class RealLiteralNode : BaseNode { private object nodeValue; Index: TernaryNode.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/TernaryNode.cs,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** TernaryNode.cs 16 May 2007 15:09:41 -0000 1.8 --- TernaryNode.cs 7 Sep 2007 03:01:26 -0000 1.9 *************** *** 31,35 **** /// <version>$Id$</version> [Serializable] ! internal class TernaryNode : BaseNode { private bool initialized = false; --- 31,35 ---- /// <version>$Id$</version> [Serializable] ! public class TernaryNode : BaseNode { private bool initialized = false; Index: ProjectionNode.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/ProjectionNode.cs,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** ProjectionNode.cs 23 Aug 2007 23:30:53 -0000 1.7 --- ProjectionNode.cs 7 Sep 2007 03:01:26 -0000 1.8 *************** *** 31,35 **** /// <version>$Id$</version> [Serializable] ! internal class ProjectionNode : BaseNode { /// <summary> --- 31,35 ---- /// <version>$Id$</version> [Serializable] ! public class ProjectionNode : BaseNode { /// <summary> Index: ReferenceNode.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/ReferenceNode.cs,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** ReferenceNode.cs 31 Jul 2007 21:43:52 -0000 1.11 --- ReferenceNode.cs 7 Sep 2007 03:01:26 -0000 1.12 *************** *** 31,35 **** /// <version>$Id$</version> [Serializable] ! internal class ReferenceNode : BaseNode { /// <summary> --- 31,35 ---- /// <version>$Id$</version> [Serializable] ! public class ReferenceNode : BaseNode { /// <summary> Index: OpMULTIPLY.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/OpMULTIPLY.cs,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** OpMULTIPLY.cs 16 May 2007 15:09:41 -0000 1.9 --- OpMULTIPLY.cs 7 Sep 2007 03:01:26 -0000 1.10 *************** *** 33,37 **** /// <version>$Id$</version> [Serializable] ! internal class OpMULTIPLY : BinaryOperator { /// <summary> --- 33,37 ---- /// <version>$Id$</version> [Serializable] ! public class OpMULTIPLY : BinaryOperator { /// <summary> Index: OpOR.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Expressions/OpOR.cs,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** OpOR.cs 16 May 2007 15:09:41 -0000 1.7 --- OpOR.cs 7 Sep 2007 03:01:26 -0000 1.8 *************** *** 30,34 **** /// <version>$Id$</version> [Serializable] ! internal class OpOR : BinaryOperator { /// <summary> --- 30,34 ---- /// <version>$Id$</version> [Serializable] ! public class OpOR : BinaryOperator { /// <summary> |
From: Mark P. <mar...@us...> - 2007-09-07 02:47:14
|
Update of /cvsroot/springnet/Spring.Net/test/Spring/Spring.Core.Tests/Util In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv19595 Added Files: SystemUtilsTests.cs Log Message: SPRNET-486 - Provide better logging information in TransactionSynchronizationManager to identify ConnectionHolder, DbProvider and thread name --- NEW FILE: SystemUtilsTests.cs --- (This appears to be a binary file; contents omitted.) |
From: Mark P. <mar...@us...> - 2007-09-07 02:47:05
|
Update of /cvsroot/springnet/Spring.Net/src/Spring/Spring.Data/Transaction/Support In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv19252 Modified Files: TransactionSynchronizationManager.cs Log Message: SPRNET-486 - Provide better logging information in TransactionSynchronizationManager to identify ConnectionHolder, DbProvider and thread name Index: TransactionSynchronizationManager.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Data/Transaction/Support/TransactionSynchronizationManager.cs,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** TransactionSynchronizationManager.cs 16 Aug 2007 05:41:03 -0000 1.17 --- TransactionSynchronizationManager.cs 7 Sep 2007 02:47:00 -0000 1.18 *************** *** 22,25 **** --- 22,26 ---- using System.Collections; using System.Data; + using System.Globalization; using System.Threading; using Spring.Core; *************** *** 74,80 **** #endregion ! private static readonly string SyncsDataSlotName = "Spring.Transactions:syncList"; ! private static readonly string ResourcesDataSlotName = "Spring.Transactions:resources"; private static readonly string currentTxReadOnlyDataSlotName = "Spring.Transactions:currentTxReadOnly"; --- 75,82 ---- #endregion ! #region Fields ! private static readonly string syncsDataSlotName = "Spring.Transactions:syncList"; ! private static readonly string resourcesDataSlotName = "Spring.Transactions:resources"; private static readonly string currentTxReadOnlyDataSlotName = "Spring.Transactions:currentTxReadOnly"; *************** *** 87,91 **** private static IComparer syncComparer = new OrderComparator(); ! #region Management of transaction-associated resource handles --- 89,94 ---- private static IComparer syncComparer = new OrderComparator(); ! ! #endregion #region Management of transaction-associated resource handles *************** *** 102,106 **** get { ! IDictionary resources = LogicalThreadContext.GetData(ResourcesDataSlotName) as IDictionary; if (resources != null) { --- 105,109 ---- get { ! IDictionary resources = LogicalThreadContext.GetData(resourcesDataSlotName) as IDictionary; if (resources != null) { *************** *** 134,138 **** { AssertUtils.ArgumentNotNull(key, "Key must not be null"); ! IDictionary resources = LogicalThreadContext.GetData(ResourcesDataSlotName) as IDictionary; if (resources == null) { --- 137,141 ---- { AssertUtils.ArgumentNotNull(key, "Key must not be null"); ! IDictionary resources = LogicalThreadContext.GetData(resourcesDataSlotName) as IDictionary; if (resources == null) { *************** *** 145,152 **** } object val = resources[key]; if (val != null && LOG.IsDebugEnabled) { ! LOG.Debug("Retrieved value [" + val + "] for key [" + key + "] bound to thread [" + ! Thread.CurrentThread.Name + "]"); } return val; --- 148,156 ---- } object val = resources[key]; + if (val != null && LOG.IsDebugEnabled) { ! LOG.Debug("Retrieved value [" + Describe(val) + "] for key [" + Describe(key) + "] bound to thread [" + ! SystemUtils.ThreadId + "]"); } return val; *************** *** 163,183 **** AssertUtils.ArgumentNotNull(value, "Transactional resource to bind to thread local storage must not be null" ); ! IDictionary resources = LogicalThreadContext.GetData(ResourcesDataSlotName) as IDictionary; //Set thread local resource storage if not found if (resources == null) { resources = new Hashtable(); ! LogicalThreadContext.SetData(ResourcesDataSlotName, resources); } if (resources.Contains(key)) { throw new InvalidOperationException("Already value [" + resources[key] + "] for key [" + key + ! "] bound to thread [" + Thread.CurrentThread.Name + "]"); } resources.Add(key, value); if (LOG.IsDebugEnabled) { ! LOG.Debug("Bound value [" + value + "] for key [" + key + "] to thread [" + ! Thread.CurrentThread.Name + "]"); } } --- 167,187 ---- AssertUtils.ArgumentNotNull(value, "Transactional resource to bind to thread local storage must not be null" ); ! IDictionary resources = LogicalThreadContext.GetData(resourcesDataSlotName) as IDictionary; //Set thread local resource storage if not found if (resources == null) { resources = new Hashtable(); ! LogicalThreadContext.SetData(resourcesDataSlotName, resources); } if (resources.Contains(key)) { throw new InvalidOperationException("Already value [" + resources[key] + "] for key [" + key + ! "] bound to thread [" + SystemUtils.ThreadId + "]"); } resources.Add(key, value); if (LOG.IsDebugEnabled) { ! LOG.Debug("Bound value [" + Describe(value) + "] for key [" + Describe(key) + "] to thread [" + ! SystemUtils.ThreadId + "]"); } } *************** *** 194,202 **** AssertUtils.ArgumentNotNull(key, "Key must not be null"); ! IDictionary resources = LogicalThreadContext.GetData(ResourcesDataSlotName) as IDictionary; if (resources == null || !resources.Contains(key)) { throw new InvalidOperationException("No value for key [" + key + "] bound to thread [" + ! Thread.CurrentThread.Name + "]"); } Object val = resources[key]; --- 198,206 ---- AssertUtils.ArgumentNotNull(key, "Key must not be null"); ! IDictionary resources = LogicalThreadContext.GetData(resourcesDataSlotName) as IDictionary; if (resources == null || !resources.Contains(key)) { throw new InvalidOperationException("No value for key [" + key + "] bound to thread [" + ! SystemUtils.ThreadId + "]"); } Object val = resources[key]; *************** *** 204,213 **** if (resources.Count == 0) { ! LogicalThreadContext.FreeNamedDataSlot(ResourcesDataSlotName); } if (LOG.IsDebugEnabled) { ! LOG.Debug("Removed value [" + val + "] for key [" + key + "] from thread [" + ! Thread.CurrentThread.Name + "]"); } return val; --- 208,217 ---- if (resources.Count == 0) { ! LogicalThreadContext.FreeNamedDataSlot(resourcesDataSlotName); } if (LOG.IsDebugEnabled) { ! LOG.Debug("Removed value [" + Describe(val) + "] for key [" + Describe(key) + "] from thread [" + ! SystemUtils.ThreadId + "]"); } return val; *************** *** 216,260 **** #endregion ! /// <summary> ! /// Return an unmodifiable list of all registered synchronizations ! /// for the current thread. ! /// </summary> ! /// <returns> ! /// A list of <see cref="Spring.Transaction.Support.ITransactionSynchronization"/> ! /// instances. ! /// </returns> ! /// <exception cref="System.InvalidOperationException"> ! /// If synchronization is not active. ! /// </exception> ! public static IList Synchronizations ! { ! get ! { ! if ( ! SynchronizationActive ) ! { ! throw new InvalidOperationException( "Transaction synchronization is not active" ); ! } ! ArrayList syncs = LogicalThreadContext.GetData(SyncsDataSlotName) as ArrayList; ! if (syncs != null) ! { ! // Sort lazily here, not in registerSynchronization. ! object root = syncs.SyncRoot; ! lock (root) ! { ! syncs.Sort(syncComparer); ! } ! // Return unmodifiable snapshot, to avoid exceptions ! // while iterating and invoking synchronization callbacks that in turn ! // might register further synchronizations. ! return ArrayList.ReadOnly(syncs); ! } ! else ! { ! return ArrayList.ReadOnly(new ArrayList()); ! } ! } ! } ! ! /// <summary> /// Activate transaction synchronization for the current thread. /// </summary> --- 220,224 ---- #endregion ! /// <summary> /// Activate transaction synchronization for the current thread. /// </summary> *************** *** 271,277 **** throw new InvalidOperationException( "Cannot activate transaction synchronization - already active" ); } ! LOG.Debug("Initializing transaction synchronization"); ArrayList syncs = new ArrayList(); ! LogicalThreadContext.SetData(SyncsDataSlotName, syncs); } --- 235,244 ---- throw new InvalidOperationException( "Cannot activate transaction synchronization - already active" ); } ! if (LOG.IsDebugEnabled) ! { ! LOG.Debug("Initializing transaction synchronization"); ! } ArrayList syncs = new ArrayList(); ! LogicalThreadContext.SetData(syncsDataSlotName, syncs); } *************** *** 291,296 **** throw new InvalidOperationException( "Cannot deactivate transaction synchronization - not active" ); } ! LOG.Debug("Clearing transaction synchronization"); ! LogicalThreadContext.FreeNamedDataSlot(SyncsDataSlotName); } --- 258,266 ---- throw new InvalidOperationException( "Cannot deactivate transaction synchronization - not active" ); } ! if (LOG.IsDebugEnabled) ! { ! LOG.Debug("Clearing transaction synchronization"); ! } ! LogicalThreadContext.FreeNamedDataSlot(syncsDataSlotName); } *************** *** 324,328 **** throw new InvalidOperationException( "Transaction synchronization is not active" ); } ! ArrayList syncs = LogicalThreadContext.GetData(SyncsDataSlotName) as ArrayList; if (syncs != null) { --- 294,298 ---- throw new InvalidOperationException( "Transaction synchronization is not active" ); } ! ArrayList syncs = LogicalThreadContext.GetData(syncsDataSlotName) as ArrayList; if (syncs != null) { *************** *** 333,339 **** } } ! } ! /// <summary> /// Return if transaction synchronization is active for the current thread. /// </summary> --- 303,356 ---- } } ! } ! private static string Describe(object obj) ! { ! return obj == null ? "" : obj + "@" + obj.GetHashCode().ToString("X"); ! } ! ! #region Properties ! ! /// <summary> ! /// Return an unmodifiable list of all registered synchronizations ! /// for the current thread. ! /// </summary> ! /// <returns> ! /// A list of <see cref="Spring.Transaction.Support.ITransactionSynchronization"/> ! /// instances. ! /// </returns> ! /// <exception cref="System.InvalidOperationException"> ! /// If synchronization is not active. ! /// </exception> ! public static IList Synchronizations ! { ! get ! { ! if ( ! SynchronizationActive ) ! { ! throw new InvalidOperationException( "Transaction synchronization is not active" ); ! } ! ArrayList syncs = LogicalThreadContext.GetData(syncsDataSlotName) as ArrayList; ! if (syncs != null) ! { ! // Sort lazily here, not in registerSynchronization. ! object root = syncs.SyncRoot; ! lock (root) ! { ! syncs.Sort(syncComparer); ! } ! // Return unmodifiable snapshot, to avoid exceptions ! // while iterating and invoking synchronization callbacks that in turn ! // might register further synchronizations. ! return ArrayList.ReadOnly(syncs); ! } ! else ! { ! return ArrayList.ReadOnly(new ArrayList()); ! } ! } ! } ! ! /// <summary> /// Return if transaction synchronization is active for the current thread. /// </summary> *************** *** 347,351 **** get { ! IList syncs = LogicalThreadContext.GetData(SyncsDataSlotName) as IList; return syncs != null; } --- 364,368 ---- get { ! IList syncs = LogicalThreadContext.GetData(syncsDataSlotName) as IList; return syncs != null; } *************** *** 460,463 **** } } ! } } --- 477,481 ---- } } ! #endregion ! } } |
From: Mark P. <mar...@us...> - 2007-09-07 02:46:55
|
Update of /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Util In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv19239 Modified Files: SystemUtils.cs Log Message: SPRNET-486 - Provide better logging information in TransactionSynchronizationManager to identify ConnectionHolder, DbProvider and thread name Index: SystemUtils.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Core/Util/SystemUtils.cs,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** SystemUtils.cs 30 May 2007 21:06:25 -0000 1.4 --- SystemUtils.cs 7 Sep 2007 02:46:49 -0000 1.5 *************** *** 24,27 **** --- 24,28 ---- using System.Configuration; using System.Reflection; + using System.Threading; using System.Xml; *************** *** 87,90 **** --- 88,117 ---- get { return isMono; } } + + /// <summary> + /// 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. + /// </summary> + /// <value>The thread id.</value> + public static string ThreadId + { + get + { + string name = Thread.CurrentThread.Name; + if (StringUtils.HasText(name)) + { + return name; + } + else + { + #if NET_1_0 || NET_1_1 + return Thread.CurrentThread.GetHashCode().ToString(); + #else + return Thread.CurrentThread.ManagedThreadId.ToString(); + #endif + } + } + } } } \ No newline at end of file |
From: Mark P. <mar...@us...> - 2007-09-07 02:00:12
|
Update of /cvsroot/springnet/Spring.Net/test/Spring/Spring.Services.Tests/Data/Spring/Remoting In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv870 Added Files: saoSingleton-aop.xml Log Message: Add test for sao factorry with aop --- NEW FILE: saoSingleton-aop.xml --- <?xml version="1.0" encoding="utf-8" ?> <objects xmlns="http://www.springframework.net" xmlns:r="http://www.springframework.net/remoting"> <!-- server --> <object id="singletonCounter" type="Spring.Remoting.SimpleCounter, Spring.Services.Tests"> <constructor-arg index="0" value="1" /> </object> <r:saoExporter targetName="singletonCounter" serviceName="RemotedSaoSingletonCounter"/> <!-- Old fashion way without remoting config parser... <object type="Spring.Remoting.SaoExporter, Spring.Services"> <property name="TargetName" value="singletonCounter" /> <property name="ServiceName" value="RemotedSaoSingletonCounter" /> </object> --> <!-- client --> <!-- remoteSaoSingletonCounter --> <r:saoFactory id="remoteSaoSingletonCounter" serviceInterface="Spring.Remoting.ISimpleCounter, Spring.Services.Tests" serviceUrl="tcp://localhost:8005/RemotedSaoSingletonCounter"/> <!-- Old fashion way without remoting config parser... --> <!-- <object id="remoteCounter" type="Spring.Remoting.SaoFactoryObject, Spring.Services"> <property name="ServiceInterface" value="Spring.Remoting.ISimpleCounter, Spring.Services.Tests" /> <property name="ServiceUrl" value="tcp://localhost:8005/RemotedSaoSingletonCounter" /> </object> --> <object id="remoteCounter" type="Spring.Aop.Framework.ProxyFactoryObject, Spring.Aop"> <property name="target" ref="remoteSaoSingletonCounter"/> <property name="interceptorNames"> <list> <value>countAdvisor</value> </list> </property> <property name="ProxyInterfaces"> <list> <value>Spring.Remoting.ISimpleCounter, Spring.Services.Tests</value> </list> </property> </object> <!-- NOTE - CAN NOT USE AUTO PROXY CREATOR FOR SAO SINCE CAN'T QUERY USING REFLECTION FOR IMPLEMENTED INTERFACES ON TRANSPARENT PROXY --> <!-- <object id="autoProxyCreator" type="Spring.Aop.Framework.AutoProxy.ObjectNameAutoProxyCreator, Spring.Aop"> <property name="ObjectNames"> <list> <value>remoteCounter</value> </list> </property> <property name="interceptorNames"> <list> <value>countAdvisor</value> </list> </property> </object> --> <object id="countAdvisor" type="Spring.Aop.Support.RegularExpressionMethodPointcutAdvisor, Spring.Aop"> <property name="pattern" value=".*Count.*"/> <property name="advice" ref="countingBeforeAdvice"/> </object> <object id="countingBeforeAdvice" type="Spring.Aop.Framework.CountingBeforeAdvice"/> </objects> |
From: Mark P. <mar...@us...> - 2007-09-07 01:59:59
|
Update of /cvsroot/springnet/Spring.Net/test/Spring/Spring.Services.Tests/Remoting In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv836/Remoting Modified Files: SaoFactoryObjectTests.cs Log Message: Add test for sao factorry with aop Index: SaoFactoryObjectTests.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/test/Spring/Spring.Services.Tests/Remoting/SaoFactoryObjectTests.cs,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** SaoFactoryObjectTests.cs 20 Feb 2007 19:40:19 -0000 1.10 --- SaoFactoryObjectTests.cs 7 Sep 2007 01:59:53 -0000 1.11 *************** *** 25,28 **** --- 25,29 ---- using System.Runtime.Remoting.Lifetime; using NUnit.Framework; + using Spring.Aop.Framework; using Spring.Context; using Spring.Context.Support; *************** *** 94,97 **** --- 95,126 ---- } + [Test] + public void GetSaoWithSingletonModeAndAop() + { + IApplicationContext ctx = new XmlApplicationContext("assembly://Spring.Services.Tests/Spring.Data.Spring.Remoting/saoSingleton-aop.xml"); + ContextRegistry.RegisterContext(ctx); + + //object saoFactory = ctx.GetObject("&remoteCounter"); + //Assert.IsNotNull(saoFactory); + + object obj = ctx.GetObject("remoteCounter"); + + Assert.IsNotNull(obj, "Object is null even though a object has been exported."); + Assert.IsTrue((obj is ISimpleCounter), "Object should implement 'ISimpleCounter' interface."); + Assert.IsTrue(AopUtils.IsAopProxy(obj)); + + MethodCounter aopCounter = ctx.GetObject("countingBeforeAdvice") as MethodCounter; + Assert.IsNotNull(aopCounter); + + int aopCount = aopCounter.GetCalls("Count"); + Assert.AreEqual(0, aopCount); + + ISimpleCounter sc = (ISimpleCounter)obj; + Assert.AreEqual(1, sc.Counter, "Remote object hasn't been activated by the server."); + sc.Count(); + Assert.AreEqual(2, sc.Counter, "Remote object doesn't work in a 'Singleton' mode."); + Assert.AreEqual(1, aopCounter.GetCalls("Count")); + } + [Test] public void GetSaoWithSingleCallMode() |
From: Mark P. <mar...@us...> - 2007-09-07 01:59:59
|
Update of /cvsroot/springnet/Spring.Net/test/Spring/Spring.Services.Tests In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv836 Modified Files: Spring.Services.Tests.2005.csproj Log Message: Add test for sao factorry with aop Index: Spring.Services.Tests.2005.csproj =================================================================== RCS file: /cvsroot/springnet/Spring.Net/test/Spring/Spring.Services.Tests/Spring.Services.Tests.2005.csproj,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** Spring.Services.Tests.2005.csproj 30 May 2007 22:39:28 -0000 1.19 --- Spring.Services.Tests.2005.csproj 7 Sep 2007 01:59:53 -0000 1.20 *************** *** 155,158 **** --- 155,162 ---- </ItemGroup> <ItemGroup> + <ProjectReference Include="..\..\..\src\Spring\Spring.Aop\Spring.Aop.2005.csproj"> + <Project>{3A3A4E65-45A6-4B20-B460-0BEDC302C02C}</Project> + <Name>Spring.Aop.2005</Name> + </ProjectReference> <ProjectReference Include="..\..\..\src\Spring\Spring.Core\Spring.Core.2005.csproj"> <Project>{710961A3-0DF4-49E4-A26E-F5B9C044AC84}</Project> *************** *** 163,166 **** --- 167,174 ---- <Name>Spring.Services.2005</Name> </ProjectReference> + <ProjectReference Include="..\Spring.Aop.Tests\Spring.Aop.Tests.2005.csproj"> + <Project>{2111596A-0327-4C9D-8919-294FBD988A23}</Project> + <Name>Spring.Aop.Tests.2005</Name> + </ProjectReference> <ProjectReference Include="..\Spring.Core.Tests\Spring.Core.Tests.2005.csproj"> <Project>{44B16BAA-6DF8-447C-9D7F-3AD3D854D904}</Project> *************** *** 171,174 **** --- 179,185 ---- <EmbeddedResource Include="Data\Spring\Web\Services\configurableFactory.xml" /> </ItemGroup> + <ItemGroup> + <EmbeddedResource Include="Data\Spring\Remoting\saoSingleton-aop.xml" /> + </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <PropertyGroup> |
From: Mark P. <mar...@us...> - 2007-09-07 01:55:05
|
Update of /cvsroot/springnet/Spring.Net/test/Spring/Spring.Core.Tests/Expressions In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv31381/Expressions Modified Files: ExpressionEvaluatorTests.cs Log Message: Add SOAP serialization tests to ExpressionEvaluatorTests Index: ExpressionEvaluatorTests.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/test/Spring/Spring.Core.Tests/Expressions/ExpressionEvaluatorTests.cs,v retrieving revision 1.67 retrieving revision 1.68 diff -C2 -d -r1.67 -r1.68 *** ExpressionEvaluatorTests.cs 26 Aug 2007 02:00:00 -0000 1.67 --- ExpressionEvaluatorTests.cs 7 Sep 2007 01:54:59 -0000 1.68 *************** *** 30,33 **** --- 30,35 ---- using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Binary; + using System.Runtime.Serialization.Formatters.Soap; + using System.Text; using System.Threading; using System.Web.Services; *************** *** 189,192 **** --- 191,195 ---- // serialize and deserialize it exp = SerializeDeserializeExpression(exp); + exp = SerializeDeserializeExpressionUsingSoap(exp); } } *************** *** 245,248 **** --- 248,272 ---- } + private static IExpression SerializeDeserializeExpressionUsingSoap(IExpression exp) + { + string xml; + SoapFormatter formatter = new SoapFormatter(); + using (MemoryStream ms = new MemoryStream()) + { + formatter.Serialize(ms, exp); + ms.Position = 0; + byte[] b = new byte[ms.Length]; + ms.Read(b, 0, (int)ms.Length); + xml = Encoding.ASCII.GetString(b, 0, b.Length); + } + using (StringReader sr = new StringReader(xml)) + { + byte[] b = Encoding.ASCII.GetBytes(xml); + Stream stream = new MemoryStream(b); + exp = (IExpression) formatter.Deserialize(stream); + } + return exp; + } + #endregion Serialization Tests *************** *** 758,761 **** --- 782,786 ---- } + /// <summary> /// Try to set 'this' variable *************** *** 2850,2852 **** --- 2875,2879 ---- #endregion // Shadowing Test Helper Classes + + } |
From: Mark P. <mar...@us...> - 2007-09-07 01:55:02
|
Update of /cvsroot/springnet/Spring.Net/test/Spring/Spring.Core.Tests In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv31381 Modified Files: Spring.Core.Tests.2005.csproj Log Message: Add SOAP serialization tests to ExpressionEvaluatorTests Index: Spring.Core.Tests.2005.csproj =================================================================== RCS file: /cvsroot/springnet/Spring.Net/test/Spring/Spring.Core.Tests/Spring.Core.Tests.2005.csproj,v retrieving revision 1.64 retrieving revision 1.65 diff -C2 -d -r1.64 -r1.65 *** Spring.Core.Tests.2005.csproj 29 Aug 2007 17:29:41 -0000 1.64 --- Spring.Core.Tests.2005.csproj 7 Sep 2007 01:54:59 -0000 1.65 *************** *** 105,108 **** --- 105,109 ---- </Reference> <Reference Include="System.EnterpriseServices" /> + <Reference Include="System.Runtime.Serialization.Formatters.Soap" /> <Reference Include="System.Web" /> <Reference Include="System.Web.Services" /> |
From: Mark P. <mar...@us...> - 2007-09-07 01:53:16
|
Update of /cvsroot/springnet/Spring.Net/test/Spring/Spring.Aop.Tests/Data/Spring/Aop/Framework/AutoProxy In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv30985 Modified Files: objectNameAutoProxyCreatorTests.xml Log Message: SPRNET-720 - Change ObjectNameAutoProxyCreator default behavior to proxy the product of a IFactoryObject and not the IFactoryObject itself SPRNET-721 - Intercept all target interfaces when using an introduction with ObjectNameAutoProxyCreator Index: objectNameAutoProxyCreatorTests.xml =================================================================== RCS file: /cvsroot/springnet/Spring.Net/test/Spring/Spring.Aop.Tests/Data/Spring/Aop/Framework/AutoProxy/objectNameAutoProxyCreatorTests.xml,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** objectNameAutoProxyCreatorTests.xml 28 Feb 2007 20:27:43 -0000 1.3 --- objectNameAutoProxyCreatorTests.xml 7 Sep 2007 01:53:12 -0000 1.4 *************** *** 4,7 **** --- 4,21 ---- xsi:schemaLocation="http://www.springframework.net http://www.springframework.net/xsd/spring-objects.xsd"> + <object id="FrozenProxyCreator" type="Spring.Aop.Framework.AutoProxy.ObjectNameAutoProxyCreator, Spring.Aop"> + <property name="ObjectNames"> + <list> + <value>frozen</value> + </list> + </property> + <property name="InterceptorNames"> + <list> + <value>nopInterceptor</value> + </list> + </property> + <property name="IsFrozen" value="true"/> + </object> + <object id="ProxyCreator" type="Spring.Aop.Framework.AutoProxy.ObjectNameAutoProxyCreator, Spring.Aop"> <property name="ObjectNames"> *************** *** 10,14 **** <value>testObject</value> <value>myTestObj*</value> ! <value>*FamilyMember</value> </list> </property> --- 24,42 ---- <value>testObject</value> <value>myTestObj*</value> ! <value>*FamilyMember</value> ! <value>doubleProxy</value> ! </list> ! </property> ! <property name="InterceptorNames"> ! <list> ! <value>nopInterceptor</value> ! </list> ! </property> ! </object> ! ! <object id="FactoryProxyCreator" type="Spring.Aop.Framework.AutoProxy.ObjectNameAutoProxyCreator, Spring.Aop"> ! <property name="ObjectNames"> ! <list> ! <value>factoryObject</value> </list> </property> *************** *** 20,23 **** --- 48,98 ---- </object> + <object id="DoubleFactoryProxyCreator" type="Spring.Aop.Framework.AutoProxy.ObjectNameAutoProxyCreator, Spring.Aop"> + <property name="ObjectNames"> + <list> + <value>doubleProxy</value> + </list> + </property> + <property name="InterceptorNames"> + <list> + <value>nopInterceptor</value> + </list> + </property> + </object> + + <object id="DecoratorFactoryProxyCreator" type="Spring.Aop.Framework.AutoProxy.ObjectNameAutoProxyCreator, Spring.Aop"> + <property name="ObjectNames"> + <list> + <value>decoratorProx*</value> + </list> + </property> + <property name="ProxyTargetType" value="true"/> + <property name="InterceptorNames"> + <list> + <value>nopInterceptor</value> + <value>countingBeforeAdvice</value> + </list> + </property> + </object> + + + <object id="IntroductionBeanNameProxyCreator" type="Spring.Aop.Framework.AutoProxy.ObjectNameAutoProxyCreator, Spring.Aop"> + <property name="ObjectNames"> + <list> + <value>*introductionUsingDecorator</value> + </list> + </property> + <property name="InterceptorNames"> + <list> + <value>introductionNopInterceptor</value> + <value>isModifiedAdvisor</value> + </list> + </property> + </object> + + + <object id="factoryObject" type="Spring.Aop.Framework.AutoProxy.CreatesTestObject, Spring.Aop.Tests"> + + </object> <object id="noproxy" type="Spring.Objects.TestObject, Spring.Core.Tests"> *************** *** 41,44 **** --- 116,153 ---- </object> + <object id="doubleProxy" type="Spring.Objects.TestObject, Spring.Core.Tests"> + <property name="Name" value="doubleProxy"/> + </object> + + <object id="decoratorProxy" type="Spring.Objects.TestObject, Spring.Core.Tests"> + <property name="Name" value="decoratorProxy"/> + </object> + + <object id="frozen" type="Spring.Objects.TestObject, Spring.Core.Tests"> + <property name="Name" value="frozen"/> + </object> + + + <object id="introductionUsingDecorator" type="Spring.Objects.TestObject, Spring.Core.Tests"> + <property name="Name" value="introductionUsingDecorator"/> + </object> + + <object id="second-introductionUsingDecorator" type="Spring.Objects.TestObject, Spring.Core.Tests"> + <property name="Name" value="second-introductionUsingDecorator"/> + </object> + + <object id="nopInterceptor" type="Spring.Aop.Interceptor.NopInterceptor, Spring.Aop.Tests"/> + + <object id="countingBeforeAdvice" type="Spring.Aop.Framework.CountingBeforeAdvice, Spring.Aop.Tests"/> + + <!-- + <object id="factory-introductionUsingDecorator" type="Spring.Aop.Framework.AutoProxy.CreatesTestObject, Spring.Aop.Tests"/> + --> + + <object id="isModifiedAdvisor" type="Spring.Aop.Framework.IsModifiedAdvisor, Spring.Aop.Tests"/> + + <object id="introductionNopInterceptor" type="Spring.Aop.Interceptor.NopInterceptor, Spring.Aop.Tests"/> + + </objects> \ No newline at end of file |
From: Mark P. <mar...@us...> - 2007-09-07 01:53:09
|
Update of /cvsroot/springnet/Spring.Net/test/Spring/Spring.Aop.Tests/Aop/Framework/AutoProxy In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv30573/Aop/Framework/AutoProxy Modified Files: AdvisorAutoProxyCreatorCircularReferencesTests.cs ObjectNameAutoProxyCreatorTests.cs advisorAutoProxyCreatorCircularReferencesTests.xml Added Files: CreatesTestObject.cs Log Message: SPRNET-720 - Change ObjectNameAutoProxyCreator default behavior to proxy the product of a IFactoryObject and not the IFactoryObject itself SPRNET-721 - Intercept all target interfaces when using an introduction with ObjectNameAutoProxyCreator Index: AdvisorAutoProxyCreatorCircularReferencesTests.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/test/Spring/Spring.Aop.Tests/Aop/Framework/AutoProxy/AdvisorAutoProxyCreatorCircularReferencesTests.cs,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** AdvisorAutoProxyCreatorCircularReferencesTests.cs 1 Aug 2007 17:56:25 -0000 1.3 --- AdvisorAutoProxyCreatorCircularReferencesTests.cs 7 Sep 2007 01:53:01 -0000 1.4 *************** *** 50,58 **** Assert.IsFalse(AopUtils.IsAopProxy(context.GetObject("aapc"))); Assert.IsFalse(AopUtils.IsAopProxy(context.GetObject("testAdvisor"))); ! Assert.IsFalse(AopUtils.IsAopProxy(context.GetObject("testObjectFactory"))); Assert.IsFalse(AopUtils.IsAopProxy(context.GetObject("someOtherObject"))); // this one is completely independent Assert.IsTrue(AopUtils.IsAopProxy(context.GetObject("independentObject"))); } } --- 50,61 ---- Assert.IsFalse(AopUtils.IsAopProxy(context.GetObject("aapc"))); Assert.IsFalse(AopUtils.IsAopProxy(context.GetObject("testAdvisor"))); ! Assert.IsFalse(AopUtils.IsAopProxy(context.GetObject("&testObjectFactory"))); Assert.IsFalse(AopUtils.IsAopProxy(context.GetObject("someOtherObject"))); // this one is completely independent Assert.IsTrue(AopUtils.IsAopProxy(context.GetObject("independentObject"))); + + // products of the factory created at runtime should be proxied + Assert.IsTrue(AopUtils.IsAopProxy(context.GetObject("testObjectFactory"))); } } --- NEW FILE: CreatesTestObject.cs --- #region License /* * Copyright 2002-2007 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; using Spring.Objects; using Spring.Objects.Factory; namespace Spring.Aop.Framework.AutoProxy { /// <summary> /// This is simple implementation of IFactoryObject that creates a TestObject. /// </summary> /// <author>Mark Pollack</author> /// <version>$Id: CreatesTestObject.cs,v 1.1 2007/09/07 01:53:02 markpollack Exp $</version> public class CreatesTestObject : IFactoryObject, IInitializingObject { private bool initialized = false; private ITestObject testObject; public CreatesTestObject() { } public object GetObject() { // return product only, if factory has been fully initialized! if (!initialized) { return null; } else { return testObject; } } public Type ObjectType { get { // return type only if we are ready to deliver our product! if (!initialized) { return null; } else { return typeof(ITestObject); } } } public bool IsSingleton { get { return true; } } public void AfterPropertiesSet() { testObject = new TestObject(); initialized = true; } } } Index: advisorAutoProxyCreatorCircularReferencesTests.xml =================================================================== RCS file: /cvsroot/springnet/Spring.Net/test/Spring/Spring.Aop.Tests/Aop/Framework/AutoProxy/advisorAutoProxyCreatorCircularReferencesTests.xml,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** advisorAutoProxyCreatorCircularReferencesTests.xml 21 Jul 2007 11:28:05 -0000 1.2 --- advisorAutoProxyCreatorCircularReferencesTests.xml 7 Sep 2007 01:53:01 -0000 1.3 *************** *** 29,32 **** --- 29,34 ---- <object id="independentObject" type="Spring.Aop.Framework.AutoProxy.IndependentObject, Spring.Aop.Tests" /> + + <!-- match everything --> <object id="aapc" type="Spring.Aop.Framework.AutoProxy.DefaultAdvisorAutoProxyCreator, Spring.Aop"/> Index: ObjectNameAutoProxyCreatorTests.cs =================================================================== RCS file: /cvsroot/springnet/Spring.Net/test/Spring/Spring.Aop.Tests/Aop/Framework/AutoProxy/ObjectNameAutoProxyCreatorTests.cs,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** ObjectNameAutoProxyCreatorTests.cs 1 Aug 2007 17:56:25 -0000 1.5 --- ObjectNameAutoProxyCreatorTests.cs 7 Sep 2007 01:53:01 -0000 1.6 *************** *** 22,26 **** using NUnit.Framework; - using Spring.Aop.Framework.DynamicProxy; using Spring.Aop.Interceptor; using Spring.Context; --- 22,25 ---- *************** *** 64,76 **** { ITestObject testObject = (ITestObject) ctx.GetObject("testObject"); ! ProxyAssertions(testObject); Assert.AreEqual("SimpleTestObject", testObject.Name); } [Test] public void ProxyWithWildcardMatchSuffix() { ITestObject testObject = (ITestObject) ctx.GetObject("SmithFamilyMember"); ! ProxyAssertions(testObject); Assert.AreEqual("John Smith", testObject.Name); } --- 63,83 ---- { ITestObject testObject = (ITestObject) ctx.GetObject("testObject"); ! ProxyAssertions(testObject, 1); Assert.AreEqual("SimpleTestObject", testObject.Name); } [Test] + public void ProxyWithDoubleProxying() + { + ITestObject testObject = (ITestObject)ctx.GetObject("doubleProxy"); + ProxyAssertions(testObject, 2); + Assert.AreEqual("doubleProxy", testObject.Name); + } + + [Test] public void ProxyWithWildcardMatchSuffix() { ITestObject testObject = (ITestObject) ctx.GetObject("SmithFamilyMember"); ! ProxyAssertions(testObject, 1); Assert.AreEqual("John Smith", testObject.Name); } *************** *** 79,96 **** public void ProxyWithTwoWildcardsMatch() { ! ITestObject testObject = (ITestObject)ctx.GetObject("twoWildcardsTestObject"); ! ProxyAssertions(testObject); Assert.AreEqual("Damjan Tomic", testObject.Name); } ! private void ProxyAssertions(ITestObject testObject) { NopInterceptor nop = (NopInterceptor) ctx.GetObject("nopInterceptor"); Assert.AreEqual(0, nop.Count); ! Assert.IsTrue(AopUtils.IsAopProxy(testObject), testObject + " is not an AOP Proxy"); int age = 5; testObject.Age = age; Assert.AreEqual(age, testObject.Age); ! Assert.AreEqual(2, nop.Count); } } --- 86,161 ---- public void ProxyWithTwoWildcardsMatch() { ! ITestObject testObject = (ITestObject)ctx.GetObject("twoWildcardsTestObject"); ! ProxyAssertions(testObject, 1); Assert.AreEqual("Damjan Tomic", testObject.Name); } ! [Test] ! public void AppliesToCreatedObjectsNotFactoryObject() ! { ! ITestObject testObject = (ITestObject) ctx.GetObject("factoryObject"); ! ProxyAssertions(testObject, 1); ! } ! ! [Test] ! public void DecoratorProxyWithWildcardMatch() ! { ! ITestObject testObject = (ITestObject)ctx.GetObject("decoratorProxy"); ! DecoratorProxyAssertions(testObject); ! Assert.AreEqual("decoratorProxy", testObject.Name); ! } ! ! [Test] ! public void FrozenProxy() ! { ! ITestObject testObject = (ITestObject)ctx.GetObject("frozen"); ! Assert.IsTrue( ((IAdvised)testObject).IsFrozen); ! } ! ! [Test] ! public void Introduction() ! { ! object obj = ctx.GetObject("introductionUsingDecorator"); ! Assert.IsNotNull(obj as IIsModified); ! ITestObject testObject = (ITestObject) obj; ! NopInterceptor nop = (NopInterceptor)ctx.GetObject("introductionNopInterceptor"); ! Assert.AreEqual(0, nop.Count); ! Assert.IsTrue(AopUtils.IsCompositionAopProxy(testObject), testObject + " is not an Composition AOP Proxy"); ! int age = 5; ! testObject.Age = age; ! Assert.AreEqual(age, testObject.Age); ! Assert.IsNotNull(testObject as IIsModified); ! Assert.IsTrue(((IIsModified)testObject).IsModified); ! Assert.AreEqual(3, nop.Count); ! Assert.AreEqual("introductionUsingDecorator", testObject.Name); ! } ! ! ! private void ProxyAssertions(ITestObject testObject, int nopInterceptorCount) { NopInterceptor nop = (NopInterceptor) ctx.GetObject("nopInterceptor"); Assert.AreEqual(0, nop.Count); ! Assert.IsTrue(AopUtils.IsCompositionAopProxy(testObject), testObject + " is not an AOP Proxy"); int age = 5; testObject.Age = age; Assert.AreEqual(age, testObject.Age); ! Assert.AreEqual(2 * nopInterceptorCount, nop.Count); ! } ! ! private void DecoratorProxyAssertions(ITestObject testObject) ! { ! CountingBeforeAdvice cba = (CountingBeforeAdvice) ctx.GetObject("countingBeforeAdvice"); ! NopInterceptor nop = (NopInterceptor)ctx.GetObject("nopInterceptor"); ! Assert.AreEqual(0, cba.GetCalls()); ! Assert.AreEqual(0, nop.Count); ! Assert.IsTrue(AopUtils.IsDecoratorAopProxy(testObject), testObject + " is not an AOP Proxy"); ! //extra advice calls are due to test IsDecoratorAopProxy and call to .GetType in impl ! Assert.AreEqual(1, nop.Count); ! Assert.AreEqual(1, cba.GetCalls()); ! int age = 5; ! testObject.Age = age; ! Assert.AreEqual(age, testObject.Age); ! Assert.AreEqual(3, nop.Count); ! Assert.AreEqual(3, cba.GetCalls()); } } |
From: Mark P. <mar...@us...> - 2007-09-07 01:53:07
|
Update of /cvsroot/springnet/Spring.Net/test/Spring/Spring.Aop.Tests In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv30573 Modified Files: Spring.Aop.Tests.2005.csproj Log Message: SPRNET-720 - Change ObjectNameAutoProxyCreator default behavior to proxy the product of a IFactoryObject and not the IFactoryObject itself SPRNET-721 - Intercept all target interfaces when using an introduction with ObjectNameAutoProxyCreator Index: Spring.Aop.Tests.2005.csproj =================================================================== RCS file: /cvsroot/springnet/Spring.Net/test/Spring/Spring.Aop.Tests/Spring.Aop.Tests.2005.csproj,v retrieving revision 1.28 retrieving revision 1.29 diff -C2 -d -r1.28 -r1.29 *** Spring.Aop.Tests.2005.csproj 8 Aug 2007 17:48:31 -0000 1.28 --- Spring.Aop.Tests.2005.csproj 7 Sep 2007 01:53:02 -0000 1.29 *************** *** 130,133 **** --- 130,134 ---- <Compile Include="Aop\Framework\AutoProxy\OrderedLogicalThreadContextCheckAdvisor.cs" /> <Compile Include="Aop\Framework\AbstractMethodInvocationTests.cs" /> + <Compile Include="Aop\Framework\AutoProxy\CreatesTestObject.cs" /> <Compile Include="Aop\Framework\DynamicMethodInvocationTests.cs" /> <Compile Include="Aop\Framework\CountingAfterReturningAdvice.cs" /> *************** *** 147,150 **** --- 148,153 ---- <SubType>Code</SubType> </Compile> + <Compile Include="Aop\Framework\IIsModified.cs" /> + <Compile Include="Aop\Framework\IsModifiedMixin.cs" /> <Compile Include="Aop\Framework\ITimeStamped.cs"> <SubType>Code</SubType> |
From: Mark P. <mar...@us...> - 2007-09-07 01:53:07
|
Update of /cvsroot/springnet/Spring.Net/test/Spring/Spring.Aop.Tests/Aop/Framework In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv30573/Aop/Framework Added Files: IIsModified.cs IsModifiedMixin.cs Log Message: SPRNET-720 - Change ObjectNameAutoProxyCreator default behavior to proxy the product of a IFactoryObject and not the IFactoryObject itself SPRNET-721 - Intercept all target interfaces when using an introduction with ObjectNameAutoProxyCreator --- NEW FILE: IIsModified.cs --- (This appears to be a binary file; contents omitted.) --- NEW FILE: IsModifiedMixin.cs --- (This appears to be a binary file; contents omitted.) |