Convert the dispatcher's BUILD method to attribute builders.
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Dispatcher.pm
index 6e182fa..f92b92b 100644 (file)
@@ -15,6 +15,8 @@ use Text::SimpleTable;
 use Tree::Simple;
 use Tree::Simple::Visitor::FindByPath;
 
+use namespace::clean -except => 'meta';
+
 # Refactoring note:
 # do these belong as package vars or should we build these via a builder method?
 # See Catalyst-Plugin-Server for them being added to, which should be much less ugly.
@@ -26,7 +28,7 @@ our @PRELOAD = qw/Index Path Regex/;
 our @POSTLOAD = qw/Default/;
 
 # Note - see back-compat methods at end of file.
-has _tree => (is => 'rw');
+has _tree => (is => 'rw', builder => '_build__tree');
 has _dispatch_types => (is => 'rw', default => sub { [] }, required => 1, lazy => 1);
 has _registered_dispatch_types => (is => 'rw', default => sub { {} }, required => 1, lazy => 1);
 has _method_action_class => (is => 'rw', default => 'Catalyst::Action');
@@ -44,8 +46,6 @@ around qw/preload_dispatch_types postload_dispatch_types/ => sub {
     return $self->$orig(@_);
 };
 
-no Moose;
-
 =head1 NAME
 
 Catalyst::Dispatcher - The Catalyst Dispatcher
@@ -67,13 +67,13 @@ Construct a new dispatcher.
 
 =cut
 
-sub BUILD {
-  my ($self, $params) = @_;
+sub _build__tree {
+  my ($self) = @_;
 
   my $container =
     Catalyst::ActionContainer->new( { part => '/', actions => {} } );
 
-  $self->_tree( Tree::Simple->new( $container, Tree::Simple->ROOT ) );
+  return Tree::Simple->new($container, Tree::Simple->ROOT);
 }
 
 =head2 $self->preload_dispatch_types
@@ -236,6 +236,7 @@ Documented in L<Catalyst>
 
 sub forward {
     my $self = shift;
+    no warnings 'recursion';
     $self->_do_forward(forward => @_);
 }
 
@@ -253,9 +254,9 @@ sub _do_forward {
         return 0;
     }
 
-    no warnings 'recursion';
 
     local $c->request->{arguments} = $args;
+    no warnings 'recursion';
     $action->dispatch( $c );
 
     return $c->state;
@@ -412,7 +413,7 @@ sub get_action {
 
 =head2 $self->get_action_by_path( $path ); 
 
-Returns the named action by its full path. 
+Returns the named action by its full private path.
 
 =cut
 
@@ -656,7 +657,14 @@ sub _load_dispatch_types {
     return @loaded;
 }
 
-# Dont document this until someone else is happy with beaviour. Ash 2009/03/16
+=head2 $self->dispatch_type( $type )
+
+Get the DispatchType object of the relevant type, i.e. passing C<$type> of
+C<Chained> would return a L<Catalyst::DispatchType::Chained> object (assuming
+of course it's being used.) 
+
+=cut
+
 sub dispatch_type {
     my ($self, $name) = @_;
 
@@ -709,7 +717,6 @@ foreach my $public_method_name (qw/
 }
 # End 5.70 backwards compatibility hacks.
 
-no Moose;
 __PACKAGE__->meta->make_immutable;
 
 =head2 meta