[jdev] Mixing Attribute Namespaces

Jonathan Dickinson jonathan.dickinson at k2.com
Fri Mar 6 07:42:38 CST 2009


> -----Original Message-----
> From: jdev-bounces at jabber.org [mailto:jdev-bounces at jabber.org] On
> Behalf Of Fabio Forno
> Sent: 06 March 2009 11:24 AM
> To: Jabber/XMPP software development list
> Subject: Re: [jdev] Mixing Attribute Namespaces
> 
> ...
> 
> Taken from the perspective of 4/5 years of XMPP evolution, XEP-72
> should be superseded by something better, such as io-data. XEP-72 just
> replicates the typical HTTP request/response message pattern, where
> XMPP has few advantages.

Wow! Had I known that XEP existed! Thanks for the heads-up. Still you are sending a schema that you *may* not have control over (for example, the CMC schema in the XEP may have attributes with a qualified form). This means that attribute namespaces are still required.

@Everyone:

Looking over that XEP I see a lot of functionality that could be achieved with PubSub - why are we making yet another protocol? 

If I hash my brains out very quickly (it needs a lot of cleaning up):

--> Get latest item from user at company.org/services foo schemata (where schemata is a well-known name)

<--
<message from='pubsub.shakespeare.lit' to='francisco at denmark.lit'>
  <event xmlns='http://jabber.org/protocol/pubsub#event'>
    <items node='services foo schemata'>
      <item id='2008-01-19'>
        <schemata xmlns="...">
          <header><!-- header schema --></header>
          <in><!-- in schema --></in>
          <out><!-- out schema --></out>
          <status><!-- status schema --></status>
        </schemata>
      </item>
    </items>
  </event>
  <delay xmlns='urn:xmpp:delay' stamp='2003-12-13T23:58:37Z'/>
</message>

... Generate proxy code etc.

--> Send request
<iq type='set'
    from='francisco at denmark.lit'
    to='pubsub.shakespeare.lit'
    id='create2'>
    <pubsub xmlns='http://jabber.org/protocol/pubsub'>
      <create node='services foo 2008-01-19 abc'/> <!-- Note that the node before abc is the name of the item above -->
      <configure>
       <!-- Allow me to create, delete, maybe even user x to read as well -->
      </configure>
      <psrpc xmlns="...">
        <header><!-- header data -->
        <in><!-- in data -->
      </psrpc>
    </pubsub>
</iq>

... Verify that ABC is available
    If not, generate a new one
... Create node services foo 2008-01-19 abc
... Create node services foo 2008-01-19 status abc (where status is a well known name)
... Create subscription automatically to services foo 2008-01-19 abc
... Start processing

<-- Respond with node id
<iq type='result'
    from='pubsub.shakespeare.lit'
    to='francisco at denmark.lit'
    id='create2'>
    <pubsub xmlns='http://jabber.org/protocol/pubsub'>
      <create node='services foo 2008-01-19 abc'/>
    </pubsub>
</iq>

Optional: (for status notifications)
{
--> Subscribe to services foo 2008-01-19 status abc.
<-- Subscribe success.
}

... Process

<-- Done!
<message from='pubsub.shakespeare.lit' to='francisco at denmark.lit' id='foo'>
  <event xmlns='http://jabber.org/protocol/pubsub#event'>
    <items node='services foo 2008-01-19 abc'>
      <item id='ae890ac52d0df67ed7cfdf51b644e901'/>
    </items>
  </event>
</message>

--> Request for services foo 2008-01-19 abc 'ae890ac52d0df67ed7cfdf51b644e901'
<-- Result
<message from='pubsub.shakespeare.lit' to='francisco at denmark.lit' id='foo'>
  <event xmlns='http://jabber.org/protocol/pubsub#event'>
    <items node='services foo 2008-01-19 abc'>
      <item id='ae890ac52d0df67ed7cfdf51b644e901'>
        <out xmlns="..."><!-- XML out data --></out>
      </item>
    </items>
  </event>
</message>

<-- Delete node (or keep it, server should have a time-based disposal facility) 
... Delete services foo 2008-01-19 abc
... Delete services foo 2008-01-19 status abc

Jonathan



More information about the JDev mailing list