Commit Graph

178 Commits

Author SHA1 Message Date
Florian Schmaus 2b664ee88b Improve PingManager javadoc 2014-12-26 21:29:46 +01:00
Florian Schmaus b17ecb4555 Use standard manager pattern in PingManager
- No need to use a synchronized map, as the getInstanceFor method is
  synchronized
- Put the PingManager in the map where it's created and not in the
  constructor
2014-12-26 21:25:30 +01:00
Florian Schmaus 0293ca2bcd Add MultiUserChat.createOrJoin(String,String,DiscussionHistory,long) 2014-12-26 18:22:06 +01:00
Florian Schmaus 7874daa59b Use switch-case for Presence.getType() 2014-12-22 16:17:18 +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 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 ff2c71e042 VCardProvider should use a safe parser
Where e.g. entity reference expansion is disbled. Note that this affects
only the VCard provider, as it's the only provider in Smack that uses
SAX's DocumentBuilder.

Fixes SMACK-620
2014-12-16 23:13:24 +01:00
Florian Schmaus b5c9bb2611 Change jxmpp version to 0.4.1-alpha2-SNAPSHOT
Mostly because of 738276e1aca093da16ea160462bdda7523a26a14 in jxmpp,
which fixes fractional seconds parsing.

Which made also the slight change in DelayInformationTest necessary.
2014-12-12 11:50:33 +01:00
Florian Schmaus b3b42f3a9b Fix nodeVer generation for local caps information
This was broken with 5dd97a363c, where
currentCapsVersion was changed from String to CapsVersionAndHash.
2014-12-10 15:42:31 +01:00
Florian Schmaus 4c2d5d797a Ensure that the hash value is put in lowercase on the wire 2014-12-10 14:19:01 +01:00
Florian Schmaus 77f0fdc156 Add (IQ|PacketExtension)IntrospectionProvider
This simplifies code as there is no longer a distinction between
"normal" providers and introspection providers in ProviderManager
necessary.

It's also easier to get an idea where introspection is used for parsing.
2014-12-10 11:09:52 +01:00
Florian Schmaus 9e9241c0b9 Update PrivacyListManager
- to use CopyOnWriteArraySet for listeners
- do not wrap instance map in sync block (getInstanceFor() is already synchronized)
- use PacketTypeFilter instead of PacketExtensionFilter
- add removeListener(PrivacyListListener)
- rework getPrivacyLists
- don't set from attribute
- remove unused getUser()
2014-12-09 14:31:43 +01:00
Florian Schmaus 187e158260 Improve OfflineMessages.getMessages()
poll the result before waiting for a message (with nextResult()), in
order to prevent waiting unnecessarily.

Add PacketCollector.pollResultOrThrow()
2014-12-07 23:43:26 +01:00
Florian Schmaus 5dd97a363c Introduce CapsVersionAndHash
Entity Capability versions are useless without the information which
hash algorithm was used to calculate those. Right now, only 'sha-1' is
used, but this may change in the feature. This commit makes the first
steps preparing for such a feature.

Also fixes a minor bug:

-        CAPS_CACHE.put(currentCapsVersion, discoverInfo);

currentCapsVersion is not a valid key for the cache, as it does cache
"node + '#' + ver" to disco infos.
2014-12-03 13:01:13 +01:00
Florian Schmaus 96f8bee78e Remove obsolete comment from CapsExtension 2014-12-02 18:23:16 +01:00
Florian Schmaus 3cbd845df2 s/intercepter/interceptor/ in comment of EntityCapsManager 2014-12-02 18:16:34 +01:00
Florian Schmaus bc4fdf1e57 Improve javadoc of PingManager.setPingInterval() 2014-11-29 14:15:05 +01:00
Florian Schmaus 252d5172e9 Return more specific types (e.g. Collection → List)
be generic as possible in what you accept, but more specific in what you
return.

Also tweak MultiuserChatManager methods a bit.
2014-11-29 13:41:49 +01:00
Florian Schmaus 9286a1decb Rework XMPP Error class design
Introduce AbstractError, change 'Conditions' to enums. Because of
AbstractError, it was necessary that PlainStreamElement and
TopLevelStreamElement becomes an interface. Thus the implementation of
TopLevelStreamElement.toString() had to be removed.

This adds

- policy-violation
- unexpected-request

to XMPPError.Condition, and removes the

- payment-required
- remote-server-error
- unexpected-condition
- request-timeout

Conditions

The file transfer code does now no longer throw XMPPErrorExceptions, but
SmackExceptions.

Fixes SMACK-608. Makes it possible to resolves SMACK-386.
2014-11-25 13:19:32 +01:00
Florian Schmaus cc09192095 Smack 4.0.6
-----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2
 
 iQF8BAABCgBmBQJUci2fXxSAAAAAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25zLm9w
 ZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXQxMzU3QjAxODY1QjI1MDNDMTg0NTNEMjA4
 Q0FDMkE5Njc4NTQ4RTM1AAoJEIysKpZ4VI415IIH/j1eCvLIjNqNP6ytXdgomYY+
 j2i5KRHMv69La1JqtdmAeTeZfD13549s/66I5VUfegEfaADGUPr1NGrQKlb8lJBe
 YSqthMaQUybLBuCL9Lwg/3jE6s27GixRjW/Wip4ntac1wS2R3qD18lAxYIivsGJh
 gvyGHGoXvdct6teu9X0RtmyE/EOBfV63y1gVJG07Jv5/AJ2wCh9dIOD4jFuqvkoA
 cz2OfVJOIFletBV2psLxc0VVeqU9Lpba5TZuW1ZylY61z+X2rpt9BwCgBD35jTF9
 ztP2ytQY80+vZO6uP+Tl75QxdQd/e0O9oGnYbmMp1gfYQjgETaHUDxAL2uw4XNo=
 =7UY+
 -----END PGP SIGNATURE-----

Merge tag '4.0.6'

Smack 4.0.6

Conflicts:
	smack-core/src/main/java/org/jivesoftware/smack/util/DNSUtil.java
	smack-extensions/src/main/java/org/jivesoftware/smackx/caps/EntityCapsManager.java
	version.gradle
2014-11-23 20:05:44 +01:00
Florian Schmaus 775f862bc1 Add XData(Layout)Manager
to register the features with ServiceDiscoveryManager for XEP-4 and
XEP-141.
2014-11-21 09:59:24 +01:00
Florian Schmaus 848d2dbf13 Change DataFormProvider to new style provider design
By using e.g. string-switch/case.
2014-11-21 09:38:50 +01:00
Florian Schmaus bf557d498b Remove DataFormProvider from extension.providers
XEP-141 Data Forms are never used as stand alone packet extension, there
is no need to register the provider with the ProviderManager.

This makes the parse method of DataFormProvider static.
2014-11-20 23:52:01 +01:00
Anno ff977825da Support for XEP-0141: Data Forms Layout.
Data Forms layouts are a part of Data Forms and implemented as
extensions, added to a Dataform. Fixes issue SMACK-612.
2014-11-20 23:25:26 +01:00
Florian Schmaus def8fea05f Add reply timeout to NoResponseException message 2014-11-15 09:46:38 +01:00
Florian Schmaus c81cd34561 Apply builder pattern to ConnectionConfiguration
Introducing a clean split between the constant connection configuration
parameters, which are now all in ConnectionConfiguration and the dynamic
connection state (e.g. hostAddresses) which are now in
AbstractXMPPConnection.

Also removed all arguments of login() since the username, password,
resource and callback handler need now to be configured via
ConnectionConfiguration.

Also remove documentation/extensions/messageevents.md, as it's already
in documentation/legacy
2014-11-15 09:46:31 +01:00
Florian Schmaus a848437284 Make digest() in EntityCapsManager synchronized
Fixes SMACK-617
2014-11-14 21:02:18 +01:00
Florian Schmaus 69f387b344 Don't use extending stanza addressing if not strictly necessary 2014-11-10 17:37:27 +01:00
Florian Schmaus 9e797c1b17 Enable PacketExtensions for IQs
This is actually only part one, i.e. with this commit if the user adds a
PacketExtension to an IQ it will be included in IQ.toXml(). Which was
previously only the case if the IQ subclass explicitly included packet
extensions.

The second part of the change is to change the IQ provider, so that
packet extensions are automatically parsed.

Cases where PacketExtensions are used for Message and IQ are slightly
changed. The IQ sublcass now only has a field with this
PacketExtension (see for example
bytestreams.ibb.packet.DataPacketExtension).

Also changed hoxt API: Removed unnecessary indirection and made the
API more Smack idiomatic.
2014-11-10 11:43:18 +01:00
Florian Schmaus a9c798f3bb Remove empty statements 2014-11-09 18:31:07 +01:00
Florian Schmaus fe3dcba9b2 Fix javadoc warnings and deprecated methods 2014-11-02 12:12:56 +01:00
Florian Schmaus fadef7d1bf Remove ServiceDiscoveryManager.getFeaturesList()
The method was redundant, getFeatures() did already return a copy of the
features. There is also no need to make it an unmodifiable List.
2014-11-01 13:16:22 +01:00
Florian Schmaus 6fec813ec0 Rework DiscoverInfo
Make Feature and Identity immutable and allow fast lookup of those two
in DiscoverInfo.
2014-10-31 23:44:04 +01:00
Florian Schmaus b60b20e312 Remove unnecessary multiplication in DiscoverInfo.hashCode() 2014-10-31 20:02:50 +01:00
Florian Schmaus 5fb17dc85f Use ServiceDiscoveryManager.supportsFeature() in AMPManager 2014-10-31 20:02:44 +01:00
Florian Schmaus 1de2fc2a81 Refactor Bind and Roster IQ parsing code into providers 2014-10-30 13:21:36 +01:00
Florian Schmaus f94f7590a6 Store packet extensions in a HashMap
allowing O(1) lookups for PacketExtensions

The one EntityCapsManagerTest becomes obsolete with this change, as
duplicate extension elements (RFC 6120 § 8.4) are now no longer possible
after the stanza has been parsed (they still may be received on the
wire, but only the last duplicate will be added).
2014-10-28 15:11:43 +01:00
Florian Schmaus 51d84647f3 s/connection()/connection/ in PingManager 2014-10-24 12:59:41 +02:00
Florian Schmaus 403ecff2b2 Add SCRAM-SHA1 support
Thanks to Stefan Karlsson for helping with the implementation.

Also add SASLMechanism.checkIfSuccessfulOrThrow(), to increase the
security by verifying the mechanisms state at the end of SASL
authentication.

SASLMechanism now has a SASLPrep StringTransformer.

Refactor SHA1 functions out of StringUtils into SHA1 utility class.

Add MAC utility class.

Make DummyConnection getSentpacket() methods use generics to make unit
testing SCRAM-SHA1 easier.

Fixes SMACK-398
2014-10-21 15:03:48 +02:00
Florian Schmaus 6a2bc0c02d Fix MUC invitationPacketListener ClassCastException
Make sure that the Packets are of type Message. To prevent:

E/AbstractXMPPConnection﹕ Exception in packet listener
    java.lang.ClassCastException: org.jivesoftware.smack.packet.Presence cannot be cast to org.jivesoftware.smack.packet.Message
            at org.jivesoftware.smackx.muc.MultiUserChatManager$2.processPacket(MultiUserChatM anager.java:124)
            at org.jivesoftware.smack.AbstractXMPPConnection.notifiyReceivedListeners(Abstract XMPPConnection.java:854)
            at org.jivesoftware.smack.AbstractXMPPConnection$ListenerNotification.run(Abstract XMPPConnection.java:876)
            at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:390)
            at java.util.concurrent.FutureTask.run(FutureTask.java:234)
            at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201 (ScheduledThreadPoolExecutor.java:153)
            at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Schedu ledThreadPoolExecutor.java:267)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
            at java.lang.Thread.run(Thread.java:856)
2014-10-21 10:38:01 +02:00
Florian Schmaus 47e327f2e6 Fix NPE in MultiUserChatManager.getMultiUserchat()
Since the HashMap has WeakReferences as values, there are two levels at
which values could be null.
2014-10-20 21:12:51 +02:00
Florian Schmaus 5d963f7f9b Fix NPE in MUCItem if role is null 2014-10-20 21:12:33 +02:00
Florian Schmaus 17bb738e9e Make PubSubManager.getNode(String) more robust
I've got reports from users that in some cases there can be multiple
identities. Not just one, and in this case, the node type may not be the
first identity. We now iterate over all identities until we either found
one of type "leaf" or "collection".

For example one user reports an ejabberd with PEP case, where the first
identity is of type "pep", the second of type "leaf" and a third one
with category "account" and type "registered".

Also extend DiscoverInfo API with hasIdentity(String, String) and
getIdentities(String, String).
2014-10-17 14:26:06 +02:00
Florian Schmaus 888de7e1c1 Remove nullOrEmpty check for setSessionID()
in AdHocCommandData.

This check was added in 3a37b71e19, but a
session ID can be null, if it's the first invocation. This prevented
RemoteCommand.execute() from executing, since RemoteCommand's sessionID
member will be null at the first invocation.
2014-10-16 13:02:06 +02:00
Florian Schmaus 9edf06e1bb Fix typos and closing javadoc tag in RemoteCommand 2014-10-16 12:55:17 +02:00
Florian Schmaus b5328d38fa MUC: Establish callbacks before sending the presence 2014-10-14 09:41:48 +02:00
Florian Schmaus ce203e76b5 Use AbstractNodeInformationProvider where possible 2014-10-13 22:35:45 +02:00
Florian Schmaus b54d133b36 Add MultiUserChatManager
apply the Manager pattern to 'muc'. This prevents the user creating
multiple MultiUserChat instances for the same MUC.

Move the static method from MultiUserChat to MultiUserChatManager.

Also add AbstractNodeInformationProvider.
2014-10-13 22:32:34 +02:00
Florian Schmaus c674808a4a Improve MultiUserChat
Use CopyOnWriteArraySet for listeners, remove the old reflection based
listener invocation approach.

Remove unnecessary casts.

Return List instead of Collection where possible.

sendMessage(Message) now set's the MUC as 'to' and the message type to
groupchat.
2014-10-13 16:39:17 +02:00