From: Sebastian Riedel Date: Thu, 10 Nov 2005 01:36:19 +0000 (+0000) Subject: Fixed the weirdo threads bug X-Git-Tag: 5.7099_04~980 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=commitdiff_plain;h=3cec521ae07b2d779f88adab532f791ad42c8676 Fixed the weirdo threads bug --- diff --git a/lib/Catalyst.pm b/lib/Catalyst.pm index 89a77b2..9fee7be 100644 --- a/lib/Catalyst.pm +++ b/lib/Catalyst.pm @@ -44,28 +44,13 @@ require Module::Pluggable::Fast; our $CATALYST_SCRIPT_GEN = 10; __PACKAGE__->mk_classdata($_) - for qw/components arguments dispatcher engine log _dispatcher_class - _engine_class _context_class _request_class _response_class/; + for qw/components arguments dispatcher engine log dispatcher_class + engine_class context_class request_class response_class/; -sub dispatcher_class { - return $_[0]->_dispatcher_class(@_[1..$#_]) || 'Catalyst::Dispatcher'; -} - -sub engine_class { - return $_[0]->_engine_class(@_[1..$#_]) || 'Catalyst::Engine::CGI'; -} - -sub context_class { - return $_[0]->_context_class(@_[1..$#_]) || ref $_[0] || $_[0]; -} - -sub request_class { - return $_[0]->_request_class(@_[1..$#_]) || 'Catalyst::Request'; -} - -sub response_class { - return $_[0]->_response_class(@_[1..$#_]) || 'Catalyst::Response'; -} +__PACKAGE__->dispatcher_class('Catalyst::Dispatcher'); +__PACKAGE__->engine_class('Catalyst::Engine::CGI'); +__PACKAGE__->request_class('Catalyst::Request'); +__PACKAGE__->response_class('Catalyst::Response'); our $VERSION = '5.49_03'; @@ -1082,33 +1067,36 @@ into a Catalyst context . sub prepare { my ( $class, @arguments ) = @_; - my $c = $class->context_class->new({ - counter => {}, - depth => 0, - request => $class->request_class->new( - { - arguments => [], - body_parameters => {}, - cookies => {}, - headers => HTTP::Headers->new, - parameters => {}, - query_parameters => {}, - secure => 0, - snippets => [], - uploads => {} - } - ), - response => $class->response_class->new( - { - body => '', - cookies => {}, - headers => HTTP::Headers->new(), - status => 200 - } - ), - stash => {}, - state => 0 - }); + $class->context_class( ref $class || $class ) unless $class->context_class; + my $c = $class->context_class->new( + { + counter => {}, + depth => 0, + request => $class->request_class->new( + { + arguments => [], + body_parameters => {}, + cookies => {}, + headers => HTTP::Headers->new, + parameters => {}, + query_parameters => {}, + secure => 0, + snippets => [], + uploads => {} + } + ), + response => $class->response_class->new( + { + body => '', + cookies => {}, + headers => HTTP::Headers->new(), + status => 200 + } + ), + stash => {}, + state => 0 + } + ); # For on-demand data $c->request->{_context} = $c;