Smack Changelog

1.5.0 -- March 30, 2005

- [SMACK-7] - Fixed issue that caused Smack to fail when X11 was not installed on Unix.
- [SMACK-32] - Getting the system classloader could raise a security exception.
- [SMACK-33] - MUCOwner.Item now includes the "role" attribute.
- [SMACK-37] - Fixing timing issue that could make logins slow.
- [SMACK-42] - The pretty print of the EnhancedDebugger was not working well with Java 1.5.
- [SMACK-43] - Occupant#getNick() answers null when the info is available.
- [SMACK-46] - Support for cancelling notifications in message events was missing.
- [SMACK-48] - PacketListeners were not being removed from the connection when the chat finishes.
- [SMACK-50] - XML representation of Presence packets did not include error element.
- [SMACK-4] - Implemented room management in batch mode.
- [SMACK-11] - Implemented discovery of extended information of MUC rooms.
- [SMACK-13] - Implemented discovery of MUC rooms hosted by a service.
- [SMACK-38] - Notify when an occupant joins or leaves a group chat room.
- [SMACK-39] - Added support for discovering MUC services.
- [SMACK-41] - Added support for JEP-91: Delayed Delivery.
- [SMACK-49] - Modified Smack to use latest minimal version of XPP.
- [SMACK-40] - Packet extensions can now be sent when inviting a user to a room.
- [SMACK-44] - PacketReader can now parse errors that follow XMPP 1.0.
- [SMACK-45] - Sorted the list of providers in the EnhancedDebugger window.
- [SMACK-47] - Added a public API for parsing Messages and Presences.

1.4.1 - November 15, 2004

- (SMACK-21) The reader and listener threads in PacketReader are now stopped if an error occurs while starting up PacketReader. Thanks to Steve Reichert.
- (SMACK-22) XMPP addresses are now treated as case insensitive.
- (SMACK-3) Fixed possible NullPointerException when parsing invalid XHTML text.
- (SMACK-8) Answer an item-not-found error when Smack receives a service discovery for information and node is not null.
- (SMACK-17) An incorrect namespace was being used for granting and revoking admin/owner privileges.
- (SMACK-19) The roster should be able to hold any valid JID format. Thanks to Adam Olsen.
- (SMACK-20 Parsing MUCOwner packets could freeze the client.
- (SMACK-18) Implemented JEP-128. A service discovery for information can now include a dataform or any possible packet extension.
- (SMACK-15) Allow registration entries with blank values.
- (SMACK-16) Added `String getAccountAttribute(String)` method to AccountManager class.
- (SMACK-23) Connection listeners can now be removed while notifying that the connection is being closed. Fixes ConcurrentModificationException triggered on close.

1.4.0 - August 10, 2004

- (SMACK-99) Added support for Multi User Chat (JEP 45) as a Smack Extension.
- (SMACK-125) Added support for Data Forms (JEP 04) as a Smack Extension.
- (SMACK-143) Fixed memory leak problem by closing ObjectOutputStream while writing out Object properties.
- (SMACK-145) Fixed memory leak problem by cancelling unused collectors.
- (SMACK-138) Fixed error parsing properties of Messages.
- (SMACK-135) Invalid characters in the TO and FROM fields of any packet were escaped in order to prevent the connection from closing. Thanks to Ian Sollars.
- (SMACK-140) Added new constructor to XMPPConnection `XMPPConnection(String host, int port, SocketFactory socketFactory)` that allows a user to pass in the SocketFactory to use.
- (SMACK-131) Remove cached presence info when user was deleted from roster.
- (SMACK-123) TimerTask was removed to make Smack JDK 1.2 compatible again.
- (SMACK-130) Use notifyAll() instead of notify() in PacketWriter.
- (SMACK-137) Fixed security exception with unsigned applets using try/catch around System.getProperty.
- (SMACK-127) IQ packets can now have extensions.
- (SMACK-128) Registration can now include a registration data form.
- (SMACK-136) Keep-alive process should flush stream.
- (SMACK-121) Delay of keep-alive is now configurable.
- (SMACK-149) A disco info request directed to a Smack client didn't answer the client's identity.
- (SMACK-150) Added `canPublishItems(String entityID)` method to ServiceDiscoveryManager in order to discover whether a server supports publishing of items or not.
- (SMACK-133) Node attribute was missing in DiscoverInfo and DiscoverItems XML representations.
- (SMACK-134) Added `setNodeInformationProvider(String node, NodeInformationProvider listener)` method to ServiceDiscoveryManager and created new `NodeInformationProvider` interface in order to provide information about nodes defined in the client.
- (SMACK-139) Added new menu option to the enhanced debugger in order to close all the tabs of which their connections are not active anymore.
- (SMACK-124) Don't set L&F in debuggers.
- (SMACK-122) Added documentation about the new enhanced debugger.
- (SMACK-142) Base class for existing test cases was created.

1.3.0 - March 11, 2004

- (SMACK-103, SMACK-105) Fixed bugs with error packets (sending and receiving).
- (SMACK-109) Renaming RosterGroups fails.
- (SMACK-91) Add support for Service Discovery (JEP 30) as a Smack Extension.
- (SMACK-94) Host name as reported by server should be used in the Connection object.
- (SMACK-97) SUBSCRIPTION_* constants are misspelled in the Roster class.
- (SMACK-107) Allow packet reply timeout to be set.
- (SMACK-41) Unrecognized IQs should generate a "not implemented" error.
- (SMACK-116) Roster entries are not being removed from the group immediately when deleted.
- (SMACK-100) Incoming packets should only have ID's if they are set.
- (SMACK-104) Fixed bug parsing server information.
- (SMACK-112) Add a mechanism to set the roster's subscription mode before login.
- (SMACK-117) PacketWriter never terminates daemon threads.
- (SMACK-113) Once a debugger gets closed it still collects packets - OutOfMemory problem.
- (SMACK-102) Add methods to get all packet providers.
- (SMACK-95) Add group chat invitation support as a Smack Extension.
- (SMACK-93) New debug window with many enhancements.
- (SMACK-110) Added keep-alives so the TCP-IP timeouts wouldn't break connections to a server.
- (SMACK-101) Add version number information to API.
- (SMACK-96) Make AndFilter and OrFilter chainable.
- (SMACK-108) Handle multiple presences when a user is connected from different resources.
- (SMACK-111) Add listener support for new connections.
- (SMACK-92) Add support for "Discovering Support for XHTML-IM".
- (SMACK-106) Chat objects no longer have to depend on a threadID (this is settable).
- (SMACK-120) Chat.getChatID() is now Chat.getThreadID().

1.2.1 - September 28, 2003

- (SMACK-79) Added XHTML message support as a Smack extension, which allows sending richly formatted messages.
- (SMACK-88) Fixed bug with parsing registation packets that contain extra data.
- (SMACK-90) Added support for getting registration instructions.
- (SMACK-85) Exceptions in the PacketWriter now correctly generates a connection error event.
- (SMACK-84) Added `isSecureConnection()` method to XMPPConnection class.
- (SMACK-86) Added `isJoined()` method to GroupChat class.
- (SMACK-87, SMACK-82) Added the following methods related to rosters: `Roster.contains(String user)`, `Roster.getEntry(String user)`, `RosterGroup.getEntry(String user)`, `Roster.removeEntry(RosterEntry entry)`.
- (SMACK-73) Fixed bugs handling roster remove and update operations.

1.2.0 - August 29, 2003

- ! A package structure and documentation has been added for Smack extensions, which cover extensions to the XMPP protocol. The initial extensions are for message events (JEP 22), roster item exchange (JEP 93), entity time (JEP 90), and private data storage (JEP 49).
- ! The smack.providers file is now loaded from META-INF/smack.providers rather than WEB-INF/smack.providers. This location makes much more sense for generic JAR files, but may break existing provider implementations until the provider file is moved.
- Fixed IQ error sub-packets.
- The default packet extension handler didn't deal with empty elements well and also had a bug with attribute handling.
- Added a ConnectionListener feature which allows clients to be notified of normally closed connections, and connections closed due to errors.
- Fixed bug where the roster list could become corrupted after moving a user back and forther between groups.
- Fixed bug where in some cases presence packets were not getting tracked by the Roster class correctly.
- RosterListener has a new notification method that is called every time the presence of a user in the roster is updated.
- Added Roster.getEntries() method to return all entries in the roster.
- Added RosterGroup.contains(String) method to check to see if an XMPP address is part of the group.
- Minor fixes to Javadocs.
- Content can be copied and cleared from the debug window using a pop-up menu.
- The Chat constructor that took an existing chatID as an argument did not propertly initialize support for message listeners.
- Added support for anonymous logins.
- IQ is now an abstract class.
- Fixed bug where XHTML messgaes could cause parsing errors.

1.1.1 - June 25, 2003

- Setting Object packet properties was broken.
- Added getRoom() method to GroupChat.

1.1.0 - June 19, 2003

- New system to handle custom IQ packets and custom packet extensions through the new provider sub-package.
- Added packet filters for packet extensions.
- Added additional options for responding to subscription requests.
- Added method to retrieve the roster item count from roster packets.
- Added ability to set the ItemStatus on a roster packet.
- Added remove option to roster packet.
- Various documentation fixes/improvements.
- Fixed NullPointer exception on the setName method of the RosterEntry class.
- Groupchat class was listening for wrong message types -- fixed.
- Changed properties element name to "properties" instead of "x". Note: this will break compatability between earlier versions if they are trying to send packet properties back and forth. However, we thought it was best to make this change now.
- Turning on debugging via a system property wasn't working.
- Fixed spelling error in Roster class method name.
- Fixed stream not being closed properly.
- The "to contains" and "from contains" filters now ignore case.

1.0.1 - April 30, 2003

- Fixed bug that caused applets using Smack to crash with a security exception.

1.0.0 - April 25, 2003

- Initial official release.