package TestApp;

use strict;
use Catalyst qw[Test::Errors Test::Headers];
use Catalyst::Utils;

our $VERSION = '0.01';

TestApp->config(
    name => 'TestApp',
    root => '/Users/chansen/src/MyApp/root',
);

TestApp->setup;

#sub execute { return shift->NEXT::execute(@_); } # does not work, bug?

sub global_action : Private {
    my ( $self, $c ) = @_;
    $c->forward('TestApp::View::Dump::Request');
}

sub execute {
    my $c      = shift;
    my $class  = ref( $c->component( $_[0] ) ) || $_[0];
    my $action = $c->actions->{reverse}->{"$_[1]"} || "$_[1]";

    my $method;

    if ( $action =~ /->(\w+)$/ ) {
        $method = $1;
    }
    elsif ( $action =~ /\/(\w+)$/ ) {
        $method = $1;
    }

    if ( $class && $method ) {
        my $executed = sprintf( "%s->%s", $class, $method );
        $c->response->headers->push_header( 'X-Catalyst-Executed' => $executed );
    }
    
    return $c->SUPER::execute(@_);
}

1;
