Florian Schmaus
68a453d3b3
[core] Fix deprecation javadoc in Presence
...
It should hint towards the StanzaFactory not SocketFactory.
2020-05-22 09:25:20 +02:00
Florian Schmaus
054fd9ae44
[core] Replace 'packet' with 'stanza' in Presence's javadoc
2020-05-22 09:25:15 +02:00
Florian Schmaus
962071762a
[core] Optimize Presence.toXML() for empty element
2020-05-22 09:20:02 +02:00
Florian Schmaus
33720e8d97
[core] Fix potential NPE in Java7ZlibInputOutputStream
...
The field XMPPInputOutputStream.flushMethod was not initialized, which
could cause an NPE in the "switch (flushMethod)" found in
Java7ZlibInputOutputStream.getOutputStream().
2020-05-21 12:47:55 +02:00
Florian Schmaus
87591655ad
[core] Add StanzaFilter.asPredicate(Class)
2020-05-18 09:15:14 +02:00
Florian Schmaus
72c5dc5886
[core] Introduce ScheduledAction.Kind for blocking and non-blocking actions
2020-05-18 09:15:14 +02:00
Florian Schmaus
4e5536e227
[core] Make ScheduledAction.cancel() return boolean and add javadoc
2020-05-18 09:15:14 +02:00
Florian Schmaus
6daf19dbd3
[core] Add javadoc to SmackReactor.cancel(ScheduledAction)
2020-05-18 09:15:14 +02:00
Florian Schmaus
dfdd0acf91
Introduce AbstractStats
2020-05-18 09:15:14 +02:00
dc64a43f12
Prevent NPE when closing trust store stream
2020-05-17 17:01:42 +02:00
d903184ee2
Quick typo fix: s/isntead/instead/g
2020-05-13 22:32:18 +02:00
Florian Schmaus
ab2d3a2b79
[core] Deprecate AbstractConnectionListener
2020-05-13 22:14:43 +02:00
Florian Schmaus
498dde2d86
Merge branch 'master' of github.com:igniterealtime/Smack
2020-05-13 20:20:01 +02:00
Florian Schmaus
77e26fc575
Re-work data form API
...
Apply builder pattern to form fields and replace getVariable() with
getFieldName(). Refer to the field name as "field name" instead of
"variable" everyone, just as XEP-0004 does.
Improve the high-level form API: introduce FilledForm and FillableForm
which perform stronger validation and consistency checks.
Also add FormFieldRegistry to enable processing of 'submit' forms
where the form field types are omitted.
Smack also now does omit the form field type declaration on 'submit'
type forms, as it is allowed by XEP-0004.
2020-05-13 20:14:41 +02:00
Guus der Kinderen
577c59484b
pep: notification type can be normal or headline
2020-05-12 19:57:56 +02:00
Florian Schmaus
5e921e6393
core: add javadoc for StanzaView.getExtensions(Class)
2020-04-18 22:56:10 +02:00
Florian Schmaus
cdc5396f6c
core: improve signature of Stanza.addExtensions()
2020-04-18 19:03:43 +02:00
Florian Schmaus
ad13effe41
Merge pull request #382 from vanitasvitae/typo
...
Fix typo in XmppElementUtil
2020-04-13 23:03:34 +02:00
Florian Schmaus
f3e93cef32
core: do not init() closingStreamReceived sync point in initState()
...
The initState() method is also called in disconnect(). And if we reset
the closingStreamReceived sync point at disconnect, it will break the
WaitForClosingStreamElementTest integration test.
2020-04-13 22:50:02 +02:00
Florian Schmaus
6c3cd53567
pep: improve pep event filter
2020-04-13 22:37:54 +02:00
Florian Schmaus
50da46ffda
core: Add ExtensionElementFilter
2020-04-13 21:27:31 +02:00
Florian Schmaus
5114f6dfa4
core: remove deprecated methods in PacketUtil
...
Those where deprecated in 2015 with 8409dddff
("Add
PacketUtil.extensionElementFrom()"), and in 2017 with
2288825b1
("Retain smack-core API").
2020-04-13 21:25:28 +02:00
Florian Schmaus
fb7054bbe7
core: delete deprecated ToFilter
...
This filter was marked deprecated in 2017 with 5d0dd49e6
("Introduce
ToMatchesFilter"), time to delete it.
2020-04-13 20:54:04 +02:00
Florian Schmaus
988954a9db
core: delete deprecated filters
...
Those where deprecated in 2015 with d4a6d8e65
("Rename
PacketFilter (and implementing classes) and PacketExtension"), now it
is time to delete them.
2020-04-13 20:52:07 +02:00
Florian Schmaus
c49999b933
core: add shortcut via hash in EqualsUtil
...
Return false as soon as the hashed value does not match. This is
sound, since every class that implements equals(Object) should also
implement hashCode().
2020-04-13 20:40:10 +02:00
905d5dc102
Fix typo in XmppElementUtil
2020-04-13 18:18:31 +02:00
Florian Schmaus
5438fb7b33
core: add hint towards StanzaView.getExtension(Class)
2020-04-12 12:17:05 +02:00
Florian Schmaus
d498cd8499
core: re-add Stanza.getExtension(String, String) and mark deprecated
...
This method was removed with 07da9ffb4
("Do not have
Stanza.getExtension(String, String) return a generic type"). In order
to aide migration to the newer API, this commit re-adds the method and
marks it as deprecated.
2020-04-12 12:17:05 +02:00
Florian Schmaus
7bc2ebb731
core: fix javadoc of Stanza.getExtensionElement(String, String)
...
The element name must not be null or empty.
2020-04-12 12:17:05 +02:00
Florian Schmaus
7a57bb7c09
Rename Stanza.getExtension(String, String) to getExtensionElement()
2020-04-12 12:09:04 +02:00
Florian Schmaus
4ccced906e
core: add SuppressWarnings("static-method") to getReactor()
2020-04-11 22:07:16 +02:00
Florian Schmaus
2c83c73005
core: Avoid ClassCastException in getExtension(Class)
...
Ensure that he returned extension element is actually of the correct
type. It should not be common, but in theory, Smack's provider
architecture would allow for different types to be returned than the
ones one may expect.
2020-04-11 18:04:15 +02:00
Florian Schmaus
85af4a022d
compression: remove Android SDK level < 19 compatiblity
...
Since we now require Android SDK 19 or higher, we can use the method
directly.
2020-04-09 20:54:36 +02:00
Florian Schmaus
5579567572
core: use addCompressionHandler() instead directly adding to the list
2020-04-09 15:14:09 +02:00
Florian Schmaus
8b0de5ff85
Introduce TLSUtils.setEnabledTlsProtocolsToRecommended(B builder)
...
And deprecate no longer recommended methods.
Thanks to Milan Kral <milan.kral@azet.sk> for the initial PR which
triggered this commit.
2020-04-05 22:28:01 +02:00
Florian Schmaus
07da9ffb48
Do not have Stanza.getExtension(String, String) return a generic type
...
Returning a generic would allow for
List<ExtensionElement> list = stanza.getExtension("foo", "bar");
to compile (Note the we are calling getExtension(), not
getExtension*s*()).
Users are encouraged to use the type safe getExtension(Class<? extends
ExtensionElement) variant instead.
Fixes SMACK-825.
2020-04-05 22:10:05 +02:00
Florian Schmaus
62916b8490
Improve exception message of XmppElementUtil.getQNameFor()
2020-04-05 22:08:10 +02:00
Florian Schmaus
8d432e2303
Add StanzaView.hasExtension(Class<? extends ExtensionElement>)
2020-04-05 19:59:24 +02:00
Florian Schmaus
5380e5705f
Remove deprecated Packet(Extension) and DefaultExtensionElement types
...
Those where deperecated in 2015. Time to remove them.
2020-04-05 19:12:10 +02:00
Florian Schmaus
3382cbdf44
Delete superfluous newline in SmackInitialization
2020-04-05 18:59:28 +02:00
Florian Schmaus
439e29a1c7
Do not import Message.Body explicitly in SmackInitialization
2020-04-05 18:59:02 +02:00
Florian Schmaus
14c351397d
Implement message stanza <thread/> and <subject/> as ExtensionElement
...
Fixes SMACK-852.
2020-04-05 18:58:13 +02:00
Florian Schmaus
f9fb4d7627
Remove deprecated XmlStringBuilder.rightAngelBracket()
...
This method was marked deprecated with bbf89c65b
("Fix typo in
XmlStringBuilder, it's not an Angel"). Now it is time to remove it.
2020-04-05 17:26:21 +02:00
Florian Schmaus
12e20c2d6c
Remove deprecated methods/fields scheduled for removal in Smack 4.4
2020-04-04 13:03:48 +02:00
Florian Schmaus
cc636fff21
Introduce Smack's Modular Connection Architecture
...
This is a complete redesign of what was previously
XmppNioTcpConnection. The new architecture allows to extend an XMPP
client to server (c2s) connection with new transport bindings and
other extensions.
2020-04-04 13:03:31 +02:00
Florian Schmaus
39a833166a
Add workaround for truststores in JKS format when using Java >= 9
2020-03-13 16:40:46 +01:00
Florian Schmaus
863d0bf403
Fix NPE in ServiceDiscoveryManager
2020-03-09 14:41:52 +01:00
Florian Schmaus
00dd77b346
Try to guess the default truststore and path
...
Tested with OpenJDK 8 and 11. The 'JKS' fallback is for OpenJDK 11.
2020-03-09 13:39:19 +01:00
Florian Schmaus
6440f322fe
Ensure a X509TrustManager is set
2020-03-09 10:12:43 +01:00
Florian Schmaus
961e56a47c
proxy: modernize code by using (ByteArrayOutput|DataInput)Stream
2020-02-23 19:12:54 +01:00
Florian Schmaus
b6ad737aa4
proxy: do not call setTcpNoDelay() but instead flush the stream
2020-02-23 19:12:54 +01:00
Florian Schmaus
be2fc23f41
proxy: make it the caller's reponsibility to close the socket
...
This makes the code shorter as there is now a single place where the
socket should be closed.
2020-02-23 19:12:54 +01:00
adiaholic
ee3d25751d
Correct ALPHABET in BASE32.java
2020-01-28 20:19:42 +05:30
Florian Schmaus
9d626bf787
core: improve AsyncButOrdered
...
Instead of marking the handle as not running by setting the handler's
value in the map to false, we now remove simply the key if there is no
handler running. This also means we no longer need to use a weak hash
map for this.
Also reduce the size of the synchronized blocks, mainly by scheduling
the handler outside of the synchronized(threadActiveMap) block.
Make some code better readable and add some more comments. Also do
start a new handler thread if the task threw.
2019-11-08 10:14:21 +01:00
Florian Schmaus
eb4c2c5572
s/occured/occurred/
2019-10-30 12:02:36 +01:00
Florian Schmaus
b0277d7e74
Emit <starttls/> as empty element when possible
2019-10-30 12:00:20 +01:00
Florian Schmaus
2915101843
Use isEmpty() in StringUtils.requireNullOrNotEmpty()
2019-10-30 11:56:55 +01:00
Florian Schmaus
6d1252755b
Mark more methods in Stanza as final
2019-10-30 09:23:01 +01:00
Florian Schmaus
63ba524758
Make IQ(IQ) constructor protected
2019-10-30 08:20:25 +01:00
Florian Schmaus
e2223254cf
Organize imports everywhere
2019-10-29 21:12:22 +01:00
Florian Schmaus
69767e9538
Rename AbstractIqBuilder subclasses to their designated names
2019-10-29 19:34:18 +01:00
Florian Schmaus
6e32305987
Apply builder pattern to DiscoverInfo
...
This is the first transformation of an IQ type to the builder type.
2019-10-29 11:14:55 +01:00
Florian Schmaus
e2d206e741
Introduce XMPPConnection.add(Message|Presence)Interceptor
...
add deprecate addStanzaInterceptor().
2019-10-25 21:41:55 +02:00
Florian Schmaus
5db6191110
Introduce StanzaBuilder
...
As first step to immutable Stanza types.
2019-10-25 21:41:55 +02:00
Florian Schmaus
8f371c5381
Fix datatype.Scalar equals() and hashCode() methods
...
The previously used Number.equals() and hashCode() was just delegated
to Object and hence did not behave as expected.
2019-10-17 12:24:30 +02:00
Florian Schmaus
b510d373b5
reactor: have synchronized block include peeking at scheduled actions
...
If we do not peek at the scheduled actions in the reactors
synchronized block, then there is a kind of lost-update problem. While
Ractor.schedule() will call wakeup() on the selector, a thread could
have already determined the value of selectWait, while being blocked
at the start of the synchronized reactor section. Once it is able to
enter the section, it will use an outdated selectWait value.
This leads to scheduled actions not being executed on time.
Thanks to Eng ChongMeng for reporting this and suggesting the fix.
2019-10-12 10:22:31 +02:00
Florian Schmaus
05c920ab56
Fix typo in comment
2019-10-12 10:14:17 +02:00
Florian Schmaus
e23babf147
Add Stanza.setNewStanzaId() and ensureStanzaIdSet()
...
Also deprecate setStanzaId() since it was not clear if this would
create a new stanza ID or just ensure that one is set.
2019-10-05 23:16:15 +02:00
Florian Schmaus
30bbdf9fdb
Remove deprecated methods from Stanza class
2019-10-05 23:00:57 +02:00
Florian Schmaus
f0300dc906
Remove deprecated "PacketReplyTimeout" methods in SmackConfiguration
2019-09-25 23:45:29 +02:00
Florian Schmaus
eeb6c52f7e
Move SASL logic into AbstractXMPPConnection
...
Besides the way the transport handles the stream after SASL
<success/>, the SASL logic is independend from the underlying
transport (BOSH, TCP, …). Hence move it up into
AbstractXMPPConnection.
This also has the benefit that we can make some more methods private
or package-private.
Also introduce XmlStringBuilder.optTextChild(), which causes some
associated changes.
2019-09-25 13:49:21 +02:00
Florian Schmaus
3ee4dd7b3a
Move SASL authentication state into SASLMechanism
2019-09-24 10:19:12 +02:00
Florian Schmaus
93aaf6d8d7
Remove SASLAuthentication.init()
2019-09-23 20:01:10 +02:00
Florian Schmaus
bf538129c2
SASL: Add missing InterruptedException to "else if" cascade
2019-09-23 19:54:47 +02:00
Florian Schmaus
5b1d2664af
Clear saslException class field before throwing
...
Thanks to PolFW, who writes:
A SASLErrorException is thrown before we have received the "<success
xmlns='urn:ietf:params:xml:ns:xmpp-sasl'/>". This is because
SASLAuthentication is keeping a reference to a "saslException" so to
clear that after a authentication failure we have to invoke again
connect on the xmpptcpconnection to initialize again the
saslAuthentication. But it doesn't solve the issue because an
AlreadyConnectedException is thrown before the initialisation of the
"this.saslAuthentication.init();"
Note that the user uses one time tokens for authentication.
2019-09-23 19:47:37 +02:00
Florian Schmaus
bd4b91fc26
Introduce AbstractXMPPConnection.outgoingStreamXmlEnvironment
2019-09-23 16:12:48 +02:00
Florian Schmaus
002d060584
XmlStringBuilder: Map all XML serialization to appendXmlTo()
...
this is now the single place where serializatin happens.
2019-09-23 16:12:48 +02:00
Florian Schmaus
6d7b2b70e8
Add util.Consumer and use it in StateDescriptorGraph
2019-09-23 16:12:48 +02:00
Florian Schmaus
b83dacc60a
Merge branch 'master' of github.com:igniterealtime/Smack
2019-09-18 09:59:57 +02:00
Florian Schmaus
3318a44016
XmlStringBuilder: Declare actual return type instead of supertype
2019-09-18 09:01:04 +02:00
Florian Schmaus
5483e95920
LazyStringBuilder: Wrap NPE in RuntimeException
...
instead of using a Logger.
2019-09-18 09:01:04 +02:00
Florian Schmaus
8086a11c6c
XmlStringBuilder: Use potential length for target StringBuilder
2019-09-18 08:55:51 +02:00
Florian Schmaus
fb3a71a14d
Fix ConcurrentModificationException in XmlStringBuilder.appendToXml()
...
We want to append to appendable, not sb, the LazyStringBuilder we are
currently iterating over,
2019-09-18 08:48:39 +02:00
Florian Schmaus
65b6a7bfa2
Merge pull request #330 from ge0rg/errlang
...
Errors: language selection for error description
2019-09-16 17:42:45 +02:00
Florian Schmaus
f2e1d7ddd5
Add XmlEnvironment conscious ParserUtils.getXmlLang()
...
and unify parsing of common stanza attributes where this new method is
used.
2019-09-12 15:15:57 +02:00
Florian Schmaus
86c28e9d13
Use XmlEnvironment.EMPTY instead of null in PacketParserUtils
2019-09-12 15:15:57 +02:00
Florian Schmaus
09e7368313
Delete unused IQ(String) constructor
2019-09-08 18:17:35 +02:00
Florian Schmaus
65576cf3c2
Rework XML Element hierarchy and XmlStringBuilder
...
- Reduce the amount of types that are subtypes of NamedElement. See
javadoc of NamedElement for rationale.
- Work more with XmlEnvironment in XmlStringBuilder.
- Some minor changes to XmlStringBuilder API.
2019-09-07 18:17:08 +02:00
Florian Schmaus
dd4df0a5ef
Improve how XmlStringBuilder handles enclosing XML environments
...
to avoid emitting unnecessary attributes like xmlns.
Also add a test for MediaElement that checks that <uri/> does not
carry a xmlns attribute.
2019-09-04 10:22:56 +02:00
Florian Schmaus
935465a11b
Remove duplicate code in XmlStringBuilder
2019-09-04 10:22:55 +02:00
Florian Schmaus
85ef149c83
Make XmlStringBuilder.prelude() protected
...
as the user should never be required to call it.
2019-09-04 10:22:55 +02:00
Florian Schmaus
1a3067c89b
Enable werror for javadoc and fix javadoc issues
2019-08-30 12:08:30 +02:00
Florian Schmaus
851bd3c5dd
Add IllegalArgumentException to parsing exceptions
...
As it is thrown by many Element constructors.
2019-08-27 09:01:12 +02:00
Florian Schmaus
8f2eefaeb0
Fix whitespace errors in AbstractXMPPConnection
2019-08-22 15:28:54 +02:00
Florian Schmaus
c6b75d8bcc
Merge pull request #308 from adiaholic/SMACK-718
...
Prevent extremely long reply timeouts from being set.
2019-08-22 14:54:15 +02:00
Florian Schmaus
f863bd222c
Merge branch '4.3'
2019-08-22 11:52:41 +02:00
Florian Schmaus
01e0ae230b
Deprecate setHostAddressByNameOrIp() and move logic into setHost()
...
in ConnectionConfiguration.Builder.
2019-08-22 10:55:33 +02:00
Florian Schmaus
d7b7abc7eb
Delete XML whitespace before feeding the Base64 decoder
2019-08-06 12:48:31 +02:00
Florian Schmaus
1bc8a22b28
Add StringUtils.deleteXmlWhitespace(String)
2019-08-05 22:20:21 +02:00
Florian Schmaus
ca7529c192
Use Integer.compare(int, int) now that we are on Android 19
2019-08-04 23:03:42 +02:00