[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