-------------------------------- Funambol SDK API 8.5.0 -------------------------------- Included components -------------------- - CPP API 8.5.2 - J2ME API 8.5.2 - J2SE API 8.5.0 ----------------------- Funambol CPP API 8.5.2 ----------------------- - Large Object for outgoing items. Outgoing items are not split in chunks reading directly from the input streams, to save memory allocation. * Added InputStream classes, implemented BufferInputStream, added unit test (BufferInputStreamTest) * Added ItemReader, Chunk, EncodingHelper classes to manage new input stream objects * Added FileDataInputStream (and unit tests: FileDataInputStreamTest) * SyncItem now uses an InputStream (BufferInputStream by default) * Modified FileSyncSource in order to use FileSyncItem and new input stream classes - Pictures sync support: added MediaSyncSource to manage media syncs (picture syncs) * Added date and size filtering (dynamic filtering) * MediaSyncSource handles the status code 420 from Server (device full = quota exceeded). The syncsource will stop sending new items and the global error is set, in order to immediately stop sending the current item (in case of LO, see ItemReader.cpp). The error code 420 is then returned to the Client as the error code in endSync(). * Reworked FileSyncSource.cpp: if the new file received already exists, the incoming file will be renamed with a suffix until a valid name is found (append _01, _02, ...) If the file already exists and the content is the same (CRC), the new item is not added and the status returned is 418 (already-exists). * added syncmodes: smart-one-way-from-client/server and incremental-smart-one-way-from-client/server (codes 250,251,252,253) used for Media items (pictures). * MediaSyncSource does not override the Slow-sync anymore: we now use a specific syncmode (smart-one-way-from-client) so the slow-sync should be never triggered. - Support for Server capabilities: The Server capabilities are autonomously processed by APIs and params are stored under Server config node Clients can force to request Server caps via the flag: 'forceServerDevInfo' Manage Server dataStores from Server caps: * Added dataStores array in ServerConfig (DeviceConfig class) * Server dataStores are read and saved by DMTClientConfig into the ServerConfig object * updated unit-tests to parse Server dataStores (syncml/ServerDevInfTest) * added a dirty flag for Server dataStores, to avoid rewriting the whole dataStores tree on every config.save() * added ManagementNode::deletePropertyNode(), for all platforms (fixed implementation on Windows) * Added Get command to obtain Server Capabilies (added SyncMLBuilder::prepareServerDevInf()) * Added 'forceServerDevInfo' param in ClientConfig, to let a Client to force the Get of Server devInf - Fixed auto-update feature * new url is: "/sapi/profile/client?action=get-update-info" * "mandatory" type is replaced by "recommended" * added format parameter = properties * Updated the Updater, UpdaterUI and UpdateConfig classes adding the mandatory update feature. - Added DeviceManagementNode::autoFlushRegistry (only for windows, only WinCE) It is used to optimize the flushing of windows registry, since calling it many times can degrade performance - Added/improved unit tests and integration tests: * added "testUtils" to collect utils fuctions shared by different tests. All tests should always call "initAdapter" fuction to initialize the PlatformAdapter instead of PlatformAdapter::init(). This way, to avoid spam, the config will be stored under the "Funambol/client-test/" context. * Added getNewSyncManagerConfig() and getNewDMTClientConfig() functions to easily retrieve a default config. * added 'testLargeObject2': tests Large object issue (bug #7794) with a Replace command split in 2 msg, and also a Delete command in the second msg. If fails, the Server commands are not parsed in the correct order by Client APIs (fixed in v8SP1). * Added unit tests of FileSyncSource (FileSyncSourceTest.cpp) * Moved sample input files from testcases/FileInputStreamTest to testcases/samples, as they are shared. * added test "testServerError506" (SyncManagerTest.cpp) to check for a loop in SyncManager::sync(), because of a missing tag in case of Server error * added "http/TransportAgentReplacement" under test, to be used as a replacement of TransportAgent, can be used to check and modify syncML messages (beffer between SyncManager and real TrnasportAgent) * added "integration/ManyItemsTestSyncSource", can be used as a simple SyncSource to generate N new items (vCard or vCal), for integration tests * Added tests on Server capabilities (ServerDevInfTest suite) - Symbian Network error 2050: added retry mechanism to Symbian TransportAgent (max 3 attempts in case of network errors) This will make the HTTP connection more robust. Improved Symbian FConnection class, added a method to close and restore the HTTP session (restartSession). - Added SyncManagerConfig::lastGlobalError and SyncSourceConfig::lastSourceError params. They are set by SyncClient at the end of sync, and may be used by clients to know the last sync errors from config. - Fixed the mapping for items with status code 418 in SyncManager: it should be sent, since Server considers it a successful status. - Added transport event in MacTransportAgent - Added "isToAbort" check into the SyncManagerConfig to communicate to the SyncManager there is a request to cancel the sync. This flag could be set by the client to signal to the SyncManager it has to exit the sync process as soon as it can. There are some check on this flag during the process of the items both sending or receiving. The check is performed also just before and after the sendMessage function. If the flag is true, the an conventional error code 701 is returned to the caller and the sync can end smoothly - Added safe checks in DMTree::readManagementNode (fixes a crash at startup of SYM client) - Modified SyncMLBuilder addChunk and prepareItemChunk to change the itemDataType control from the creation of the command to the syncItem itself. Basically every item will put its data type inside the item. If the client doesn't specify it, the item will use the default of the sync source. Otherwise it uses the one set by the client. - Added sanity checks on server reponse body length (SymbianTransportAgent.cpp) - Modified posixLog to avoid to write wrong new [DEBUG] line - Fixed spds FileData.format method, to produce a valid XML (escape special chars) - Fixed "Status" <-> vCal STATUS property mappings, for tasks (windows branch, under vocl/winObjects) - Fixed toMultibyte() function for Symbian: it MUST check for NULL input pointers to avoid unexpected results - Added vCal 1.0 STATUS property support, for tasks (windows branch, under vocl/winObjects) - Added 'modification' attribute to FileSyncSource items (FileData Objcts), in UTC format like "20091030T103000Z" - Added unixTimeToString and getFileModTime functions for each platform (base/*adapter.cpp) - Added FileSyncItem class (and unit tests: FileSyncItemTest, SyncItemTest) - Fixed addSyncSourceConfig() in SyncManagerConfig.cpp - Added FileInputStream class, added unit test (FileInputStreamTest) - added 'updater' module (moved from Symbian Client), so it can be shared by all C++ clients The module can be used by Clients to check if a new version of a certain component is available on the Server. - * in SyncMLProcessor in the server capabilities the ServerSmartSlowSync is set to 0 and the value is 1 if smart slow sync is true, 0 otherwise * in SyncMLBuilder fixed the bug [ sync4j-Bugs-313113 ] Funambol C++ client library replies incorrectly to the server * in SyncManager fixed setServerSmartSlowSync(0); instead of setServerSmartSlowSync(false); - fixed possible loop in SyncManager::sync(), because of a missing tag in case of Server error - Clients can set a defined TransportAgent to be used during sync, instead of the default for the platform, using SyncClient::setTransportAgent() (will call SyncManager::setTransportAgent). - Some small refactoring of SyncManager::prepareSync() to process Get/Put commands, moved in specialized methods under SyncMLProcessor - Fixed parsed of devInf - Added serverLastSync property under Server config node: to ask Server devInf if URL changed - extended FolderData to handle ext tag - added FolderExt to handle ext in FolderData - added MailAccount to wrap the Account information sent by Folder from the server - fixed memory leaks in vocl component for WinContact, WinCalendar, WinNote, WinTask Bug Fixing ---------- - #8858 "Sync crashes when sending a lot of deletes" check for syncML message size moved at first step of item insertion loop in SyncManager.cpp added unit tests using fsync (for posix builds) - #8200,#8674 added adapter function fileOpen(): just mapped to stdio fopen for symbian/posix platforms. On Windows platform, using the _wfopen() in order to correctly manage file names with special chars. - #8396 RegFlushKey() function is necessary in WinCE but not in Win32 (there's an OS lazy flusher), and significantly affects performance. So it's removed from Win32 build. - #7973 for Windows Clients (vCal property PRIORITY for events/tasks has a wrong mapping) - #7794 sync fails when server sends multipart item + another item in one message Fixed the SyncML parser (Parser::getCommonCommandList) in order to process commands from the Server in the same order the Server sent them. - #311685 avoid segfault after failed authentication with Memotoo server ----------------------- Funambol J2SE API 8.5.0 ----------------------- - Updated dependencies -------------------------------- Funambol J2ME API 8.5.2 -------------------------------- Included components -------------------- - Common - Mail - PIM - Sync - Client ------------------------------------ Funambol J2ME Common API ------------------------------------ - Added convenience method to the Log to dump an error and its causing exception - Added Methods to retrieve Blackberry System properties on the class BlackBerryUtils - Changed the StringKeyValueStore interface and all its implementation. The change is backward compatible, but the put method is now deprecated and new items are now available - Extended Log and Appender so that it is possible to retrieve the content of the log. The content is described by a LogContent class. - Added the Platform class for me and android common test src. This class allows test to fetch system properties on different platforms and it is used only for unit tests. - Added Android unit test framework in common module. - Changed Updater Url to: "/sapi/profile/client?action=get-update-info" - Added recommendedUpdateAvailable() method to the UpdaterListener in order to distinguish between mandatory and recommended update. Fixed bugs ----------- - #7751 - Increase the timeout of the client waiting for a server response Note: the behaviour is improved for some devices(work on BB OS 4.5 and Nokia Series 60 3ed) in others (BB OS 4.2.1, BB OS 4.7, Nokia S40, SE, Sangung) still the same because these devices always apply the default timeout for the connection ---------------------------------- Funambol J2ME Mail API ---------------------------------- - Changed Address handling so that invalid addresses are signalled by a null value and exceptions are thrown when an invalid address is tried to be set. -------------------------------- Funambol J2ME PIM API -------------------------------- - Extended ContactParserListener and VCardFormatter so that the set of fields supported can be filtered according to client needs - Added a generic model for contacts. This model comes with an implementation of vCard parser and formatter. - Added vCalendar 1.0 formatter partial implementation. - Added vCalendar 1.0 parser partial implementation. Fixed bugs ----------- - #8357 Escape character appears as pause signal in phone numbers - #8784 vCards are no longer folded. - #8794 Newlines are encoded in quoted printable instead of vCard simple escaping, because QP is more robust. ---------------------------------- Funambol J2ME SyncML API ---------------------------------- - Added support for DEVICE FULL status from the server - Added support for server capabilities sent via Put - Code updated to use the new StringKeyValueStore interface. - Do not throw an exception if an item is received before its parent in a hierarchical sync. In this case the engine simply sets a "source parent" property into the SyncItem and allows the SyncSource to handle it. - Added the SyncReport. An object that summarized what happened during the synchronization. In particular it keeps track of each item exchanged between client and server and its status. This modification changes the public interface of the SyncListener and any client using the API shall be updated accordingly. - Added a new property to the SourceConfig where it is possible to limit the number of items to be sent to the server in a single SyncML message during slow syncs. - Improved SyncManager to allow clients to specify their own TransportAgent (the engine still defaults to an HttpTransportAgent) Fixed bugs ----------- - #5812 wrong status to alert command - #7929 Cancelling a sync may result in a generic error instead of a cancelled error on the BB sync client - Bug fix: status 418 (already exists) is no longer considered an error - Bug fix: send status to server results - Bug fix: close streams and files during file synchronization - Bugs fixed and optimizations in the CacheTracker. - Bug fix: do not invoke SyncSource.setItemStatus on status for map commands which are entirely handled by the engine. ------------------------------------ Funambol Java Client API ------------------------------------ - Hide picture sync source when syncing against servers which do not have a config sync source - The dialog Controller first sync alert is no more prompted only if the user press "Sync now" or "Try later". If the user close the popup with a command that is not related to the two options he will see the alert ont he next sync time for the related item. The alert will beprompted when the user press sync. - The DialogController interface now support the resume of alert dialogs. New Methods were added. - Enanched the dialog management logic. Display manager and Dialog controller public interface changed accordingly.