From: Wallace Reis Date: Tue, 29 May 2012 15:33:49 +0000 (+0200) Subject: Rework ::XS serializer and deserializer classes X-Git-Tag: 1.01~3 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Action-REST.git;a=commitdiff_plain;h=8d507a2fdb74a618a20c2d7bcac3f29d13703f60 Rework ::XS serializer and deserializer classes Make ::XS ones be a bare extension over JSON classes and ensure that JSON::XS is loaded or die. --- diff --git a/lib/Catalyst/Action/Deserialize/JSON.pm b/lib/Catalyst/Action/Deserialize/JSON.pm index 41845e6..46fdf08 100644 --- a/lib/Catalyst/Action/Deserialize/JSON.pm +++ b/lib/Catalyst/Action/Deserialize/JSON.pm @@ -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 index 0000000..c5e251d --- /dev/null +++ b/lib/Catalyst/Action/Deserialize/JSON/XS.pm @@ -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; diff --git a/lib/Catalyst/Action/Serialize/JSON.pm b/lib/Catalyst/Action/Serialize/JSON.pm index a9db571..730ef22 100644 --- a/lib/Catalyst/Action/Serialize/JSON.pm +++ b/lib/Catalyst/Action/Serialize/JSON.pm @@ -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 (); diff --git a/lib/Catalyst/Action/Serialize/JSON/XS.pm b/lib/Catalyst/Action/Serialize/JSON/XS.pm index 26cb71a..e60c269 100644 --- a/lib/Catalyst/Action/Serialize/JSON/XS.pm +++ b/lib/Catalyst/Action/Serialize/JSON/XS.pm @@ -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;