That's great :). Looking forward to it.

On Mar 16, 7:36 pm, "Henrik Feldt" <[email protected]> wrote:
> Hello Moony,
>
> Thank you for noticing this. I have fixed the issue and pushed the changes
> to git.
>
> As bad as it sounds, I'm really busy at the moment but will make a very much
> official release shortly... :)
>
> Cheers,
> Henrik
>
> -----Original Message-----
> From: [email protected]
>
> [mailto:[email protected]] On Behalf Of MoonStorm
> Sent: den 16 mars 2010 15:57
> To: Castle Project Users
> Subject: Problem with ATM in the ChildTransaction
>
> Hi Henrik,
>
> I spawned another discussion since this issue is not related to the
> one described in the other thread we used to talk in. I downloaded
> from the GIT the latest source of transactions and ATM and I was
> playing around with it. I found a problem in the implementation of the
> ChildTransaction that would always cause a rollback of the entire
> scope. The _CanCommit remains false throughout its lifecycle, making
> the IsRollbackOnlySet property on base to always return true for a
> transaction of this type.
>
> I have created a new test that would trap this problem but it could
> require some changes in the test project. First of all, I don't see
> any point in stubing the transaction manager in the ATM tests,
> basically hiding this type of problems. So I changed the
> MockTransactionManager to derive from the DefaultTransactionManager
> and, with a couple of event hookings from the constructor, to expose
> the same kind of information as the old one (so you don't need to
> change the tests).
>
>         private void SetupStatistics()
>         {
>             base.TransactionCreated += (sender, ev) => { _transactions+
> +;};
>             base.ChildTransactionCreated += (sender, ev) =>
> { _transactions++; };
>             base.TransactionCompleted += (sender, ev) =>
> { _committedCount++; };
>             base.TransactionRolledBack += (sender, ev) =>
> { _rolledBackCount++; };
>         }
>
> After this change, the following test would trap this kind of problem:
>
>         [Test]
>         public void TestChildTransactions()
>         {
>             WindsorContainer container = new WindsorContainer();
>
>             container.AddFacility("transactionmanagement", new
> TransactionFacility());
>
>             container.AddComponent("transactionmanager",
> typeof(ITransactionManager), typeof(MockTransactionManager));
>
>             container.AddComponent("mycomp", typeof(CustomerService));
>             container.AddComponent("delegatecomp", typeof
> (ProxyService));
>
>             ProxyService serv =
> (ProxyService)container.Resolve("delegatecomp");
>
>             serv.DelegateInsert("John","Home Address");
>
>             MockTransactionManager transactionManager =
> (MockTransactionManager)
>
> container["transactionmanager"];
>
>             Assert.AreEqual(2, transactionManager.TransactionCount);
>             Assert.AreEqual(0, transactionManager.RolledBackCount);
>         }
>
> The test class I used has the following form:
>
>    [Transactional]
>     public class ProxyService
>     {
>         private readonly CustomerService customerService;
>         public ProxyService(CustomerService customerService)
>         {
>             this.customerService = customerService;
>         }
>
>         [Transaction(TransactionMode.Requires)]
>         public virtual void DelegateInsert(string name, string
> address)
>         {
>             this.customerService.Insert(name, address);
>         }
>     }
>
> --
> You received this message because you are subscribed to the Google Groups
> "Castle Project Users" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group 
> athttp://groups.google.com/group/castle-project-users?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"Castle Project Users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/castle-project-users?hl=en.

Reply via email to