Fix namespacing using a hack activity-streams origin/activity-streams
Simon Wistow [Thu, 8 Jan 2009 20:42:22 +0000 (20:42 +0000)]
lib/XML/Feed/Format/Atom.pm

index e4de13d..31c684b 100644 (file)
@@ -14,6 +14,12 @@ XML::Atom::Entry->mk_elem_accessors(qw( lat long ), ['http://www.w3.org/2003/01/
 
 use XML::Atom::Content;
 
+
+use constant ACTIVITY_NAMESPACE_URI => "http://activitystrea.ms/spec/1.0/";
+use constant ACTIVITY_NAMESPACE => XML::Atom::Namespace->new(
+    'activity' => ACTIVITY_NAMESPACE_URI,
+);
+
 sub identify {
     my $class   = shift;
     my $xml     = shift;
@@ -25,8 +31,8 @@ sub identify {
 sub init_empty {
     my ($feed, %args) = @_;
     $args{'Version'} ||= '1.0';
-    
     $feed->{atom} = XML::Atom::Feed->new(%args);
+    $feed->{atom}->set_attr('xmlns:activity' => ACTIVITY_NAMESPACE_URI); # TODO HACK!
     $feed;
 }
 
@@ -134,10 +140,6 @@ use XML::Feed::Content;
 use XML::Atom::Entry;
 use List::Util qw( first );
 
-use constant ACTIVITY_NAMESPACE_URI => "http://activitystrea.ms/spec/1.0/";
-use constant ACTIVITY_NAMESPACE => XML::Atom::Namespace->new(
-    'activity' => ACTIVITY_NAMESPACE_URI,
-);
 
 sub init_empty {
     my $entry = shift;
@@ -315,13 +317,14 @@ sub _activity {
         my @things = @_;
 
         # Remove all of the existing elements.
-        my @existing = XML::Atom::Util::childlist($entry->elem, ACTIVITY_NAMESPACE_URI(), $name);
+        my @existing = XML::Atom::Util::childlist($entry->elem, XML::Feed::Format::Atom::ACTIVITY_NAMESPACE_URI(), $name);
         foreach my $elem (@existing) {
             $entry->elem->removeChild($elem);
         }
 
         foreach my $thing (@things) {
-            $entry->set(ACTIVITY_NAMESPACE(), $name, $thing, undef, 1);
+            $entry->set(XML::Feed::Format::Atom::ACTIVITY_NAMESPACE(), $name, $thing, undef, 1);
+            #XML::Atom::Base::set($entry, ACTIVITY_NAMESPACE(), $name, $thing, undef, 1);
         }
     }
     else {
@@ -329,7 +332,7 @@ sub _activity {
         # children. This might get troublesome if, for example,
         # there's ever an activity entry with an activity as its
         # object, or something crazy like that.
-        return $entry->getlist(ACTIVITY_NAMESPACE(), $name);
+        return $entry->getlist(XML::Feed::Format::Atom::ACTIVITY_NAMESPACE(), $name);
     }
 }
 
@@ -342,7 +345,7 @@ sub activity_object {
         # $entry->set(ACTIVITY_NAMESPACE, 'object', $xml_atom_entry);
         die "setting activity_object is not yet implemented";
     } else {
-        my ($object_elem) = XML::Atom::Util::childlist($entry->elem, ACTIVITY_NAMESPACE_URI(), 'object');
+        my ($object_elem) = XML::Atom::Util::childlist($entry->elem, XML::Feed::Format::Atom::ACTIVITY_NAMESPACE_URI(), 'object');
         if (defined $object_elem) {
             my $ret = XML::Atom::Entry->new(Elem => $object_elem);
             # If we're holding an activity:object element then our primary