Merge branch 'master' of git@github.com:bobtfish/catalyst-engine-stomp
t0m [Wed, 19 Aug 2009 19:56:15 +0000 (20:56 +0100)]
1  2 
lib/Catalyst/Engine/Stomp.pm

@@@ -3,7 -3,6 +3,7 @@@ use Moose
  use List::MoreUtils qw/ uniq /;
  use HTTP::Request;
  use Net::Stomp;
 +use MooseX::Types::Moose qw/Str Int HashRef/;
  use namespace::autoclean;
  
  extends 'Catalyst::Engine::Embeddable';
@@@ -11,7 -10,7 +11,7 @@@
  our $VERSION = '0.06';
  
  has connection => (is => 'rw', isa => 'Net::Stomp');
 -has conn_desc => (is => 'rw', isa => 'Str');
 +has conn_desc => (is => 'rw', isa => Str);
  
  =head1 NAME
  
@@@ -26,15 -25,11 +26,15 @@@ Catalyst::Engine::Stomp - write messag
      require Catalyst::Engine::Stomp;
    }
  
 -  MyApp->config->{Engine::Stomp} =
 -   {
 -     hostname => '127.0.0.1',
 -     port     => 61613,
 -   };
 +  MyApp->config(
 +     'Engine::Stomp' = {
 +       hostname         => '127.0.0.1',
 +       port             => 61613,
 +       subscribe_header => {
 +         transformation       => 'jms-to-json',
 +       }
 +    },
 +  );
    MyApp->run();
  
    # In a controller, or controller base class:
@@@ -82,10 -77,10 +82,10 @@@ sub run 
  
          # connect up
          my %template = %{$app->config->{'Engine::Stomp'}};
-         my $add_header = delete $template{subscribe_header};
-         if (ref($add_header) ne 'HASH') {
-             $add_header = undef;
-         }
+         my $subscribe_headers = $template{subscribe_headers} || {};
+         die("subscribe_headers config for Engine::Stomp must be a hashref!\n")
+             if (ref($subscribe_headers) ne 'HASH');
          $self->connection(Net::Stomp->new(\%template));
          $self->connection->connect();
          $self->conn_desc($template{hostname}.':'.$template{port});
          # subscribe, with client ack.
          foreach my $queue (@queues) {
                  my $queue_name = "/queue/$queue";
-                 my $header_hash = {
+                 $self->connection->subscribe({
+                     %$subscribe_headers,
                      destination => $queue_name,
                      ack         => 'client',
-                 };
-                 # add the additional headers - yes I know it overwrites but
-                 # thats the dev's problem?
-                 if (keys %{$add_header}) {
-                     foreach my $key (keys %{$add_header}) {
-                         $header_hash->{$key} = $add_header->{$key};
-                     }
-                 }
-                 $self->connection->subscribe($header_hash);
+                 });
          }
  
          # enter loop...
@@@ -202,6 -188,7 +193,6 @@@ sub handle_stomp_message 
      # ack the message off the queue now we've replied / processed
      $self->connection->ack( { frame => $frame } );
  }
 -
  =head2 handle_stomp_error
  
  Log any Stomp error frames we receive.
@@@ -217,11 -204,3 +208,11 @@@ sub handle_stomp_error 
  
  __PACKAGE__->meta->make_immutable;
  
 +=head1 CONFIGURATION
 +
 +=head2 subscribe_header
 +
 +Add additional header key/value pairs to the subscribe message sent to the
 +message broker.
 +
 +=cut