aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authoredenc <edenc@03d0b0b2-0e1a-0410-a411-fdb2f4bd65d7>2009-02-19 02:17:56 +0000
committeredenc <edenc@03d0b0b2-0e1a-0410-a411-fdb2f4bd65d7>2009-02-19 02:17:56 +0000
commit160cad9e87ded8dc4146fd1aa82189496afe738c (patch)
tree276925222f33ae7e1fd48f94f05dd66b075f55f2 /lib
parentcdbd6694eaa03739db589c52e7d062b7f2e30287 (diff)
downloadreaction-160cad9e87ded8dc4146fd1aa82189496afe738c.tar.gz
reaction-160cad9e87ded8dc4146fd1aa82189496afe738c.zip
added debug messages to IM::Action
Diffstat (limited to 'lib')
-rw-r--r--lib/Reaction/InterfaceModel/Action.pm13
1 files changed, 11 insertions, 2 deletions
diff --git a/lib/Reaction/InterfaceModel/Action.pm b/lib/Reaction/InterfaceModel/Action.pm
index 06ab55a..558ac03 100644
--- a/lib/Reaction/InterfaceModel/Action.pm
+++ b/lib/Reaction/InterfaceModel/Action.pm
@@ -8,6 +8,8 @@ use Reaction::Class;
use namespace::clean -except => [ qw(meta) ];
+sub _debug { $ENV{REACTION_IM_ACTION_DEBUG} }
+
has error_message => (
is => 'rw',
isa => 'Str',
@@ -37,6 +39,7 @@ sub parameter_hashref {
foreach my $attr ($self->parameter_attributes) {
my $reader = $attr->get_read_method;
my $predicate = $attr->get_predicate_method;
+ warn "${\$attr->name} has default: ${\$attr->has_default}";
next if defined($predicate) && !$self->$predicate
&& ($attr->is_lazy_fail || !$attr->has_default);
$params{$attr->name} = $self->$reader;
@@ -51,12 +54,18 @@ sub can_apply {
if ($self->attribute_is_required($attr)) {
confess "No predicate for required attribute ${\$attr->name} for ${self}"
unless $predicate;
- return 0 if !$self->$predicate && ($attr->is_lazy_fail || !$attr->has_default);
+ if( !$self->$predicate && ($attr->is_lazy_fail || !$attr->has_default) ) {
+ warn "${\$attr->name} is required but hasn't been set" if _debug();
+ return 0;
+ }
}
if ($attr->has_valid_values) {
unless ($predicate && !($self->$predicate)) {
my $reader = $attr->get_read_method;
- return 0 unless $attr->check_valid_value($self, $self->$reader);
+ unless( $attr->check_valid_value($self, $self->$reader) ) {
+ warn "\${\$self->$reader} isn't a valid value for ${\$attr->name}" if _debug();
+ return 0;
+ }
}
}
}