You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by mc...@apache.org on 2013/02/15 19:22:55 UTC

svn commit: r1446715 - in /qpid/trunk/qpid/cpp/bindings/qpid: examples/perl/drain.pl examples/perl/map_receiver.pl examples/perl/map_sender.pl examples/perl/spout.pl perl/lib/qpid/messaging/Message.pm perl/lib/qpid/messaging/codec.pm perl/t/Message.t

Author: mcpierce
Date: Fri Feb 15 18:22:55 2013
New Revision: 1446715

URL: http://svn.apache.org/r1446715
Log:
QPID-4581: Perl message content are automatically encoded.

Updated all Perl examples to properly reflect this change.

Modified:
    qpid/trunk/qpid/cpp/bindings/qpid/examples/perl/drain.pl
    qpid/trunk/qpid/cpp/bindings/qpid/examples/perl/map_receiver.pl
    qpid/trunk/qpid/cpp/bindings/qpid/examples/perl/map_sender.pl
    qpid/trunk/qpid/cpp/bindings/qpid/examples/perl/spout.pl
    qpid/trunk/qpid/cpp/bindings/qpid/perl/lib/qpid/messaging/Message.pm
    qpid/trunk/qpid/cpp/bindings/qpid/perl/lib/qpid/messaging/codec.pm
    qpid/trunk/qpid/cpp/bindings/qpid/perl/t/Message.t

Modified: qpid/trunk/qpid/cpp/bindings/qpid/examples/perl/drain.pl
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/bindings/qpid/examples/perl/drain.pl?rev=1446715&r1=1446714&r2=1446715&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/bindings/qpid/examples/perl/drain.pl (original)
+++ qpid/trunk/qpid/cpp/bindings/qpid/examples/perl/drain.pl Fri Feb 15 18:22:55 2013
@@ -78,7 +78,7 @@ eval {
         my $redelivered = ($message->get_redelivered) ? "redelivered=True, " : "";
         print "Message(" . $redelivered . "properties=" . printProperties($message->get_properties()) . ", content='";        
         if ($message->get_content_type() eq "amqp/map") {
-            my $content = qpid::messaging::decode_map($message);
+            my $content = $message->get_content();
             map{ print "\n$_ => $content->{$_}"; } keys %{$content};
         }
         else {

Modified: qpid/trunk/qpid/cpp/bindings/qpid/examples/perl/map_receiver.pl
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/bindings/qpid/examples/perl/map_receiver.pl?rev=1446715&r1=1446714&r2=1446715&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/bindings/qpid/examples/perl/map_receiver.pl (original)
+++ qpid/trunk/qpid/cpp/bindings/qpid/examples/perl/map_receiver.pl Fri Feb 15 18:22:55 2013
@@ -33,8 +33,8 @@ eval {
     $connection->open();
     my $session  = $connection->create_session();
     my $receiver = $session->create_receiver($address);
-
-    my $content = qpid::messaging::decode_map($receiver->fetch());
+    my $message  = $receiver->fetch();
+    my $content = $message->get_content();
 
     print Dumper($content);
 

Modified: qpid/trunk/qpid/cpp/bindings/qpid/examples/perl/map_sender.pl
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/bindings/qpid/examples/perl/map_sender.pl?rev=1446715&r1=1446714&r2=1446715&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/bindings/qpid/examples/perl/map_sender.pl (original)
+++ qpid/trunk/qpid/cpp/bindings/qpid/examples/perl/map_sender.pl Fri Feb 15 18:22:55 2013
@@ -41,7 +41,7 @@ eval {
                     percent => sprintf("%.2f", 0.99),
                     colours => [ qw (red green white) ],
                    };
-    qpid::messaging::encode($content, $message);
+    $message->set_content($content);
     $sender->send($message, 1);
 
     $connection->close();

Modified: qpid/trunk/qpid/cpp/bindings/qpid/examples/perl/spout.pl
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/bindings/qpid/examples/perl/spout.pl?rev=1446715&r1=1446714&r2=1446715&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/bindings/qpid/examples/perl/spout.pl (original)
+++ qpid/trunk/qpid/cpp/bindings/qpid/examples/perl/spout.pl Fri Feb 15 18:22:55 2013
@@ -87,17 +87,17 @@ eval {
     if (@entries) {
         my $content = {};
         setEntries($content);
-        qpid::messaging::encode($content, $message);
+        $message->set_content($content);
     }
     elsif ($content) {
-        $message->setContent($content);
-        $message->setContentType("text/plain");
+        $message->set_content($content);
+        $message->set_content_type("text/plain");
     }
 
     my $receiver;
     if ($replyto) {
         my $responseQueue = new qpid::messaging::Address($replyto);
-        $receiver = $session->createReceiver($responseQueue);
+        $receiver = $session->create_receiver($responseQueue);
         $message->setReplyTo($responseQueue);
     }
 
@@ -115,7 +115,7 @@ eval {
 
         if ($receiver) {
             my $response = $receiver->fetch();
-            print "$i -> " . $response->getContent() . "\n";
+            print "$i -> " . $response->get_content() . "\n";
         }
 
         my $now = localtime;

Modified: qpid/trunk/qpid/cpp/bindings/qpid/perl/lib/qpid/messaging/Message.pm
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/bindings/qpid/perl/lib/qpid/messaging/Message.pm?rev=1446715&r1=1446714&r2=1446715&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/bindings/qpid/perl/lib/qpid/messaging/Message.pm (original)
+++ qpid/trunk/qpid/cpp/bindings/qpid/perl/lib/qpid/messaging/Message.pm Fri Feb 15 18:22:55 2013
@@ -556,14 +556,22 @@ sub set_content {
 
     die "Content must be provided" if !defined($content);
 
-    $impl->setContent($content);
+    $self->{_content} = $content;
+
+    qpid::messaging::encode($content, $self);
 }
 
 sub get_content {
     my ($self) = @_;
     my $impl = $self->{_impl};
+    $content = $self->{_content} || undef;
+
+    if(!defined($content)) {
+        $content = qpid::messaging::decode($self);
+        $self->{_content} = $content;
+    }
 
-    return $impl->getContent();
+    return $content;
 }
 
 sub get_content_size {

Modified: qpid/trunk/qpid/cpp/bindings/qpid/perl/lib/qpid/messaging/codec.pm
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/bindings/qpid/perl/lib/qpid/messaging/codec.pm?rev=1446715&r1=1446714&r2=1446715&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/bindings/qpid/perl/lib/qpid/messaging/codec.pm (original)
+++ qpid/trunk/qpid/cpp/bindings/qpid/perl/lib/qpid/messaging/codec.pm Fri Feb 15 18:22:55 2013
@@ -22,14 +22,31 @@ package qpid::messaging;
 sub encode {
     my $content = $_[0];
     my $message = $_[1];
+    my $impl = $message->get_implementation();
 
-    cqpid_perl::encode($content, $message->get_implementation());
+    if(UNIVERSAL::isa($content, "HASH")) {
+        cqpid_perl::encode($content, $impl, "amqp/map");
+    } elsif(UNIVERSAL::isa($content, "ARRAY")) {
+        cqpid_perl::encode($content, $impl, "amqp/list");
+    } else {
+        $message->get_implementation()->setContent($content);
+    }
 }
 
-sub decode_map {
-    my $message = $_[0];
+sub decode {
+    my $message      = $_[0];
+    my $impl         = $message->get_implementation();
+    my $content_type = $impl->getContentType();
 
-    return cqpid_perl::decodeMap($message->get_implementation());
+    if($content_type eq "amqp/map") {
+        $result = cqpid_perl::decodeMap($impl);
+    } elsif($content_type eq "amqp/list") {
+        $result = cqpid_perl::decodeList($impl);
+    } else {
+        $result = $impl->getContent();
+    }
+
+    return $result;
 }
 
 1;

Modified: qpid/trunk/qpid/cpp/bindings/qpid/perl/t/Message.t
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/bindings/qpid/perl/t/Message.t?rev=1446715&r1=1446714&r2=1446715&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/bindings/qpid/perl/t/Message.t (original)
+++ qpid/trunk/qpid/cpp/bindings/qpid/perl/t/Message.t Fri Feb 15 18:22:55 2013
@@ -255,7 +255,6 @@ ok ($message->get_content() eq $content,
 $content = { id => 1234, name => "With\x00null" };
 qpid::messaging::encode($content, $message);
 my $map = qpid::messaging::decode_map($message);
-
 ok ($map->{name} eq "With\x00null",
     "Nulls embedded in map values work.");
 
@@ -266,6 +265,18 @@ $map = qpid::messaging::decode_map($mess
 ok ($map->{name} eq "Euro=\x{20AC}",
     "Unicode strings encoded correctly.");
 
+# Setting the content as a hash automatically encodes it
+($content) = {"id" => "1234", "name" => "qpid"};
+$message->set_content($content);
+ok ($message->get_content_type() eq "amqp/map",
+    "Hashes are automatically encoded correctly");
+
+# Setting the content as a list automatically encodes it
+my @acontent = (1, 2, 3, 4);
+$message->set_content(\@acontent);
+ok ($message->get_content_type() eq "amqp/list",
+    "Lists are automatically encoded correctly");
+
 # content size
 # content size is correct
 my $content_size = int(rand(256));



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org