requires 'Catalyst::Engine::Embeddable' => '0.0.1';
requires 'Catalyst::Runtime' => '5.80004';
requires 'Moose' => undef;
+requires 'MooseX::Types' => undef;
requires 'MooseX::Workers' => '0.05';
requires 'Net::Stomp' => '0.34';
requires 'YAML::XS' => '0.32';
package Catalyst::Controller::MessageDriven;
use Moose;
use Data::Serializer;
+use Moose::Util::TypeConstraints;
+use MooseX::Types::Moose qw/Str/;
use namespace::autoclean;
BEGIN { extends 'Catalyst::Controller' }
=cut
-__PACKAGE__->config( serializer => 'YAML' );
+class_type 'Data::Serializer';
+my $serializer_t = subtype 'Data::Serializer';
+coerce $serializer_t, from 'Str',
+ via { Data::Serializer->new( serializer => $_ ) };
+
+has serializer => (
+ isa => $serializer_t, is => 'ro', required => 1,
+ default => 'YAML', coerce => 1,
+);
sub begin : Private {
my ($self, $c) = @_;
# Deserialize the request message
my $message;
- my $serializer = $self->config->{serializer};
- my $s = Data::Serializer->new( serializer => $serializer );
+ my $s = $self->serializer;
eval {
my $body = $c->request->body;
open my $IN, "$body" or die "can't open temp file $body";
my $output;
# Load a serializer
- my $serializer = $self->config->{serializer};
- my $s = Data::Serializer->new( serializer => $serializer );
+ my $s = $self->serializer;
# Custom error handler - steal errors from catalyst and dump them into
# the stash, to get them serialized out as the reply.