Changeset 410

Show
Ignore:
Timestamp:
01/21/03 23:45:19 (6 years ago)
Author:
sholloway
Message:

*** empty log message ***

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/RBTelepathy/RBTelepathy/Packet/Elements.py

    r408 r410  
    2727from RBFoundation.XMLClassBuilder import XMLClassBuilderObjectMixin 
    2828from RBFoundation.XMLObjectify import BaseObjectifiedXML, ObjectifiedXML 
    29 from URIAddress import URIAddress 
     29import URIAddress 
    3030 
    3131#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     
    4242        self._owner = owner 
    4343         
     44    def OnUpdateContent(self): 
     45        pass 
     46 
     47    def _toXML(self, *args, **kw): 
     48        self.OnUpdateContent() 
     49        return BaseObjectifiedXML._toXML(self, *args, **kw) 
     50 
     51#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     52 
     53class RootElementBase(PacketElementBase): 
    4454    def OnStreamData(self, data, OnPacketComplete=None): 
    4555        if OnPacketComplete is not None: 
     
    5363        return '' 
    5464 
    55     def OnUpdateContent(self): 
    56         pass 
    57  
    58     def _toXML(self, *args, **kw): 
    59         self.OnUpdateContent() 
    60         return BaseObjectifiedXML._toXML(self, *args, **kw) 
    61  
    62 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    63 #~ Messages 
    6465#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    6566 
    66 class Message(PacketElementBase): 
     67class StreamRootElement(PacketElementBase): 
    6768    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    6869    #~ OnStreamData adaptor 
     
    9596        return ''.join(results) 
    9697 
    97     #~ Utility Methods ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     98#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    9899 
     100class RouteableRootElement(PacketElementBase): 
    99101    def GetAddresses(self, nodename='to'): 
    100102        existing = self._getElements(node=nodename, namespace=self.__namespace__) 
     
    128130 
    129131#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    130 #~ Message Supporting elements 
    131 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    132132 
    133133class URIAddressElement(PacketElementBase): 
    134     def _xmlInitStarted(self):  
    135         try:  
    136             self.addr = self._attributes['addr'] 
    137         except KeyError: 
    138             if not hasattr(self, 'addr'): 
    139                 raise KeyError, '"%s" element has no attribute "addr"' % (self.__node__,) 
    140         else: 
    141             self.addr = URIAddress(self.addr) 
    142  
    143134    def OnUpdateContent(self): 
    144135        PacketElementBase.OnUpdateContent(self) 
    145         self._attributes['addr'] = str(self.addr) 
     136        if self._addr is None: 
     137            try: del self._attributes['addr'] 
     138            except KeyError: pass 
     139        else: self._attributes['addr'] = str(self._addr) 
    146140 
     141    #~ addr property ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     142 
     143    def _get_addr(self): 
     144        if self._addr is None: 
     145            self._addr = URIAddress.URIAddress(self._attributes.get('addr', '')) 
     146        return self._addr 
     147    def _set_addr(self, value): self._addr = value 
     148    def _del_addr(self, value): del self._addr 
     149    addr = property(_get_addr, _set_addr, _del_addr) 
     150    _addr = None 
     151