take pity on people using the deprecated 'serialize' config key (RT#32342)
[catagits/Catalyst-Action-REST.git] / lib / Catalyst / Action / SerializeBase.pm
index ac4934f..c742477 100644 (file)
@@ -11,11 +11,17 @@ use warnings;
 
 use base 'Catalyst::Action';
 use Module::Pluggable::Object;
-use Data::Dump qw(dump);
 use Catalyst::Request::REST;
-
-Catalyst->request_class('Catalyst::Request::REST')
-    unless Catalyst->request_class->isa('Catalyst::Request::REST');
+use Catalyst::Utils ();
+
+sub new {
+  my $class  = shift;
+  my $config = shift;
+  Catalyst::Request::REST->_insert_self_into(
+    Catalyst::Utils::class2appclass($config->{class})
+  );
+  return $class->SUPER::new($config, @_);
+}
 
 __PACKAGE__->mk_accessors(qw(_serialize_plugins _loaded_plugins));
 
@@ -45,12 +51,15 @@ sub _load_content_plugins {
 
     my $config;
     
-    if ( exists $controller->config->{'serialize'} ) {
+    if ( exists $controller->{'serialize'} ) {
         $c->log->info("Using deprecated configuration for Catalyst::Action::REST!");
         $c->log->info("Please see perldoc Catalyst::Action::REST for the update guide");
-        $config = $controller->config->{'serialize'};
+        $config = $controller->{'serialize'};
+        # if they're using the deprecated config, they may be expecting a
+        # default mapping too.
+        $config->{map} ||= $controller->{map};
     } else {
-        $config = $controller->config;
+        $config = $controller;
     }
     $map = $config->{'map'};