summaryrefslogtreecommitdiffstats
path: root/src/com
AgeCommit message (Collapse)Author
2016-02-01Add S5BProxyRequest Serializers and ParserAlex Clayton
Adds a S5BProxyRequestParser and a S5BProxyRequestSerializer to stroke based on the Swiften classes of the same name. These has been missed out previous stroke patches for some reason. Test-information: Code inspection against the Swifen classes. Sanity test ran the unit tests for stroke they still all pass (note I could not find any unit tests for this class to transfer from Swiften). Change-Id: Ic5463169ada33c72127e87a416d42a650aad6399
2016-01-28Changes to FileTransfer to be inline with current Swiften codeAlex Clayton
There has been some changes to the file transfer clases in Swiften since Tarun's patch was written. This patch updates the java classes to bring them in line with the swiften one. In details IBBSendSession - added code to clean up onResponse connection when not needed. In Swiften this was done by keeping reference to current session using boost bindings to remove binding. In java we have to keep a reference to the current onResponse connection and disconnect it when not neeeded. IncomingFileTransferManager - Remove redundant IQRouter field. LocalJingeTransportCandidateGenerator - Do not advertise link-local IPv6 addresses in FT candidates OutgoingSIFileTransfer - File deleted SOCKS5BytestreamProxiesManager and SOCKS5BytestreamProxyFinder - Search for all proxies instead of just one. Test-information: Ran make and make test to check everything built ok and that the unit tests still passed. Change-Id: I696444e5074fe20625243693a44c836306b3a41e
2016-01-27Some fixes for File Transfer PatchAlex Clayton
Some fixes that were required for the File Transfer Patch (see patch notes on Gerrit). Test-information: By code inspection. Ran against MLC (after modification so it works for stroke interface changes introduces in a previous patch) it still runs correctly. Ran unit tests they still all pass. Change-Id: Ib49d9f9160f5e6b6b578f16695f8e8bc0f96a412
2016-01-21Completes FileTransfer according to Swiften.Tarun Gupta
S5BTransport Session still needs generic T. FileTransfer, OutgoingFileTransfer and IncomingFileTransfer are made an interface due to the need of multiple inheritance in IncomingJingleFileTransfer and OutgoingJingleFileTransfer. Corresponding documentation has been updated. License: This patch is BSD-licensed, see Documentation/Licenses/BSD-simplified.txt for details. Test-Information: None. Change-Id: If44cf387767865c37492d871c12d623f94ebaa3a
2016-01-18Some Jingle FixesAlex Clayton
Some fixes to the Jingle classes for the previous patch. Test-information: By code inspection. Ran Unit Tests there were no failures. Change-Id: I61210dd1ec2c7e0dd11d67a45a0ced63952804c7
2016-01-14Completes Jingle.Tarun Gupta
Adds Listenable, JingleSession, JingleContentID, FakeJingleSession, JingleSessionListener, JingleSessionManager, JingleResponder. NotifyListeners are not in line with Swiften and have to be corrected. License: This patch is BSD-licensed, see Documentation/Licenses/BSD-simplified.txt for details. Test-Information: None. Change-Id: I6533b2be02a0843277a63ca115348ff6138a0fc0
2016-01-14Minor changes to PubSubManagerImpl and StanzaAckRequester.Tarun Gupta
Small changes to PubSubManagerImpl and StanzaAckRequester making them equivalent with Swiften. License: This patch is BSD-licensed, see Documentation/Licenses/BSD-simplified.txt for details. Test-Information: Added tests for StanzaAckResponder and StanzaAckRequester, which passes. Change-Id: I99878fc6552ed18e353848a0cea6584c26b2ba0c
2016-01-14More Changes to NetworksAlex Clayton
Some more changes to the Networks classes. Based on comments on the last patch. Test-information: No longer see crash I was seeing when I ran the updated Stroke against MLC. Ran unit tests. Change-Id: Id577e5322bab0ec48f0353907f82e72bc93b848a
2016-01-12Make Networks equivalent with Swiften.Tarun Gupta
Adds ProxyProviders, DomainNameResolvers and DummyConnection. License: This patch is BSD-licensed, see Documentation/Licenses/BSD-simplified.txt for details. Test-Information: Tests added for ChainedConnector, Connector and HostAddress. Test also added for ComponentConnector, which needed bits of Network. Five assertions are commented in ConnectorTest, which fails and will be updated after review. Change-Id: I8a62841eb2f9c109bc3a94865b7a003b33493e11
2015-09-17Do not override system default time-zone.Alan Young
Remove calls to TimeZone.setDefault(). Whatever problem the changes that introduced these calls were supposed to solve, overriding the system default timezone is not the right solution. Change-Id: I626419a1c00fe9d68df0c63472d4433e12502acb
2015-09-11Add JavaConnection.ActivityWatcher for watching connection activity.Alan Young
If a JavaConnection is supplied with a JavaConnection.ActivityWatcher at creation time, then each of its Worker threads will signal when they become active and when they potentially go to sleep (on select()). This allows clients to manage a device's power state or any other suitable subsystem. Change-Id: I3c83cb8ce5a087dd6fc5d402c75f830f5deca282
2015-09-11Improve efficiency of JavaConnection reads.Alan Young
Given that doRead() ends up populating a SafeByteArray as part of the result is is more efficient to pass an empty SafeByteArray to doRead() and push each chunk of data read directly to the it rather than use an intermediate ByteArrayOutputStream. SafeByteArray.getData() will do any concatenation necessary. It is unnecessarily inefficient to use a class instance to return the connection status from doRead. Remove JavaConnection.ReadResult. Change-Id: I6c8dc000d9030d3929c71444eb5b489df93f1987
2015-09-11Make JavaConnection fully event driven - no 100ms spinAlan Young
Refactor JavaConnection to make it fully event-driven via select for both reads and writes. Remove the 100ms spin when there are pending writes. Encapslate all the management of the select mask and the write queue within Worker and protect via a common lock. Change-Id: I1a709f9b12a949448923f51c2d434746c9190c9d
2015-08-26Add the missing initialisation for authenticator for SASL ExternalGurmeen Bindra
Missing initialisation for client authenticator for SASL external was causing null pointer exceptions. This patch corrects it by initialising the authenticator as is done in swiften. Test-information: tested using an XMPP admin client that does SASL External Change-Id: I321b425c1c28e0424effd9cb974980c392e48b68
2015-08-21Fix code to not throw StringPrepParseException that was part of ICU jarGurmeen Bindra
The IDNConverter interface now throws java strandard IllegalArg exception instead of the ICU specific StringPrepParseException. Users of stroke that are not using ICU will now be able to use it without the icu jar. Test-information: Sanity tested by connecting to an XMPP server using an XMPP client Change-Id: I6999ae0c690b70bc748f131908a758a01dac20b9
2015-08-21Correct ClientSession.finish()Alan Young
The default, clean finish() method needs to set up no error, not a null instance of Error.Type (with type field == null). Change-Id: I6912392b226dd84c411e2369844b9aee656d2e6f
2015-08-20Fix NPE in Stanza.getTimestampFrom() when Delay.getFrom() returns nullAlan Young
Change-Id: I2ccf6ae1293859dc8bd49731ee55a90b383d30a8
2015-08-19Handle case SessionStream.getTLSFinishMessage() returns null.Alan Young
Change-Id: I41924cdd6d32deb9d47b47a3fc7ffb3b55947029
2015-08-17Remove unnecessary Crypto functions from StringCodecs.Tarun Gupta
Remove SHA1 and HMACSHA1 from StringCodecs as they are already provided by CryptoProvider, and is equivalent to Swiften. License: This patch is BSD-licensed, see Documentation/Licenses/BSD-simplified.txt for details. Test-Information: Add tests for Base64 and PBKDF2, which passes. Change-Id: Ife05f185a10a79c9d69a12235f1b0397d022d992
2015-08-17Update Client.Tarun Gupta
Updates all bits of Client to be in parity with Swiften. Some part of code which depends on Network is commented. License: This patch is BSD-licensed, see Documentation/Licenses/BSD-simplified.txt for details. Test-Information: Tests added for: ClientBlockListManager, ClientSession and NickResolver. All tests pass. Change-Id: I5b9b0e5ae5b2df58202e2349ba24e4544d9a4614
2015-08-17Updates Presence in accordance with Swiften.Tarun Gupta
Updates DirectedPresenceSender, PayloadAddingPresenceSender, PresenceOracle and SubscriptionManager. License: This patch is BSD-licensed, see Documentation/Licenses/BSD-simplified.txt for details. Test-Information: Tests added for: DirectedPresenceSenderTest, PayloadAddingPresenceSenderTest and PresenceOracle. All tests pass. Change-Id: I9ad899965f5ac32c6f21805b530c234e391be6ba
2015-08-14Completes TLS & Session.Tarun Gupta
Adds TLSError and TLSOptions. Updates BasicSessionStream, SessionStream and Session. Updates Client and Components to accomodate changes in TLS. Also completes TLSLayer in StreamStack which was pending due to TLS port. License: This patch is BSD-licensed, see Documentation/Licenses/BSD-simplified.txt for details. Test-Information: Tests added for Certificate and ServerIdentityVerifier. Test updated for ComponentSession. All tests pass. Change-Id: I34a8fe068c1e8af5348cc4ab49d3d1ed118ae833
2015-08-13Revert pessimistic allocation of collection members in VCard.Alan Young
The way a VCard is used, pessimistic allocation puts an undue load on the Java GC. Change-Id: Ifced03a759783db2de911fc22dd40f6e475e5596
2015-08-13Add default-parameter versions of invitePerson() to MUC.Alan Young
Clean up imports. Add @Override annotations as appropraiate to MUCImpl and MockMUC. Change-Id: Id34849364fe1e4cdd7709b2cc7b397d007c2868c
2015-08-13Rework ByteArray implementationAlan Young
Use and ArrayList<byte[]> as the internal storage, instead of Vector<Byte>. Constructors and methods that supply a byte[] to add to the instance will have that value copied, rather than just taking ownership of the byte[]. There is an argument, on efficiency grounds, for providing methods that take ownership of the supplied argument. The earlier discussions about use of synchronization in the class are revisited. This is a low-level container that should be thread-safe or take precautions against non-thread-safe use. It is anticipated that the vast majority of uses will be thread-safe. Use of synchronization permits occasional deviations from this without imposing any significant overhead for the normal case - uncontended synchronization is close to free. Change-Id: Ifb7b2915d5c96345c53aec8e33673d892c430431
2015-08-13VCard.getPhoto() to return null for absent photo.Alan Young
Most of the time when VCard.getPhoto() is called it is only used to determine presence or absence of a photo. Thus, it makes no sense to allocate an empty ByteArray() just for this purpose. Return null instead, if absent. Change-Id: I3bae02ffbece5589c74c950bbb4c0db6c0376c76
2015-08-03Make SASL equivalent with Swiften.Tarun Gupta
Adds DIGESTMD5ClientAuthenticator, DIGESTMD5Properties, ExternalClientAuthenticator, PLAINMessage. Updates Client, ClientSession, CoreClient, ConnectDisconnect, StrokeGUI to reflect changes made in SASL. Updates ClientAuthenticator, SCRAMSHA1ClientAuthenticator, PBKDF2. License: This patch is BSD-licensed, see Documentation/Licenses/BSD-simplified.txt for details. Test-Information: Added tests for DIGESTMD5ClientAuthenticator, DIGESTMD5Properties, PLAINClientAuthenticator, PLAINMessage. Update test for SCRAMSHA1ClientAuthenticatorTest. All tests pass. Change-Id: I4fd38f922cab7e4c4548d9706f6ad3b9e1506e81
2015-08-03Add tests for EventLoop.Tarun Gupta
Adds SingleThreadedEventLoop. License: This patch is BSD-licensed, see Documentation/Licenses/BSD-simplified.txt for details. Test-Information: Tests for EventLoop and SimpleEventLoop passes. Change-Id: Ifda63a328e0adfb2da0eb2a1038805042ed0f6fb
2015-07-29Reinstate "disconnect()" method for MUC classNick Hudson
A recent change (9ead0fdcca595df9dc3f4143122776b398dbe405) made MUC an abstract class, and moved all functionality into MUCImpl (to correspond with Swiften). The "disconnect()" method was moved to MUCImpl, which means that any existing application which used it would break. The disconnect() method is required in java (although it's not in Swiften) because it provides a way to disconnect signals that are connected in the MUC constructor (or MUCImpl constructor now). While the signals are connected, the MUC object will not be eligible to be garbage collected, and this can lead to growing memory usage for an application which creates lots of MUC objects for a given connection. Adding a call to "disconnect()" in the finalizer for the MUC would not be effective because the finalizer only gets called when the MUC is gc'd, and the MUC can't be gc'd until the disconnect() has happened. Test-information: Unit tests pass. Before this change, an application calling "MUC.disconnect()" fails to compile. After this change, the application compiles. Tested an app that creates lots of MUC objects, and checked, using the debugger, to see if the objects were being garbage collected when the application dropped its reference to the objects. When not calling "disconnect()", the MUC objects are not garbage collected until the owning StanzaChannel is closed. When a call to "disconnect()" was added, the MUC objects are garbage collected soon after the application finishes using them, even though the StanzaChannel is still in use. Change-Id: Icd6c354e34d2124c292ae5d44bc47725a6e73df5
2015-07-28Fixed CancelledKeyException in JavaConnectionPeter Ballard
If synchroniseReads was enabled then if was possible for CancelledKeyExceptions to occur if the channel closed, whilst data was being procsessed on the event loop. I have also made the selectorKey_ reference volatile as this is used by both threads since my previous change 1afab8c1f2c417b08371bc12569e03171851d785 Change-Id: I48edcab9ef090b8a4561331d6aecc7f95cb8924d
2015-07-28Completes Components and AdHoc.Tarun Gupta
Adds Component, ComponentConnector, ComponentError, ComponentSession, ComponentXMLTracer, CoreComponent, ComponentSessionStanzaChannel, ComponentXMTracer, CoreComponent. Updates CoreClient, StrokeGUI, BasicSessionStream and SessionStream and Client, so that signal definition can be changed. Updates ComponentHandshake element, Entity. Updates OutgoingAdHocCommandSession to have feature parity with Swiften. This patch does not port Client or Session fully, which will be done in separate future patches. License: This patch is BSD-licensed, see Documentation/Licenses/BSD-simplified.txt for details. Test-Information: Test added for ComponentSession, which passes. Test for ComponentConnector cannot be ported right now and will be done in future patches, as it requires some bits of Network to be ported. Change-Id: I7138a2041fe28a2be7ac57cb47b15365f9334b24
2015-07-28Complete StreamStack and add tests.Tarun Gupta
TLSLayer could not be updated because it requires TLS to be ported first. Updates other classes, only for having compatibility with SafeByteArray because of updates in Stream Stack. License: This patch is BSD-licensed, see Documentation/Licenses/BSD-simplified.txt for details. Test-Information: Tests added for StreamStack and XMPPLayer, which passes. Change-Id: I8707fc1f16d622d2a90f6f39f671b7e7c46aa170
2015-07-28Update Serializers and Parsers.Tarun Gupta
Updates Serializers and Parsers along with one minor change in XMPPlayer. Update Non Payload Serializers to return SafeByteArray. Updates SafeByteArray to return SafeByteArray on append and plus method. License: This patch is BSD-licensed, see Documentation/Licenses/BSD-simplified.txt for details. Test-Information: None. Change-Id: I6fe665a26b10cac37b3e3acd9ec15c211ac9b8ab
2015-07-22Completes MUC in accordance with Swiften.Tarun Gupta
Updates MUC to be an abstract class. Updates MUCBookmark, MUCManager, DirectedPresenceSender. Adds MUCImpl. License: This patch is BSD-licensed, see Documentation/Licenses/BSD-simplified.txt for details. Test-Information: Test updated for MUC, in accordance with Swiften, which passes. Added MockMUC too. Change-Id: If5aa672e8adc093162d3c9890c8437d3edadea68
2015-07-22Complete VCard functionalities.Tarun Gupta
Updates VCardManager, VCardMemoryStorage and VCardStorage. License: This patch is BSD-licensed, see Documentation/Licenses/BSD-simplified.txt for details. Test-Information: Test added for VCardManager, which passes. Change-Id: I0d4f1dbb647f262ff2a8967807fb798a8181b0b5
2015-07-22Update Queries.Tarun Gupta
Updates RawXMLPayload Element, SoftwareVersion Element. Updates IQRouter, Request, Responder, SoftwareVersionResponder. Updates ErrorSerilaizer access. Adds RawRequest, GetInBandRegistrationFormRequest, GetSoftwareVersionRequest, and SetInBandRegistrationRequest. License: This patch is BSD-licensed, see Documentation/Licenses/BSD-simplified.txt for details. Test-Information: Tests added for: IQRouter, Request and Responder. Rest, all tests passes. Change-Id: I22308cc05bd1a6c28f3937a44d997e1da47e2891
2015-07-22Update Roster functionalities.Tarun Gupta
Updates RosterPushResponder, XMPPRoster, XMPPRosterController. Also adds XMPPRosterSignalHandler. License: This patch is BSD-licensed, see Documentation/Licenses/BSD-simplified.txt for details. Test-Information: Adds tests for XMPPRosterController, XMPPRosterImpl. All tests passes. Change-Id: Iee3530510342ea5977022237aaa6dfbffa390408
2015-07-22Tidy up finalize method in SimpleEventLoopNick Hudson
If the finalize() ever gets called, it should, by convention, invoke the superclass finalize() method. This change makes it do that. Test-information: Unit tests still pass Change-Id: I0171cb1b6e1cce61a4c3140f669585f14e797dbd
2015-07-21Adds Disco Features.Tarun Gupta
Adds DiscoServiceWalker, FeatureOracle, JIDDiscoInfoResponder. Updates CapsInfoGenerator, ClientDiscoManager, EntityCapsManager, EntityCapsProvider, IQ Element, Request. License: This patch is BSD-licensed, see Documentation/Licenses/BSD-simplified.txt for details. Test-Information: Tests added for: CapsInfoGenerator, CapsManager, DiscoInfoResponder, EntityCapsManager, JIDDiscoInfoResponder. All tests pass. Change-Id: Ib7cd08ff6f72b7649e4819943b627459c69a1397
2015-07-20Add StringIndexOutOfBounds catch to IDNAAlex Clayton
When run with java 7 class IDNA.getEncoded was throwing a StringIndexOutOfBounds exception if it was passed a String begining with '.isode'. This has the knock on effect of some of one of the isode MLC tests failing. This was caused by IDN.toAscii throwing the exception, when it should only thrown IllegalArgumentException. Java 7 is no longer supported so I can't raise a bug for this, a fix for stroke is easy though, just add the StringIndexOutOfBoundException to the catch block. Test-information: Ran the tests that were failing in eclipse on my machine (which runs java 7) tests now all passed correctly. Sanity test that tests still passed when run on command line against java 8. Ran the Stroke JUnit test against the code. Tests all passed when using latest version of java 7 (7_79) and when using java 8. Change-Id: Ifc9c830be7a0e5c9e5f2330a6782eff2401f18cb
2015-07-20Fix ClientSession class bug due to recent stroke changesGurmeen Bindra
Stroke was brought in line with swiften as a result of which strong (certificate based bind) authentication between client and xmpp server stopped working. This was happening because of missing "=" in the <auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='EXTERNAL'>=</auth> The AuthRequestSerialiser was not adding "=" because the ByteArray object that was passed was null. This patch fixes the ClientSession class to pass empty ByteArray object as is done in existing swiften code. Test-information: strong bind works using java client to xmpp server Change-Id: Ide2d61723d92df19a251db7f1eb9f1581329f782
2015-07-08Add option to only read from TCP socket when previous read has been processedPeter Ballard
By default this option is disabled, existing usages will function as normal. This option stops the JavaConnection from reading data if the previous read has not been processed by the event loop. Previously constrained devices were seeing OutOfMemoryErrors, if they were not able to process the incoming data quick enough. This change does not affect the write behavour. Change-Id: I47bc0eafba32336f5bf250ccb1fea530f51d328e
2015-07-07Add GenericPayloadLoader & GenericPayloadPersister classes.Alan Young
Implemented as separate classes for Stroke, rather than as single combined class in Swiften because of type-erasure. Make VCardSerializer & DiscoInfoSerializer generally visible (public). Change-Id: I9e93c71377c417949da1c70e4219d3813a066087
2015-07-07Update Avatar access model.Alan Young
Use the String avatar hash as the general handle for an avatar. AvatarManager.getAvatar(JID jid) will return null if no avatar is available. AvatarManager.getAvatarPath() and AvatarStorage.getAvatarPath() are deleted. Make AvatarProvider & AvatarManager abstract classes instead of interfaces so that their onAvatarChanged Signals are not static fields. Implement delete() for AvatarManagerImpl and AvatarProvider & subclasses so that signal connections can be released. Add @Override annotations as appropriate. Change-Id: Ia7c9d7607b642bb42c373f81dc6be9a60f0f2134
2015-07-07Update JingleFileTransferFileInfo in light of recent discussions related to ↵Tarun Gupta
Date. Updates VCard Element, JingleFileTransferFileInfo to allow dates to be null, as a indicator for not a valid date time. License: This patch is BSD-licensed, see Documentation/Licenses/BSD-simplified.txt for details. Test-Information: Corresponding tests changed, which passes. Change-Id: I9c9b4a84b7bebc18e8ef8ba5050e45ac2f13aa65
2015-07-07Adds tests for Parser and Serializers.Tarun Gupta
Adds PubSubEvent Element. Adds StreamFeaturesSerializer. Adds ParserTester, ElementParserTester, StanzaParserTester, PayloadParserTester, PayloadsSerializer and EnumParser. Updates Error Payload, JingleFIleTransferHash Elements/ Updates StreamFeaturesParser, ParserElement. Updates Delay Serializer, Error Serializer. Updates AuthChallenge and AuthRequest Element. License: This patch is BSD-licensed, see Documentation/Licenses/BSD-simplified.txt for details. Test-Information: Test are added for: AuthChallenge Serializer, AuthRequest Serializer, AuthResponse Serializer, AuthSuccess Serializer. GenericPayloadTreeParserTest. IQ Parser. Message Parser. Presence Parser. StanzaAck Parser. Stanza Parser. StreamFeatures Parser and Serializer. StreamManagementEnabled Parser. Private Storage Parser and Serializer. RawXMLPayload Parser. Storage Parser and Serializer. Error Serializer. Jingle Serializer. PubSubItem Serializer and PubSubItems Serializer. Serializing Parser. All tests passes. Change-Id: I79e00dc5b5c4f85e659bf88b1547dd7c17825805
2015-07-06Completes JID functionalities.Tarun Gupta
Completes JID by providing all features Swiften provides including Escaped and Unescaped Node. License: This patch is BSD-licensed, see Documentation/Licenses/BSD-simplified.txt for details. Test-Information: Test added for JID, which passes. Change-Id: Ia61dad0ed93a153186b9f78e2669f675f51e3734
2015-07-06Add Internationalized Domain Name Features.Tarun Gupta
Adds IDNConverter interface, ICUConverter using ICU for Stringprep. Also updates Makefile and build.xml by adding path to icu4j to compile tests classpath, so that icu4j.jar can be used in the tests. IDNConverter tests need StringPrepParseException from icu4j jar. License: This patch is BSD-licensed, see Documentation/Licenses/BSD-simplified.txt for details. Test-Information: Added test for IDNConverter, which passes. Change-Id: I56aacf080a10216a2455cf561de567f5666cd0c9
2015-07-06Minor Fixes for Elements.Tarun Gupta
Adds Block Element, BlockList, and Unblock Element. Updates some Elements just for consistency. Updates Last Element, its Parser and Serializer for consistency with Swiften. License: This patch is BSD-licensed, see Documentation/Licenses/BSD-simplified.txt for details. Test-Information: None. Change-Id: If40c2516b944b1939db08721bb4de4554c3264f6
2015-07-06Add Base Functionalities.Tarun Gupta
Adds FileSize, SafeString, StartStoppable, StartStopper and TriState. License: This patch is BSD-licensed, see Documentation/Licenses/BSD-simplified.txt for details. Test-Information: None. Change-Id: I94020700a77bb33dab39fb838eefc96c07b73868