diff options
author | groditi <groditi@03d0b0b2-0e1a-0410-a411-fdb2f4bd65d7> | 2008-01-24 22:14:50 +0000 |
---|---|---|
committer | groditi <groditi@03d0b0b2-0e1a-0410-a411-fdb2f4bd65d7> | 2008-01-24 22:14:50 +0000 |
commit | 32afff5dca9e4e124f35b72c05a44a7ca4c1399d (patch) | |
tree | ebb48b782b0b6440440fc759168859cc8b2675c5 | |
parent | 5ee24b95cec49b29e5508a91d7ae5815cb535ab0 (diff) | |
download | reaction-32afff5dca9e4e124f35b72c05a44a7ca4c1399d.tar.gz reaction-32afff5dca9e4e124f35b72c05a44a7ca4c1399d.zip |
Moose::Role fixed for new moose
-rw-r--r-- | lib/Reaction/InterfaceModel/Reflector/DBIC.pm | 4 | ||||
-rw-r--r-- | lib/Reaction/Role.pm | 30 |
2 files changed, 27 insertions, 7 deletions
diff --git a/lib/Reaction/InterfaceModel/Reflector/DBIC.pm b/lib/Reaction/InterfaceModel/Reflector/DBIC.pm index e428a2d..1c1feeb 100644 --- a/lib/Reaction/InterfaceModel/Reflector/DBIC.pm +++ b/lib/Reaction/InterfaceModel/Reflector/DBIC.pm @@ -735,7 +735,7 @@ class DBIC, which { # attributes => qr//, #DWIM, treated as [qr//] # attributes => [{...}] #DWIM, treat as [qr/./, {...} ] # attributes => [[-exclude => ...]] #DWIM, treat as [qr/./, [-exclude => ...]] - my $attr_haystack = [ map {$_->name} $object->meta->parameter_attributes ]; + my $attr_haystack = [ map { $_->name } $object->meta->parameter_attributes ]; if(!defined $attr_rules){ $attr_rules = [qr/./]; } elsif( (!ref $attr_rules && $attr_rules) || (ref $attr_rules eq 'Regexp') ){ @@ -766,6 +766,8 @@ class DBIC, which { my $o_attr = $o_meta->find_attribute_by_name($attr_name); my $s_attr_name = $o_attr->orig_attr_name || $attr_name; my $s_attr = $s_meta->find_attribute_by_name($s_attr_name); + confess("Unable to find attribute for '${s_attr_name}' via '${source}'") + unless defined $s_attr; next unless $s_attr->get_write_method; #only rw attributes! my $attr_params = $self->parameters_for_source_object_action_attribute diff --git a/lib/Reaction/Role.pm b/lib/Reaction/Role.pm index ea5b948..13815db 100644 --- a/lib/Reaction/Role.pm +++ b/lib/Reaction/Role.pm @@ -4,10 +4,28 @@ use Moose::Role (); use Reaction::ClassExporter; use Reaction::Class; use Moose::Meta::Class; + +use Sub::Name 'subname'; +use Scalar::Util qw/blessed reftype/; + #TODO: review for Reaction::Object switch / Reaction::Meta::Class -*Moose::Meta::Role::add_method = sub { - Moose::Meta::Class->can("add_method")->(@_); -}; +#lifted from class MOP as a temp fix (groditi) +*Moose::Meta::Role::add_method + = subname 'Moose::Meta::Role::add_method' => sub { + my ($self, $method_name, $code) = @_; + (defined $method_name && $method_name) + || confess "You must define a method name"; + + confess "Your code block must be a CODE reference" + unless 'CODE' eq reftype($code); + + my $method = $self->method_metaclass->wrap($code); + $self->get_method_map->{$method_name} = $method; + + my $full_name = ($self->name . '::' . $method_name); + $self->add_package_symbol("&${method_name}" => subname $full_name => $code); + }; + class Role which { @@ -18,9 +36,9 @@ class Role which { $exports{role} = sub { $self->do_role_sub($package, @_); }; return %exports; }; - + override next_import_package => sub { 'Moose::Role' }; - + override default_base => sub { () }; implements do_role_sub => as { @@ -31,7 +49,7 @@ class Role which { }; }; - + 1; =head1 NAME |