Move prepare_parametrs to be the builder.
Tomas Doran [Fri, 28 Oct 2011 21:34:15 +0000 (22:34 +0100)]
Makes the 3 failing tests pass again, removes more madness.
Breaks the pod test, TODO.

lib/Catalyst/Engine.pm
lib/Catalyst/Request.pm

index e5a5b23..1f87a66 100644 (file)
@@ -466,26 +466,7 @@ sets up parameters from query and post parameters.
 sub prepare_parameters {
     my ( $self, $c ) = @_;
 
-    my $request = $c->request;
-    my $parameters = {};
-    my $body_parameters = $request->body_parameters;
-    my $query_parameters = $request->query_parameters;
-    # We copy, no references
-    foreach my $name (keys %$query_parameters) {
-        my $param = $query_parameters->{$name};
-        $parameters->{$name} = ref $param eq 'ARRAY' ? [ @$param ] : $param;
-    }
-
-    # Merge query and body parameters
-    foreach my $name (keys %$body_parameters) {
-        my $param = $body_parameters->{$name};
-        my @values = ref $param eq 'ARRAY' ? @$param : ($param);
-        if ( my $existing = $parameters->{$name} ) {
-          unshift(@values, (ref $existing eq 'ARRAY' ? @$existing : $existing));
-        }
-        $parameters->{$name} = @values > 1 ? \@values : $values[0];
-    }
-    $request->{parameters} = $parameters; # FIXME
+    $c->request->parameters;
 }
 
 =head2 $self->prepare_path($c)
index 4ff3f10..ee7f64b 100644 (file)
@@ -101,11 +101,9 @@ has uploads => (
 );
 
 has parameters => (
-  is => 'rw',
-  required => 1,
-  lazy => 1,
-  default => sub { {} },
-  predicate => '_has_prepared_parameters',
+    is => 'rw',
+    lazy => 1,
+    builder => 'prepare_parameters',
 );
 
 # TODO:
@@ -116,11 +114,31 @@ has parameters => (
 #  these lazy build from there and kill all the direct hash access
 #  in Catalyst.pm and Engine.pm?
 
-before parameters => sub {
-    my ($self) = @_;
+sub prepare_parameters {
+    my ( $self ) = @_;
+
     $self->prepare_body;
-    $self->_context->engine->prepare_parameters($self->_context);
-};
+    my $parameters = {};
+    my $body_parameters = $self->body_parameters;
+    my $query_parameters = $self->query_parameters;
+    # We copy, no references
+    foreach my $name (keys %$query_parameters) {
+        my $param = $query_parameters->{$name};
+        $parameters->{$name} = ref $param eq 'ARRAY' ? [ @$param ] : $param;
+    }
+
+    # Merge query and body parameters
+    foreach my $name (keys %$body_parameters) {
+        my $param = $body_parameters->{$name};
+        my @values = ref $param eq 'ARRAY' ? @$param : ($param);
+        if ( my $existing = $parameters->{$name} ) {
+          unshift(@values, (ref $existing eq 'ARRAY' ? @$existing : $existing));
+        }
+        $parameters->{$name} = @values > 1 ? \@values : $values[0];
+    }
+    $parameters;
+}
+
 before body_parameters => sub {
     my ($self) = @_;
     $self->prepare_body;