Add some real error-handling for Serialize::View
[catagits/Catalyst-Action-REST.git] / lib / Catalyst / Action / Serialize / View.pm
1 package Catalyst::Action::Serialize::View;
2 use Moose;
3 use namespace::autoclean;
4
5 extends 'Catalyst::Action';
6
7 sub execute {
8     my $self = shift;
9     my ( $controller, $c, $view ) = @_;
10
11     my $stash_key = (
12             $controller->{'serialize'} ?
13                 $controller->{'serialize'}->{'stash_key'} :
14                 $controller->{'stash_key'} 
15         ) || 'rest';
16
17     if ( !$c->view($view) ) {
18         $c->log->error("Could not load $view, refusing to serialize");
19         return;
20     }
21
22     if ($c->view($view)->process($c, $stash_key)) {
23       return 1;
24     } else {
25       # This is stupid. Please improve it.
26       my $error = join("\n", @{ $c->error }) || "Error in $view";
27       $error .= "\n";
28       $c->clear_errors;
29       die $error;
30     }
31 }
32
33 1;