Rework ::XS serializer and deserializer classes
Wallace Reis [Tue, 29 May 2012 15:33:49 +0000 (17:33 +0200)]
Make ::XS ones be a bare extension over JSON classes and ensure that
JSON::XS is loaded or die.

lib/Catalyst/Action/Deserialize/JSON.pm
lib/Catalyst/Action/Deserialize/JSON/XS.pm [new file with mode: 0644]
lib/Catalyst/Action/Serialize/JSON.pm
lib/Catalyst/Action/Serialize/JSON/XS.pm

index 41845e6..46fdf08 100644 (file)
@@ -3,6 +3,9 @@ package Catalyst::Action::Deserialize::JSON;
 use Moose;
 use namespace::autoclean;
 use Scalar::Util qw(openhandle);
+BEGIN {
+    $ENV{'PERL_JSON_BACKEND'} = 2; # Always use compiled JSON::XS
+}
 
 extends 'Catalyst::Action';
 use JSON;
diff --git a/lib/Catalyst/Action/Deserialize/JSON/XS.pm b/lib/Catalyst/Action/Deserialize/JSON/XS.pm
new file mode 100644 (file)
index 0000000..c5e251d
--- /dev/null
@@ -0,0 +1,14 @@
+package Catalyst::Action::Deserialize::JSON::XS;
+
+use Moose;
+use namespace::autoclean;
+
+extends 'Catalyst::Action::Deserialize::JSON';
+use JSON::XS ();
+
+our $VERSION = '1.00';
+$VERSION = eval $VERSION;
+
+__PACKAGE__->meta->make_immutable;
+
+1;
index a9db571..730ef22 100644 (file)
@@ -2,6 +2,9 @@ package Catalyst::Action::Serialize::JSON;
 
 use Moose;
 use namespace::autoclean;
+BEGIN {
+    $ENV{'PERL_JSON_BACKEND'} = 2; # Always use compiled JSON::XS
+}
 
 extends 'Catalyst::Action';
 use JSON ();
index 26cb71a..e60c269 100644 (file)
@@ -9,8 +9,6 @@ use JSON::XS ();
 our $VERSION = '1.00';
 $VERSION = eval $VERSION;
 
-sub _build_encoder { return JSON::XS->new->utf8->convert_blessed }
-
 __PACKAGE__->meta->make_immutable;
 
 1;