[FIX] Jabber - UnknownEntity, startStepping
Avi Bryant
avi at beta4.com
Thu Jun 26 18:11:26 UTC 2003
Fixes/enhancements for Michael Rueger's Jabber package.
- Adds a JabberUnknownEntity class that is used as the fallback whenever a
particular namespace or tag isn't found. This simply stores the raw
XMLElement.
- Doesn't halt when coming across an unknown query type (eg "get")
- Ensures that the JabberBuddyList starts stepping when first opened
-------------- next part --------------
'From Squeak3.6alpha of ''17 March 2003'' [latest update: #5269] on 26 June 2003 at 10:53:56 am'!
Smalltalk renameClassNamed: #JabberUnkownEntity as: #JabberUnknownEntity!
JabberProtocolEntity subclass: #JabberUnknownEntity
instanceVariableNames: 'element '
classVariableNames: ''
poolDictionaries: ''
category: 'Network-IM Jabber'!
!JabberBuddyList class methodsFor: 'instance creation' stamp: 'ab 6/26/2003 10:43'!
openOn: client
^(self new)
client: client;
createWindow;
openInWorld;
startStepping! !
!JabberClientIQ methodsFor: 'dispatching' stamp: 'ab 6/26/2003 10:41'!
dispatchTo: aClient
self type = 'result'
ifTrue: [^aClient dispatchQueryResult: self].
self type = 'set'
ifTrue: [^self query dispatchTo: aClient].
self type = 'error'
ifTrue: [^aClient dispatchError: self]! !
!JabberProtocolEntity class methodsFor: 'xml' stamp: 'ab 6/26/2003 10:51'!
entityClassNameForNamespace: xmlns tag: tag
^ (self tagMapping at: xmlns ifAbsent: [^ #JabberUnknownEntity])
at: tag ifAbsent: [#JabberUnknownEntity].
! !
!JabberProtocolEntity class methodsFor: 'xml' stamp: 'ab 6/26/2003 10:50'!
protocolEntityFor: xmlElement
| xmlns tag |
xmlns := xmlElement namespace ifNil: [xmlElement attributeAt: 'xmlns' ifAbsent: ['jabber:client']].
tag := xmlElement localName.
^(Smalltalk at: (self entityClassNameForNamespace: xmlns tag: tag))
unmarshalFromDOM: xmlElement! !
!JabberUnknownEntity methodsFor: 'as yet unclassified' stamp: 'ab 6/26/2003 10:48'!
element: xmlElement
element _ xmlElement! !
!JabberUnknownEntity methodsFor: 'as yet unclassified' stamp: 'ab 6/26/2003 10:49'!
tagName
^ element localName! !
!JabberUnknownEntity methodsFor: 'as yet unclassified' stamp: 'ab 6/26/2003 10:49'!
xmlns
^ element namespace! !
!JabberUnknownEntity class methodsFor: 'as yet unclassified' stamp: 'ab 6/26/2003 10:48'!
unmarshalFromDOM: xmlElement
^ self new element: xmlElement! !
JabberUnknownEntity class removeSelector: #marshalXMLOn:!
More information about the Squeak-dev
mailing list
|