Smack Changelog

2.1.0 -- November 17, 2005

! Warning: This release includes changes to the API.

- [SMACK-29] - XMPPConnection was not resolving the xmpp-client service.
- [SMACK-87] - DNS is now used to look up XMPP address.
- [SMACK-82] - Connections are now secured using TLS only when server supports TLS.
- [SMACK-85] - Improved performance by removing unnecessary delays that might occur while doing resource binding.
- [SMACK-89] - An XMPPException is now thrown when SASL authentication fails.
- [SMACK-90] - Old SSL connections no longer indicate XMPP 1.0 compliance.
- [SMACK-92] - Adding existing roster entry to a new group was not working.
- [SMACK-98] - Unsubscribe presence packets were not being acknowledged.
- [SMACK-101] - Invitation rejection listeners were being fired with packets of type error.
- [SMACK-102] - Invitation listeners were being fired with packets of type error.
- [SMACK-103] - LastActivtity was throwing number format exception in certain cases.
- [SMACK-64] - Added support for JEP-55: Jabber Search. (5 votes)
- [SMACK-84] - Added support for ANONYMOUS SASL.
- [SMACK-96] - Added support for discovering shared groups of the logged user.
- [SMACK-104] - Added support for intercepting and modifying packets to be sent to the server.
- [SMACK-107] - Added support for stream errors.
- [SMACK-105] - Added support for knowing if a contact has to answer a presence subscription request.
- [SMACK-55] - ! Modified parameters of `ParticipantStatusListener#nicknameChanged` method. (1 vote)
- [SMACK-81] - ! Modified `ParticipantStatusListener` interface to include reason and actor information when kicking or banning users.
- [SMACK-106] - ! Modified `RosterListener` interface to include more specific events (e.g entries added, deleted or modified).
- [SMACK-83] - Allowed to perform SASL authentication over plain connections.
- [SMACK-95] - Data stored in the enhanced debugger can now be limited.

2.0.0 -- August 27, 2005

- [SMACK-76] - Added TLS support.
- [SMACK-24] - Added SASL support.
- [SMACK-77] - Added Resource Binding support.
- [SMACK-78] - Added Session Establishment support.
- [SMACK-79] - Created convenience class to make it easier to connect to GoogleTalk.
- [SMACK-73] - Rollback local changes when server rejects adding/removing group entries.
- [SMACK-75] - Modified XMPPConnection and SSLXMPPConnection constructors to include new service name parameter.

1.5.1 -- August 12, 2005

- [SMACK-60] - Presence priorities out of range were crashing the connection.
- [SMACK-63] - Sometimes XMPPConnection#getRoster() was taking too long.
- [SMACK-66] - Wrong attribute name and date format when requesting history since a given date.
- [SMACK-70] - IQ Time now uses a 0-23 hour format.
- [SMACK-25] - Added support for JEP-13: Flexible Offline Message Retrieval.
- [SMACK-58] - Added support for JEP-54: vCards. Thanks to Kirill Maximov.
- [SMACK-53] - Added support for JEP-92: Software Version.
- [SMACK-61] - Added new debugger that prints on the stdout.
- [SMACK-71] - Created new FromMatchesFilter that checks for exact matching.
- [SMACK-52] - Added constructor to XMPPConnection for better connection control.
- [SMACK-56] - Reported data can now hold more than one value.
- [SMACK-57] - RoomInfo now includes the room JID.
- [SMACK-59] - Date format for delayed dates is configurable.
- [SMACK-62] - The username and password fields are now optional in Registration.
- [SMACK-67] - Parsing of delayed dates was improved to be smarter.
- [SMACK-68] - PacketParserUtils#parseProperties is now public.
- [SMACK-69] - Adding or removing entries from a group can now throw an XMPPException.

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.