Commit Graph

2511 Commits

Author SHA1 Message Date
Florian Schmaus e380872a41 Add 'resumed' bool ConnectionListener's authenticated()
It's important to know if the stream was resumed. authenticated() is the
ideal callback for Managers to reset their state (e.g. cached values of
the connection state). But if the stream was resumed, the cached values
don't have to be reset.
2015-01-07 21:11:09 +01:00
Florian Schmaus 3dd1365a5a Improve Privacy List code
notably add a cache for the active and default privacy list to avoid
IQ get/response round-trips.

Also add a few methods to PrivacyListManager to get the privacy list
names. The already existing methods always returned the whole list
together with the name, which caused two round-trips.

Simplified some code.

Properly escape Privacy XML.
2015-01-07 20:54:23 +01:00
Florian Schmaus 67c0a7089b Move notifyReconnection in AbstractXMPPConnection 2015-01-07 20:11:01 +01:00
Florian Schmaus 82eb9b18dd Add and use AbstractConnectionClosedListener 2015-01-07 20:11:00 +01:00
Florian Schmaus b23c3226d2 Add MessageTypeFilter.NORMAL_OR_CHAT 2015-01-07 16:04:36 +01:00
vito-c e31b284afa Don't append closing body in XHTMLText.toString()
Also add XHTMLExtension.from(Message) and change XHTMLManager.addBody()
signature so that it expects a XHTMLText (Modifications to the original
patch by Florian Schmaus).
2015-01-07 15:00:28 +01:00
vito-c b77d61527c Add XHTMLText.appendCloseLineItemTag() 2015-01-07 14:38:38 +01:00
Florian Schmaus f6144c553c Try all Inet Addresses of the host when connecting
instead of the first resolved one.

Also some small refactorizations (e.g. getSocketFactory())
2015-01-07 14:35:23 +01:00
Florian Schmaus 717090d272 Rework incoming packet listeners and Roster
Differentiate between asynchronous and synchronous ones. Asynchronous
are the ones where the invocation order may not be the same as the order
in which the stanzas arrived.

Since it's no longer guaranteed that when a unit test calls

processPacket(stanza)

the stanza will be completely processed when the call returns, it was
necessary to extend the unit tests (mostly Roster and ChatManager) with
a packet listener that waits for his invocation. Since we now also use
LinkedHashMaps as Map for the packet listeners (SMACK-531, SMACK-424),
adding a packet listeners as last also means that it will be called as
last. We exploit this behavior change now in the unit tests.

Rename 'recvListeners' to 'syncRecvListeners' in AbstractXMPPConnection.

Rename 'rosterInitialized' to 'loaded' in Roster.

Add Roster.isLoaded().

Reset 'loaded' to false in
Roster.setOfflinePresencesAndResetLoaded() (was setOfflinePresences()).

Fixes SMACK-583, SMACK-532, SMACK-424
2015-01-07 14:35:23 +01:00
Florian Schmaus e5c6c9bdf8 Remove unused private field in Session 2015-01-07 14:35:23 +01:00
Florian Schmaus b23df7d2b8 Decrease logging verbosity in FileUtils.readFile(File) 2015-01-07 14:35:23 +01:00
Florian Schmaus 525fece291 Improved Roster(Push|Result)Listener 2015-01-07 14:35:23 +01:00
Florian Schmaus d7d4c8a4fd Use switch-case in Roster.hasValidSubscriptionType() 2015-01-07 14:35:23 +01:00
Florian Schmaus 61cc6a36da Use async packet listener in AdHocCommandManager
also some minor cleanup and logging.
2015-01-07 14:35:22 +01:00
Florian Schmaus f78a615d09 Add note about AdHocCommandManager's session sweeping 2015-01-07 14:35:22 +01:00
Florian Schmaus 9c2f6dcfbc Add IQTypeFilter.GET_OR_SET 2015-01-07 14:35:22 +01:00
Florian Schmaus d78b39d117 Remove ValidateElement.EmptyValidateElement
because it has the same semantic as BasicValidateElement.
2015-01-07 14:35:22 +01:00
Florian Schmaus c770b12348 Add log statements around socket.connect() of XMPPTCPConnection 2015-01-07 14:35:22 +01:00
Florian Schmaus a24c813ed1 Add XMPPTCPConnectionConfiguration.getConnectTimeout() 2015-01-07 14:35:22 +01:00
Christoph Fiehe 665e7914f2 Enable OSGi compliance via 'DynamicImport-Package: *'
on package layer instead of Declarative Service (DS) approach.
Restructuring and cleanup of initialization process to ensure that all
internal config files are found by the corresponding bundle
classloaders.

SMACK-343
2015-01-03 13:14:02 +01:00
Florian Schmaus 1f38e4ca0d Use new XmlStringBuilder.append(Collection<? extends Element>) in MUCUser 2015-01-02 00:14:04 +01:00
Florian Schmaus f2703bc195 Improve SHIM API
- HeadersExtension.getHeaders() now returns a List instead of a
  Collection
- Use XmlStringBuilder in Header and HeadersExtension toXML()
- Add HeadersProviderTest
- Use Smack formatting

Also remove duplicate parsing code regarding SHIM from HOXT
implementation.
2015-01-02 00:09:30 +01:00
Florian Schmaus 06add179ec Cleanup EmbeddedExtensionProvider
- Change method modifiers keyword order to JLS
- Use attributecount when creating the HashMap
- Rename 'tag' to event'
- Use diamond operator
- Use Smack formatting style
2015-01-01 17:49:52 +01:00
Florian Schmaus a87323cc33 Make casts in PubSub unnecessary 2015-01-01 17:43:17 +01:00
Florian Schmaus 5c086eeefa Add Node.getSubscriptionsAsOwner() in PubSub API
To retrieve the subscriptions of a PubSub node as owner. Fixes
SMACK-623.
2015-01-01 17:43:14 +01:00
Florian Schmaus f029b576a5 Add XMPPConnection.addAsyncPacketListener(PacketListener, PacketFilter)
and use this method in packet listeners that previously used Async.go().
2014-12-30 20:45:17 +01:00
Florian Schmaus 1d2f9749b6 Use weak ref connection in PrivacyListManager 2014-12-30 20:20:41 +01:00
Florian Schmaus ecc13e2e91 Invoke MUC invitation listener async
Basically the same fix as 191c4429da was
for file transfer listeners, just for MUC invitation listeners.
2014-12-30 20:04:29 +01:00
Florian Schmaus d6ab0cf463 Add ChatManager.createChat(String)
Also some minor refactors in Chat and changes in ChatManager.
2014-12-30 19:55:15 +01:00
Florian Schmaus c5d0fb3c7b Add support for *optional* session establishment
Don't perform XMPP session binding if the server announced the feature
as optional.

Fixes SMACK-622
2014-12-30 14:34:04 +01:00
Florian Schmaus e6593cb200 Use createMessage() where possible in MultiUserChat 2014-12-30 12:13:58 +01:00
Florian Schmaus cba681a967 Add MultiUserChat.toString() 2014-12-30 12:10:12 +01:00
Florian Schmaus ca687087d5 Remove extra whitespace in AbstractDebugger 2014-12-30 12:07:20 +01:00
Anno van Vliet b08dbc1dbc Support for XEP-0122: Data Forms Validation.
Data Forms Validation are a part of Data Fields and implemented as
extensions, added to a Datafield.

Data validation extensions are validated before adding to the message,
using the consistency rules as described in the XEP.
Fixes SMACK-621.

Minor modifications done by Florian Schmaus <flo@geekplace.eu>
2014-12-30 02:03:12 +01:00
Florian Schmaus 019b9dc5d4 Remove unused import in bytestream Open IQ 2014-12-30 01:34:51 +01:00
Florian Schmaus ff8720698a Change muc.InvitationListner to use the MUC instance 2014-12-30 01:30:13 +01:00
Florian Schmaus d27ec34fa3 Add Roster.get(All|Available)Presences(String) 2014-12-29 19:42:37 +01:00
Florian Schmaus 31e372bafd Remove duplicate code in Roster
By introducing getUserPresences(String) in PresencePacketListener.
2014-12-29 19:11:25 +01:00
Florian Schmaus c8631cf45c Use entries.containsKey in Roster 2014-12-29 18:20:11 +01:00
Florian Schmaus 5d5e3c05c5 Assert that processPacket is not called with null 2014-12-28 18:05:04 +01:00
Florian Schmaus d295939285 Remove connection field from BOSHConnectionListener 2014-12-28 17:46:47 +01:00
Florian Schmaus f4aaf387d4 Use assertAtStartTag in parseStanza 2014-12-28 17:45:11 +01:00
Florian Schmaus 08c1f2c850 Add AbstractXMPPConnection.parseAndProcessStanza()
and remove BOSHPacketReader.

Reduces the duplicate code in smack-tcp and smack-bosh. Also moves
ParsingExceptionCallback into AbstractXMPPConnection.
2014-12-28 17:43:39 +01:00
Florian Schmaus 54706e3918 Move lastStanzaReceived in processPacket
of AbstractXMPPConnection.

In worst case we loose a timestamp because handleUnparsablePacket threw
an Exception.
2014-12-28 00:47:31 +01:00
Florian Schmaus 364fe12b38 Minor refactoring in DataForm.hasHiddenFormTypeField() 2014-12-28 00:14:16 +01:00
Florian Schmaus 55a967da93 Add Packet.toString() 2014-12-27 21:12:59 +01:00
Florian Schmaus 755765120d Make FormField.Type an enum 2014-12-27 21:12:48 +01:00
Florian Schmaus 0c68d59ade Use ConcurrentHashMap instead of synchronizedMap
in ChatManager. Also use diamond operator.
2014-12-27 20:55:34 +01:00
Florian Schmaus 56bf54eab5 Don't use synchonrizedMap() for INSTANCES
in Managers. The getInstanceFor() method is already synchronized.
2014-12-27 20:55:30 +01:00
Florian Schmaus 6334733dae Add LICENSE 2014-12-27 13:36:27 +01:00