I beg to differ. But seems to me that they are not working at all. I wrote a 
test case in the below diff where I insert an event with a payload and try to 
retrieve it again. This does not work on trunk guys -.-
---


=== modified file 'test/remote-test.py'
--- test/remote-test.py 2010-09-22 18:44:16 +0000
+++ test/remote-test.py 2010-12-20 15:42:22 +0000
@@ -321,6 +321,19 @@
                registry = iface.get_extension("DataSourceRegistry", 
"data_source_registry")
                registry.GetDataSources()
                
+       def testFindEventsWithPayload(self):
+               mainloop = gobject.MainLoop()
+               payload = "Hello World"
+               def callback(ids):
+                       def callback2(events):
+                               mainloop.quit()
+                               self.assertEquals(events[0].payload, payload)
+                       self.client.get_events(ids, callback2)
+               events = [Event.new_for_values(actor=u"boo", timestamp=124, 
subject_uri="file://yomomma")]
+               events[0].payload = payload
+               self.client.insert_events(events, callback)
+               mainloop.run()
+               
 class ZeitgeistRemoteInterfaceTest(unittest.TestCase):
        
        def setUp(self):


----

Run "./test/remote-test.py
ZeitgeistRemoteAPITest.testFindEventsWithPayload"

I get:

Error from Zeitgeist engine: org.freedesktop.DBus.Python.TypeError: Traceback 
(most recent call last):
  File "/usr/lib/pymodules/python2.6/dbus/service.py", line 745, in _message_cb
    _method_reply_return(connection, message, method_name, signature, *retval)
  File "/usr/lib/pymodules/python2.6/dbus/service.py", line 252, in 
_method_reply_return
    reply.append(signature=signature, *retval)
TypeError: an integer is required

-- 
You received this bug notification because you are a member of Zeitgeist
Framework Team, which is subscribed to Zeitgeist Framework.
https://bugs.launchpad.net/bugs/691167

Title:
  The payload is sometimes mentioned as string and sometimes as array of bytes

Status in Zeitgeist Framework:
  In Progress

Bug description:
  In the event serialization format, the third array is array of bytes or ay as 
dbus signature.

When an event enters an extension, it looks like
Event([dbus.Array([u'', u'1292500628312', u'', u'', 
u'application://foo.desktop'], signature=dbus.Signature('s')), [Subject([u'', 
u'', u'', u'', u'', u'', u''])], dbus.Array([], signature=dbus.Signature('y'))])

which implies that payload is array of bytes

Now look at _zeitgeist/engine/datamodel.py at line 58
where you get the line
>> popo.append(str(ev[2]))

Really so when you do str() on dbus.Array([], signature=dbus.Signature('y'))
you get "dbus.Array([], signature=dbus.Signature('y'))" instead of the contents 
of bytes converted to string

Now when you call Event.get_plain on

Event([dbus.Array([u'', u'1292500628312', u'', u'', 
u'application://foo.desktop'], signature=dbus.Signature('s')), [Subject([u'', 
u'', u'', u'', u'', u'', u''])], dbus.Array([], signature=dbus.Signature('y'))])

you get

[[u'', u'1292500628312', u'', u'', u'application://foo.desktop'], [[u'', u'', 
u'', u'', u'', u'', u'']], "dbus.Array([], signature=dbus.Signature('y'))"]

Not what you expect





_______________________________________________
Mailing list: https://launchpad.net/~zeitgeist
Post to     : zeitgeist@lists.launchpad.net
Unsubscribe : https://launchpad.net/~zeitgeist
More help   : https://help.launchpad.net/ListHelp

Reply via email to