Changeset 14

Show
Ignore:
Timestamp:
10/04/07 22:35:39 (7 years ago)
Author:
jesus
Message:

fixes #7

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/lib/Mungo.pm

    r12 r14  
    6868  return $s; 
    6969} 
    70  
    7170sub URLDecode { 
    7271  my $self = shift; 
     
    208207  }; 
    209208  if($@) { 
     209    # print out the error to the logs 
     210    print STDERR $@ if($@); 
    210211    # If it isn't too late, make this an internal server error 
    211212    eval { $self->Response()->{Status} = 500; }; 
    212     # print out the error to the logs 
    213     print STDERR $@ if($@); 
    214213  } 
    215214 MUNGO_HANDLER_FINISH: 
  • trunk/lib/Mungo/Arbiter.pm

    r2 r14  
    99  die "Mungo '$key' is immutable!\n"; 
    1010  return 0; 
     11} 
     12sub __boolean { 
     13  my ($self, $key, $value) = @_; 
     14  return 1 if ($value =~ /^(?:0|1)$/); 
     15  return 0; 
     16} 
     17sub __coderef { 
     18  my ($self, $key, $value) = @_; 
     19  return (ref $value eq 'CODE') ? 1 : 0; 
    1120} 
    1221sub TIEHASH { 
  • trunk/lib/Mungo/Arbiter/Response.pm

    r2 r14  
    7676  'Method' => \&Mungo::Arbiter::__immutable, 
    7777  'TotalBytes' => \&__immutable, 
     78  'OnError' => \&Mungo::Arbiter::__coderef, 
    7879); 
    7980 
  • trunk/lib/Mungo/Response.pm

    r13 r14  
    130130  }; 
    131131  if($@) { 
    132     use Data::Dumper; 
    133     print "Error in Include($subject):<br />\n"; 
    134132    my $href = $@; 
    135133    eval { 
    136       my $pkg = $href->{callstack}->[0]->[0]; 
    137       my $preamble = eval "\$${pkg}::Mungo_preamble;"; 
    138       my $postamble = eval "\$${pkg}::Mungo_postamble;"; 
    139       my $contents = eval "\$${pkg}::Mungo_contents;"; 
    140       print "<pre class=\"error\">$href->{error}</pre><br />\n"; 
    141  
    142       unless($contents) { 
    143         my $filename = $href->{callstack}->[0]->[1]; 
    144         if(open(FILE, "<$filename")) { 
    145           local $/ = undef; 
    146           $$contents = <FILE>; 
    147           close(FILE); 
    148         } 
     134      if($self->{OnError}) { 
     135        $self->{OnError}->($self, $href, $subject); 
    149136      } 
    150  
    151       if($contents) { 
    152         if($self->{'Apache::Request'}->dir_config('Debug')) { 
    153           print Mungo::Utils::pretty_print_code($preamble, $contents, $postamble, $href->{callstack}->[0]->[2]); 
    154         } 
    155       } else { 
    156         print '<pre>'.Dumper($@).'</pre>'; 
     137      else { 
     138        $self->defaultErrorHandler($href, $subject); 
    157139      } 
    158140    }; 
     
    165147  return $rv; 
    166148} 
     149 
     150sub defaultErrorHandler { 
     151  use Data::Dumper; 
     152  my $self = shift; 
     153  my $href = shift; # Our Error 
     154  my $subject = shift; 
     155  print "Error in Include($subject):<br />\n"; 
     156  my $pkg = $href->{callstack}->[0]->[0]; 
     157  my $preamble = eval "\$${pkg}::Mungo_preamble;"; 
     158  my $postamble = eval "\$${pkg}::Mungo_postamble;"; 
     159  my $contents = eval "\$${pkg}::Mungo_contents;"; 
     160  print "<pre class=\"error\">$href->{error}</pre><br />\n"; 
     161 
     162  unless($contents) { 
     163    my $filename = $href->{callstack}->[0]->[1]; 
     164    if(open(FILE, "<$filename")) { 
     165      local $/ = undef; 
     166      $$contents = <FILE>; 
     167      close(FILE); 
     168    } 
     169  } 
     170 
     171  if($contents) { 
     172    if($self->{'Apache::Request'}->dir_config('Debug')) { 
     173      print Mungo::Utils::pretty_print_code($preamble, $contents, $postamble, $href->{callstack}->[0]->[2]); 
     174    } 
     175  } else { 
     176    print '<pre>'.Dumper($@).'</pre>'; 
     177  } 
     178} 
     179 
    167180sub TrapInclude { 
    168181  my $self = shift;