Skip to content

Commit

Permalink
switch backends from JSON to JSON::MaybeXS
Browse files Browse the repository at this point in the history
This allows for more choices in backends, including Cpanel::JSON::XS, which has fewer incompatibilities.
  • Loading branch information
karenetheridge committed Oct 26, 2018
1 parent af1b10d commit 78dd148
Show file tree
Hide file tree
Showing 6 changed files with 16 additions and 15 deletions.
4 changes: 2 additions & 2 deletions cpanfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@ requires 'CGI';
requires 'Class::Accessor::Lite';
requires 'HTTP::Request';
requires 'HTTP::Response';
requires 'JSON';
requires 'JSON::MaybeXS';
requires 'LWP::UserAgent';
requires 'Plack';
requires 'Router::Simple';
requires 'parent';
recommends 'JSON::XS';
recommends 'Cpanel::JSON::XS';

on build => sub {
requires 'ExtUtils::MakeMaker', '6.36';
Expand Down
8 changes: 4 additions & 4 deletions lib/JSON/RPC/Legacy/Client.pm
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
##############################################################################

use strict;
use JSON ();
use JSON::MaybeXS 'JSON';
use Carp ();

##############################################################################
Expand Down Expand Up @@ -62,7 +62,7 @@ sub AUTOLOAD {


sub create_json_coder {
JSON->new->allow_nonref->utf8;
JSON()->new->allow_nonref->utf8;
}


Expand Down Expand Up @@ -349,9 +349,9 @@ Setter/getter to L<LWP::UserAgent> object.
=item json
Setter/getter to the JSON coder object.
Default is L<JSON>, likes this:
The default is the backend returned by L<JSON::MaybeXS>, created like this:
$self->json( JSON->new->allow_nonref->utf8 );
$self->json( JSON()->new->allow_nonref->utf8 );
$json = $self->json;
Expand Down
8 changes: 4 additions & 4 deletions lib/JSON/RPC/Legacy/Server.pm
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
##############################################################################

use strict;
use JSON ();
use Carp ();

use HTTP::Request ();
Expand All @@ -14,6 +13,7 @@ use HTTP::Response ();
##############################################################################

package JSON::RPC::Legacy::Server;
use JSON::MaybeXS 'JSON';

my $JSONRPC_Procedure_Able;

Expand Down Expand Up @@ -43,7 +43,7 @@ BEGIN {


sub create_json_coder {
JSON->new->utf8; # assumes UTF8
JSON()->new->utf8; # assumes UTF8
}


Expand Down Expand Up @@ -569,9 +569,9 @@ An error code number in your procedure is an integer between 501 and 899.
=item json
Setter/Getter to json encoder/decoder object.
The default value is L<JSON> object in the below way:
The default value is a JSON serializer object as returned by L<JSON::MaybeXS> in the following manner:
JSON->new->utf8
JSON()->new->utf8
In your procedure, changes its behaviour.
Expand Down
4 changes: 2 additions & 2 deletions t/002_basic.t
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use warnings;
use Test::More;
use Plack::Test;
use HTTP::Request;
use JSON;
use JSON::MaybeXS;

BEGIN {
use_ok "JSON::RPC::Dispatch";
Expand All @@ -28,7 +28,7 @@ subtest 'defaults' => sub {
};

subtest 'normal dispatch' => sub {
my $coder = JSON->new;
my $coder = JSON()->new;
my $router = Router::Simple->new;
$router->connect( blowup => {
handler => "Sum",
Expand Down
4 changes: 2 additions & 2 deletions t/003_parser.t
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use strict;
use Test::More;
use Plack::Request;
use JSON;
use JSON::MaybeXS 'to_json', 'JSON';

use_ok "JSON::RPC::Parser";
use_ok "JSON::RPC::Procedure";
Expand All @@ -12,7 +12,7 @@ subtest 'basic' => sub {
REQUEST_METHOD => "GET",
} );
my $parser = JSON::RPC::Parser->new(
coder => JSON->new,
coder => JSON()->new,
);

my $procedure = $parser->construct_from_req( $req );
Expand Down
3 changes: 2 additions & 1 deletion t/legacy/02_server.t
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ my $server = JSON::RPC::Legacy::Server->new;

isa_ok($server, 'JSON::RPC::Legacy::Server');

isa_ok($server->json, 'JSON');
my $json_backend = JSON::MaybeXS::JSON();
isa_ok($server->json, $json_backend);

my $test = JSON::RPC::Legacy::Server::Test->new;

Expand Down

0 comments on commit 78dd148

Please sign in to comment.