if ($self->build_environment->environment->{complete}) {
$self->update_state( 'validating') || die 'Unable to update event state';
- try {
- $self->valid(
- OpenILS::Application::Trigger::ModRunner::Validator
- ->new( $self->event->event_def->validator, $self->environment )
- ->run
- ->final_result
- );
- } otherwise {
- $log->error("Event validation failed with ". shift() );
- $self->update_state( 'error' ) || die 'Unable to update event state';
- };
+
+ my @validators = split(',', $self->event->event_def->validator);
+
+ my $valid;
+ for my $validator (@validators) {
+
+ eval {
+ $valid =
+ OpenILS::Application::Trigger::ModRunner::Validator
+ ->new( $validator, $self->environment )
+ ->run
+ ->final_result
+ };
+
+ if ($@) {
+ $log->error("Event validation [$validator] failed with: $@");
+ $self->update_state('error') || die 'Unable to update event state';
+ $valid = undef;
+ };
+
+ # Stop on first failed validator.
+ last unless $valid; # 0 or undef
+ }
+
+ $self->valid($valid);
if (defined $self->valid) {
if ($self->valid) {