1
0
Fork 0
mirror of https://codeberg.org/Mercury-IM/Smack synced 2024-11-16 12:12:06 +01:00
Commit graph

251 commits

Author SHA1 Message Date
Florian Schmaus
64242ace72 Add PacketCollector.getCollectedCount() 2015-01-10 18:05:00 +01:00
Florian Schmaus
7e4e3699a1 Add allowEmptyOrNullUsername()
to ConnectionConfiguration.Builder().

And prepare SASL EXTERNAL for empty or null usernames.

Also clarify some parts regarding the user field.

Fixes SMACK-627
2015-01-10 11:26:15 +01:00
Florian Schmaus
6a43bab4f5 Remove protected getConnectionListeners()
Also remove reconnectionFailed() from XMPPBOSHConnection, only
ReconnectionManager should call it.

Add and fix javadoc of ConnectionListener.
2015-01-10 11:26:10 +01:00
Florian Schmaus
8f8e0c7138 Use Async.go() in ReconnectionManager 2015-01-10 01:12:37 +01:00
Florian Schmaus
8c8ac546a9 Align thread names 2015-01-10 00:57:10 +01:00
Florian Schmaus
bb8dcc9874 Add IQ request handler API
This also moves the logic to send error IQ replies from "when there is
no IQ provider registerd" to "when there is no IQ request handler
registered". Which has for example the advantage that IQ parsing no
longer asks for a connection instance.
2015-01-08 23:15:24 +01:00
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
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
9c2f6dcfbc Add IQTypeFilter.GET_OR_SET 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
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
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
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
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
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
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
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
7874daa59b Use switch-case for Presence.getType() 2014-12-22 16:17:18 +01:00
Florian Schmaus
469548f53a Use '==' in (IQ|Message|Presence)TypeFilter
instead of 'equals()'
2014-12-22 16:17:17 +01:00
Florian Schmaus
a4e3833468 Add PresenceTypeFilter 2014-12-22 13:53:11 +01:00
Florian Schmaus
efb9a5f517 Improve logging of finalize() methods 2014-12-19 12:55:31 +01:00
Florian Schmaus
18ac83cf8c Move SmackExecutorThreadFactory out of
AbstractXMPPConnection. And use it in PingManager.
2014-12-19 12:53:16 +01:00
Florian Schmaus
eb48d02673 Make compressionMethod final in XMPPInputOutputStream 2014-12-19 11:15:01 +01:00
Florian Schmaus
4b77d00e91 Re-add the login(String, String, String) method 2014-12-18 14:07:54 +01:00
Florian Schmaus
d081055312 Use cached executor in AbstractXMPPConnection 2014-12-18 10:15:38 +01:00
Florian Schmaus
a87227c531 Rename ConnectionConfigurationBuilder to Builder 2014-12-18 10:15:35 +01:00
Florian Schmaus
add4ff5b5a Fix PubSub namespaces
Those were broken since 9e797c1b17 as they
always used the basic PubSub namespace, i.e. without a fragment. Which
resulted in e.g. delete requests look like

<iq to="pubsub.ec-xmpp" id="2GAeW-75" type="set">
  <pubsub xmlns="http://jabber.org/protocol/pubsub">
    <delete node="2e92d38c-9e90-47f6-8e26-330d25ebe96b"/>
  </pubsub>
</iq>

when the namespace should be in fact

http://jabber.org/protocol/pubsub#owner
2014-12-17 13:34:49 +01:00
Florian Schmaus
84ffa265ce Rework SynchronizationPoint
- synchronize wasSuccessful() and requestSent()
- Add comment
- Clarify log message
2014-12-17 10:29:48 +01:00
Jae Jang
d5c7a2cad3 Switch right bracket to left bracket on condition start tag.
StreamError toXML should output <..><cond>..</cond>,
not <..>>cond>..</cond>.
2014-12-10 23:15:14 +01:00
Florian Schmaus
8bfc887f63 Prefer AndroidDebugger over JulDebugger
since most JUL implementations do not print log messages of level
FINE (or lower) per default. Therefore the debugging output is not seen
by the user who wants to debug and a second step is required to
configure JUL to also log FINE or lower log messages to the console.
2014-12-10 14:00:36 +01:00
Florian Schmaus
7640414e8d Set conditionText to null if it's the empty string
This fixes e.g. IllegalArgumentException "'conflict' can not contain a
condition text", when receiving elements like

<stream:error>
  <conflict xmlns='urn:ietf:params:xml:ns:xmpp-streams'></conflict>
  <text xml:lang='' xmlns='urn:ietf:params:xml:ns:xmpp-streams'>
    Replaced by new connection
  </text>
</sream:error>

(ejabberd does this)
2014-12-10 12:36:35 +01:00
Florian Schmaus
c89d06861b Use switch-case in PacketParserUtils.parseContentDepthWithoutRoundtrip() 2014-12-10 12:28:22 +01:00