Mercurial > pub > Impl
comparison Lib/IMPL/Web/QueryHandler/JsonFormat.pm @ 173:aaab45153411
minor bugfixes
author | sourcer |
---|---|
date | Wed, 14 Sep 2011 18:59:01 +0400 |
parents | 4267a2ac3d46 |
children | d1676be8afcc |
comparison
equal
deleted
inserted
replaced
172:068acfe903c3 | 173:aaab45153411 |
---|---|
8 | 8 |
9 sub Process { | 9 sub Process { |
10 my ($this,$action,$nextHandler) = @_; | 10 my ($this,$action,$nextHandler) = @_; |
11 | 11 |
12 my $result; | 12 my $result; |
13 my $t = new IMPL::Transform::Json; | |
14 | 13 |
15 try { | 14 try { |
16 $result = $nextHandler->(); | 15 $result = $nextHandler->(); |
17 $result = [$result] unless ref $result; | 16 $result = [$result] unless ref $result; |
18 } otherwise { | 17 } otherwise { |
19 my $err = shift; | 18 my $err = shift; |
20 $result = { error => $err }; | 19 $result = { error => $err }; |
21 }; | 20 }; |
21 | |
22 my $t = new IMPL::Transform::Json($action->context->{json}); | |
23 | |
24 if ($action->context->{transactionType} and $action->context->{transactionType} eq 'form') { | |
25 delete @$result{qw(formData formSchema)}; | |
26 my $errors = @$result{formErrors}; | |
27 | |
28 $result->{formErrors} = [ map $_->Message, @$errors ] if $errors; | |
29 } | |
22 | 30 |
23 $action->response->contentType('text/javascript'); | 31 $action->response->contentType('text/javascript'); |
24 | 32 |
25 my $hout = $action->response->streamBody; | 33 my $hout = $action->response->streamBody; |
26 print $hout to_json( $t->Transform($result), {pretty => 1} ); | 34 print $hout to_json( $t->Transform($result), {pretty => 1} ); |
39 | 47 |
40 my %propListCache; | 48 my %propListCache; |
41 | 49 |
42 our %CTOR = ( | 50 our %CTOR = ( |
43 'IMPL::Transform' => sub { | 51 'IMPL::Transform' => sub { |
52 my $options = shift; | |
53 ( | |
54 $options ? %{$options} : () | |
55 ), | |
44 ARRAY => sub { | 56 ARRAY => sub { |
45 my ($this,$object) = @_; | 57 my ($this,$object) = @_; |
46 | 58 |
47 return [ | 59 return [ |
48 map { $this->Transform($_) } @$object | 60 map { $this->Transform($_) } @$object |