From 2a1c8d80336a93bdf5b89008917947b4ca912f27 Mon Sep 17 00:00:00 2001 From: dakkar Date: Sun, 11 Jul 2010 22:44:16 +0100 Subject: test for TT::Handle --- lib/Thread/Task.pm | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) (limited to 'lib/Thread/Task.pm') diff --git a/lib/Thread/Task.pm b/lib/Thread/Task.pm index 35976c6..86a1387 100644 --- a/lib/Thread/Task.pm +++ b/lib/Thread/Task.pm @@ -2,8 +2,9 @@ use 5.008003; use MooseX::Declare; class Thread::Task { - use MooseX::Types::Moose qw(ClassName Str Int); - use Thread::Task::Types qw(Handle_T Task_T); + use MooseX::Types::Moose qw(ClassName Str Int HashRef); + use Thread::Task::Types qw(Handle_T Task_T TaskRev_T); + use Moose::Util::TypeConstraints; require Storable; @@ -18,9 +19,15 @@ class Thread::Task { is => 'ro', weak_ref => 1, required => 0, + init_arg => 'owner', predicate => '_has_owner_taskrev', ); + coerce TaskRev_T, from Task_T, + via { + $_->task_revision; + }; + has callback => ( isa => Str, is => 'ro', @@ -36,16 +43,7 @@ class Thread::Task { clearer => 'clear_handle', ); - around BUILDARGS(ClassName $class: @rest) { - my $params = $class->$orig(@rest); - - if (exists $params->{owner}) { - $params->{_owner_taskrev} = - delete($params->{owner})->task_revision; - } - } - - method BUILD() { + method BUILD(HashRef $params) { if ($self->_has_owner_taskrev) { my $owner = $self->owner; my $callback = $self->callback; @@ -91,12 +89,12 @@ class Thread::Task { } method from_string(ClassName $class: Str $serialization) { - my $self=Storable::nthaw($serialization); - my $self_class=$self->meta->name; + my $new_self=Storable::thaw($serialization); + my $self_class=$new_self->meta->name; unless ($self_class eq $class) { die "Deserialized as $self_class instead of $class"; } - return $self; + return $new_self; } method _update(Task_T $new_task) { -- cgit v1.2.3