StreamLink for Browsers 4.4.11-2 - Release Note ========================================== Introduction ============ Overview ======== This document provides release notes for all minor releases based on version 4.4 of StreamLink for Browsers Related Documents ================= * RTML User Guide * RTSL User Guide Components ========== * SL4B 4.4.11-2 * RTML compatibility layer * RTSL compatibility layer Product Information =================== Product Name: StreamLink for Browsers Latest Version Number: 4.4.11-2 Latest Release Date: 18 Dec 2007 Known Issues ============ JavaScript RTTP provider issues: It is not currently possible to open two or more windows within a single instance of a browser (e.g. by using the CTRL-N shortcut) containing SL4B enabled pages that connect to the same Liberator. This is due to a standard configuration option within the browser (both in Microsoft Internet Explorer and Mozilla Firefox), which restricts the browser to only being able to open two concurrent connections to the same server. Requesting a type 2 or type 3 record object from the Liberator with a field list results in an incorrect and/or incomplete image being received. The JavaScript RTTP provider does not work if the SL4B-enabled page is served up over http, whilst the Liberator connection is over https, or vice versa. This is a limitation of XMLHttpRequest object. Object creation and deletion methods return undefined, rather than true or false to indicate whether the action was successful or not. RTTP page objects are currently unsupported by the JavaScript RTTP provider. Throttle messages are unsupported by the JavaScript RTTP provider, attempts to invoke the setThrottleObject(), setThrottleObjects() and setGlobalThrottle() methods will result in exceptions being thrown. Applet RTTP provider issues: The multiupdates configuration option causes errors in a SL4B enabled page that has requested directory object(s) from the Liberator. The multiupdates configuration option causes a Java/JavaScript security exception in Mozilla Firefox and the SL4B-enabled page is loaded from a different web server to the Liberator. Master/Slave frame issue: A script error occurs if the master frame is specifically reloaded whilst a slave frame is still open. This results in the slave frame being detached from the master, and it will cease to receive updates. Debug console issue: The "about:blank" debugwindowtype attribute is not always reliable for launching a debug console in IE. Sometimes the console displays the error message "DebugWindow Error: Exception occurred whilst processing window.onload ([object Error])". This is due to a timing issue with the document.domain property being set. Refreshing the browser page typically resolves this. KeyMaster support: The bug fix that allows an SL4B client to re-request a KeyMaster token each time the client needs to log into a Liberator has introduced a dependency on KeyMaster 4.3. From version 4.3 onwards, it is not possible for SL4B to request a token from a pre-version 4.3 KeyMaster. Please update to the latest version of KeyMaster accordingly. Additionally, the KeyMaster URL must use the same protocol (e.g. http or https) as used by the Liberator, and the commondomain property may now need to be explicitly set if the common domain for the SL4B-enabled page and the Liberator, is not also common to the KeyMaster; typically if the SL4B-enabled page is hosted on the Liberator machine, but KeyMaster is not. Appending HTML to the body: The innerHTML attribute can not be used to append data directly to the document's body tag (e.g. document.body.innerHTML += "

some text

") if the JavaScript RTTP provider is being used, since this causes the page to be reparsed. RTSL compatibility issue: When the JavaScript RTTP provider is used, filtered news headline requests made via the RTSL_GetObject(s) methods must include the text filter=xyz, otherwise the filter will not be applied. For example, the request RTSL_GetObject("/DEMO/NEWS", "A&B&C") must be changed to RTSL_GetObject("/DEMO/NEWS", "filter=A&B&C,A&B&C"). Version History =============== Version 4.4.11-2 - 18 Dec 2007 ============================== New Features SL4B 4.4.11-2 Reconnection results in subscriptions being lost: When SL4B reconnects to a Liberator it automatically re-subscribes to all the data it was subscribed to. If the Liberator was recently restarted, it is possible that the DataSource providing some of that data is not yet connected in which case the re-subscription will fail and an "Unavailable" response will be received. Documentation has been added to the SL4B overview page describing how the "required-state" configuration option can be used on the Liberator to prevent this issue (PSL4B-25). Session Id logged at the "notify" level: The RTTP session identifier is now output at the "notify" log level. This makes it easier to match up a client log with the server logs (PSL4B-163). "nooptimeout" configuration attribute added: Configuration attribute "nooptimeout" added. This allows the time to wait for a heartbeat (NOOP) response to be set independently of how often a heartbeat (NOOP) is sent (the "noopinterval" attribute) (PSL4B-106). SL4B_LogMessageListener interface added: It is now possible to attach a listener to the SL4B_Logger that will be notified of all messages being output to the SL4B console. This allows the messages to be output to an integrated application log (PSL4B-166). Failover documentation improved: The documentation for the failover behaviour of the library has been improved to clarify that the client will only failover when its connection to the Liberator is lost. If the connection between the Liberator and one of its DataSources is lost then it is up to the Liberator to reconnect to the that DataSource, rather than for the client to connect to another Liberator (PSL4B-118). connectionAttempt() method added and connectionWarning() enhanced: A new method has been added to the SL4B_ConnectionListener interface, connectionAttempt(), which is invoked each time the library attempts to connect to a Liberator. It is informed of the Liberator URL that is being connected to, and what type of connection is being used. The connectionWarning() method has also been updated such that it now provides information why it was invoked (i.e. due to a lost connection or due to a failed connection), the Liberator URL and the connection type (PSL4B-169). connectionError() behaviour changed when failover is configured: The connectionError() method on the SL4B_ConnectionListener will only be invoked once the library has attempted to connect to all of the Liberators that have been configured within the failover XML. Previously this method was invoked after a connection to each Liberator failed (PSL4B-172). Error for invalid "service" configuration attribute is unhelpful: If an invalid "service" attribute value is specified the library now reports what the problem is. Previously the SL4B log console contained the message "[object: Error]" (PSL4B-105). Suppressed exceptions now logged at "Error" log level: When a user callback method is invoked, the library makes the call within a try..catch block. This prevents exceptions thrown by the user code (e.g. attempting to update the value of a cell that doesn't exist) from impacting future updates from being processed and sent out by the library. These exceptions are logged at the "Error" log level. Previously they were logged at the "Warn" log level(PSL4B-174). Safari support (experimental): Minor internal changes have been made to enable SL4B to work in Apple's Safari browser. Please note that this is currently not an officially supported browser (PSL4B-167). Bug Fixes SL4B 4.4.11-2 Prevent session reconnect if field map not already returned If field map is not already returned from Liberator then always do a full login, this prevents data being returned to the client with incorrect field names (PSL4B-173). Version 4.4.10-4 - 12 Oct 2007 ============================== New Features SL4B 4.4.10-4 None. Bug Fixes SL4B 4.4.10-4 Clients are unable to connect when latency is enabled: Fixed an issue where clients occasionally fail to connect to the Liberator when latency measurements are enabled. This was due to a race condition between the clock sync and login messages; if a sync was sent before a login the library could get into a state where it would never send the login to the server (PSL4B-158). Cannot navigate to an Excel spreadsheet from an SL4B enabled page: Fixed an issue when an infinite unload cycle occurred if the user attempted to navigate away from an SL4B page to a URL that required the download dialog to pop up, such as for an Excel spreadsheet or a Word document. This issue only occurred in IE (PSL4B-148). Average latency calculation is incorrect: Fixed two issues which resulted in an incorrect average latency being returned from the SL4B_Statistics instance. The first issue was that the number of latency measurements was being returned, rather than the average latency. The second issue only occurred if the client and server clocks were in sync with each other and resulted in the latency measurements occasionally being ignored (PSL4B-151). Average latency is sent to the Liberator as a decimal: Fixed issue where the average latency is published to the Liberator as a decimal. It is now rounded to the nearest millisecond before it is sent within a clock sync message. This allows the average latency to be viewed within the Enterprise Management Console (PSL4B-154). Clock sync messages only sent when the client is logged in: Clock sync messages are now only sent when the client has successfully logged into the Liberator. Previously these could be sent before the client had logged in (PSL4B-159). Latency example updated to use the correct configuration attribute: Updated the latency.html example page to use the enableLatency configuration attribute (PSL4B-160). Suppressed exceptions are now logged at the error level: Exceptions thrown by callback methods are now logged at the error level rather than the warn level (PSL4B-174). Version 4.4.9-4 - 18 Sep 2007 ============================= New Features SL4B 4.4.9-4 Flash and images price update SL4B example page: Added an SL4B example page to demonstrate the use of both flash and images to reflect price updates. Configurable quote-list SL4B example page: Added an SL4B example page to demonstrate the ability to add/remove object subscriptions and adjust fields requested dynamically. Connection log messages can be confusing: The messages generated when the client is attempting to establish a connection have been updated to make them more descriptive (PSL4B-144). Library compression: This release uses a new tool to compress the size of the SL4B library. Bug Fixes SL4B 4.4.9-4 Liberator URL Check: When adding different Liberator URL's to check (i.e. url-check.gif), we now use closures to keep reference to which url has responded. The old queuing technique caused blocking errors if the onload event never occurred. Version 4.4.8-3 - 24 Aug 2007 ============================= New Features SL4B 4.4.8-3 Image/update flag added to recordMultiUpdated() callback: An extra argument has been added to the SL4B_AbstractSubscriber recordMultiUpdated() callback method. This indicates whether the data passed into the callback represents a cached image for the record, or whether it represents an update (PSL4B-126). User application control of loading process: Added configuration attribute "enableautoloading" that enables an application to invoke SL4B load/beforeunload methods automatically or manually. Previously this was always automatic, and therefore meant that custom application loading logic was not always possible (PSL4B-138). Bug Fixes SL4B 4.4.8-3 Client delays requests for 5 seconds when configured for failover: Removed a 5 second delay that is used by the failover RTTP provider, which prevented any requests from being sent to the Liberator during this period. This delay was previously necessary to ensure that the a Liberator that had been restarted had time to connect to its DataSources, however this can now be achieved via the Liberator "required-state" configuration option instead - please see the Liberator Administration Guide for more information (PSL4B-132). Clock sync messages do not check XHR object is ready before sending Fixed a bug that was apparent on slow networks where clock synchronisation messages were sent immediately (to increase their accuracy) rather than placing them on the end of the queue, to the point where messages were being sent even before the XML HTTP Request object was not yet ready to be re-used again. (PSL4B-139). Version 4.4.7-1 - 19 Jul 2007 ============================= New Features SL4B 4.4.7-1 None. Bug Fixes SL4B 4.4.7-1 Script error occurs when viewing the status page: Fixed bug where the type 5 connection URL was generated incorrectly when the SL4B enabled page was hosted from the Liberator and its URL ends with a /, as happens with the status page (PSL4B-128). Memory leak when using pop out windows: Fixed a problem with the flash library where the queue to remove update flashes stopped being processed, resulting in all further updates being pushed onto the queue, but not popped off. This issue only occurs when slave frames were used. The memory used by the browser kept growing as the queue kept increasing in size (PSL4B-130). Type 5 connection cannot be established: Fixed issue where the type 5 connection URL was failing to be constructed correctly when an SL4B enabled page was hosted from a sub directory of a web server, and the reference to the SL4B library was absolute (e.g. /streaming/sl4b/index.js) rather than relative (PSL4B-131). Version 4.4.6-4 - 29 Jun 2007 ============================= New Features SL4B 4.4.6-4 None. Bug Fixes SL4B 4.4.6-4 Client reconnects every few seconds: Fixed issue where the library attempts to reconnect to the Liberator every few seconds, even when it has established a connection and is receiving a steady stream of data. This issue only occurred for type 5 connections (PSL4B-107). Incorrect session id is sent to the Liberator: An old session id is sent to the Liberator when a request that was queued up when the client was connected to a previous session, but the client has subsequently disconnected and reconnected to a new session. This resulted in the Liberator ignoring the request, and therefore the SL4B library expected response queue becoming out of sync. The session id is now only added to a message at the point it is sent, rather than when it is queued (PSL4B-111). Null session id is sent to the Liberator: A null session id is sent to the Liberator when a request that was queued up when the client was attempting to reconnect to the Liberator. This resulted in the Liberator ignoring the request, and therefore the SL4B library expected response queue becoming out of sync. The session id is now only added to a message at the point it is sent, rather than when it is queued (PSL4B-110). Illegal messages are sent after a reconnect: Fixed issue where the library sent illegal messages to the Liberator after a reconnect. This problem occurred when messages had been queued up whilst the client was disconnected. It only impacted the messages generated for requests for multiple objects and for discards (PSL4B-101). Latency measurement is always 0: Fixed problem where the latency was not being calculated for record images and updates. This issue only occurred for type 5 connections. "undefined" field list incorrectly requested from Liberator: Fixed issue where the client requested on object without a field list. This should subscribe to an object for all fields, however the library was incorrecly subscribing with a field list of "undefined" (PSL4B-117). Script error occurs when an SL4B-enabled page is closed: Fixed issue where a script error occurred when the browser is closed. This issue was introduced by PSL4B-109 (see 4.4.5) where the version of the ActiveX control is logged (PSL4B-116). RTTP news stories do not work: Fixed issue where the library ignored news story image updates, which resulted in news stories being unavailable when using the JavaScript RTTP provider (PSL4B-121). Version 4.4.5-2 - 14 Jun 2007 ============================= New Features SL4B 4.4.5-2 Initial updates should not flash: When the first update is displayed using the flash library for a particular element it will not generate a flash. Previously it did, which resulted in more processing being carried out than was necessary, particularly when a page initially loaded (PSL4B-108). XMLHttpRequest ActiveX control updated: The way in which the library loads the XMLHttpRequest ActiveX control has been updated such that it attempts to use the latest version first (MSXML2.XMLHttp.6.0) before attempting to load the older versions. It also logs which version it has decided to use (PSL4B-109). Bug Fixes SL4B 4.4.5-2 None. Version 4.4.4-2 - 24 May 2007 ============================= New Features SL4B 4.4.4-2 streaming-type5.js loaded from web server: The streaming-type5.js file is now loaded from the web server that the rest of the SL4B library is loaded from, instead of loading it from the Liberator. This change has no functional impact, however it makes it easier to handle upgrades to the library - if a version of this file is loaded from a Liberator with a different version of the SL4B library to the one that was loaded from the web server, then there may be a conflict which will result in script errors (PSL4B-98). Bug Fixes SL4B 4.4.4-2 Record updates are not always passed onto the subscriber: The performance improvements for the record update processing (PSL4B-70) introduced in version 4.4.3 occassionally cause an exception to be thrown whilst batching together a group of record updates. As a result any updates contained within that batch will not be passed onto the registered subscribers. This cause of the exception has been fixed (PSL4B-97). Version 4.4.3-5 - 17 May 2007 ============================= New Features SL4B 4.4.3-5 Record update performance improvements: The performance of the record update processing has been profiled, and some hotspots have been removed in processing RTTP update messages. Specifically: Consecutive record updates are now grouped and processed 'en bloc' (PSL4B-70). Expensive typeof operation performed every time the getFieldName() and getFieldValue() methods were invoked on the SL4B_RecordFieldData object have been removed (PSL4B-69). The callback queue used internally by the library is now bypassed by record updates (PSL4B-68). Added NOOP interval configuration attribute: A new configuration attribute (noopinterval) has been added for setting the interval between NOOP heartbeat messages, the default is 5000ms (PSL4B-81). Bug Fixes SL4B 4.4.3-5 Attempt to discard unsubscribed object log message: Fixed issue with the logic that determined whether a discard was for an object that had been subscribed to previously or not. It resulted in a log message being output occassionally when objects were discarded that had previously been subscribed to (PSL4B-59, PSL4B-82). Script error occurs when contributing data to unavailable object: Fixed issue introduced by the changes for PSL4B-65, which added support for custom Auth module error codes. A script error occurred whenever an error response was received when the client attempted to contribute data to an object (PSL4B-85). Failover provider and container objects incompatibility: Fixed issue with the failover RTTP provider which meant that a client was unable to modify its subscription (e.g. the window size) if more than one container object was requested. Regardless of which container key was passed into the appropriate container method, the operation was always performed on the last container object that was requested (PSL4B-87, PSL4B-90). NOOP messages are always sent out: NOOP messages are now sent out at the correct interval and only when no messages have been received by the client(PSL4B-88). Re-subscription to auto directories fails after failover: Fixed issue which prevented auto directories from being re-subscribed to once the client fails over to connect to a new server. The client re-subscribed to the wrong object name (PSL4B-64). Version 4.4.2 - 26 Apr 2007 =========================== New Features SL4B 4.4.2 Added Clocksync and Latency measurement: Measurement of message latency has been added. To be able to accurately measure latency the client/server clocks are periodically synchronised. Configuration attributes have been added for configuring clock sync and message latency measurement. documentation improved: Updated the documentation for the failover element to clarify that it must container both a and a element (PSL4B-60). Added support for custom Auth module responses: Added support for the the status codes that can optionally be returned by an Auth module when an object read denied or write denied response is sent to the client. These status codes can be used to allow the client to understand why it received the denied response. The status code is included as an additional argument in the objectReadDenied, objectWriteDenied and contribFailed callback methods (PSL4B-65). Bug Fixes SL4B 4.4.2 Auto directory methods not supported by the FailoverRttpProvider: Fixed issue where the getAutoDirectory() and removeAutoDirectory() methods were not supported by the SL4B_FailoverRttpProvider. An exception was thrown whenever one of these methods was invoked (PSL4B-63). Default "serverurl" value is incorrect: Fixed issue where the default value for the "serverurl" configuration attribute was being evaluated incorrectly when sl4b was loaded from a directory other than /sl4b (PSL4B-58). Popup window example works with default installation: Fixed issue with the popup window example which prevented it from working when running against a standard windows installation, where the example is hosted from the Liberator itself (PSL4B-28). Invalid multiple line message handling: Fixed issue where an RTTP message with no content would be mistaken for a multiple line message when the rttp code, sequence number or object number ended with a - character (PSL4B-48). Cannot discard a container requested with a field list: Fixed issue where the removeContainer() method did not send a discard to the Liberator if the container had been requested with a field list (PSL4B-62). Login message queued behind requested after reconnection: Fixed issue where the login message was being queued up behind other messages once the client reconnected to a Liberator. This resulted in the other messages failing with a "Not logged in" response. The login message is now inserted at the front of the queue (PSL4B-66). Advanced directory example doesn't work: Fixed issue within the advanced directory example which meant that it requested an undefined object, which resulted in the example not working. This issue was caused by initialise() method being invoked before the constructor had initialised its member variables. Although this had worked in previous versions of the library, it has ceased to work since the change to the default value for the "updatebatchfreq" configuration attribute was made in version 4.4.0 (PSL4B-74). Re-request messages sent with old session id: Fixed issue where RTTP messages had been queued up whilst the client reconnected to the Liberator were sent with the old session id, rather than the new one that was obtained upon reconnection (PSL4B-75). Invalid session id error causes response queue corruption: Added handling for RTTP error responses, such as "Invalid Session Id" to the library. Previously these were ignored, which resulted in the expected response queue becoming corrupted. This in turn could result in updates for one object being sent out for a different object (PSL4B-67). Version 4.4.1 - 10 Apr 2007 =========================== New Features SL4B 4.4.1 Improved support for broadcast DataSources after failover: Queued requests now wait for 10 seconds after re-login to re-request symbols. This reduces the possibility of an "unavailable" message from a broadcast DataSource due to data structures not being initialised in a newly started Liberator. Bug Fixes SL4B 4.4.1 getContainer() method returns undefined for a FailoverRttpProvider: Fixed issue where the getContainer() method returned "undefined" when the client was configured to use an SL4B_FailoverRttpProvider. This prevented the container paging functionality introduced in 4.4.0 from working in conjunction with failover (PSL4B-38). Re-subscription to container objects fails after failover: Fixed issue which prevented container objects from being re-subscribed to once the client fails over to connect to a new server. The client re-subscribed to the wrong object name (PSL4B-64). Version 4.4.0 - 30 Mar 2007 =========================== New Features SL4B 4.4.0 Container object API change: Container objects now support paging (the ability to request a subset of a container's contents), through the functions setWindow and clearWindow (ICNOI-6). Container structure change events now include the size of the container (ICNOI-2), and the order changes of linked objects (ICNOI-3). Liberator compatibility: Backwards compatibility with Liberator versions prior to 4.4.0 has been broken with respect to Autodirectory and Container objects (ICNOI-20). Default value for "updatebatchfreq" attribute changed: The default value for the "updatebatchfreq" configuration attribute has been changed to 0 when the JavaScript RTTP provider is used, and cannot be modified. Bug Fixes SL4B 4.4.0 Type 5 connection remains open after page is closed: Fixed issue where a type 5 connection remained open after an SL4B enabled page was closed. This prevented an end user from being able to receive any streaming updates if they navigated to another SL4B enabled page that connected to the same Liberator during the same browser session (PSL4B-47). empty.html now loaded from the web server SL4B is hosted from: To avoid issues with https pages warning that they contain insecure data, SL4B loads a placeholder file (empty.html) into its hidden IFrames. This file is now loaded from the web server that the SL4B library is hosted from, rather than the Liberator, as this can cause an issue when the Liberator is down in some browsers, particularly if they are configured to redirect to another page that breaks out of a frameset when a 404 page not found response is received. Not found responses not passed to subscribers for filtered requests: Fixed issue when the client requested an object that does not exist with a filter, and the object not found response sent by the Liberator was not passed onto the relevant subscriber (PSL4B-55). Container structure events bypassed the callback queue: Fixed issue where the container structure callback events bypassed the callback queue, which meant that it was possible for the client to receive a new container structure event before object updates are received for the previous container structure. Version 4.3.1 - 01 Mar 2007 =========================== New Features SL4B 4.3.1 Long session ID support: Support added for the long session ids that Liberator can now be configured to send. Previously session ids were limited to 6 characters, however this length can be modified using the session-id-len setting within the Liberator configuration file. "maxgetlength" attribute added: This configuration attribute has been added to allow the maximum length of a message being sent via an HTTP GET to be modified. If an RTTP message is longer than this value then it will be sent via an HTTP POST. This value should be set to zero if HTTP POST should always be used to send messages to the Liberator. KeyMaster keep alive functionality can be disabled: The KeyMaster session keep alive functionality can now be disabled by specifying a non positive integer value for the "keymasterkeepaliveinterval" configuration attribute. KeyMaster URL can now contain predefined query string parameters: The KeyMaster URL that is specified via the "keymasterurl" configuration attribute can now contain query string parameters. The library will determine whether a question mark has already been added to the URL, and if so, will append its parameters after an ampersand. Bug Fixes SL4B 4.3.1 KeyMaster username and token displayed in the browser status bar: Fixed issue where the username and token returned by KeyMaster were displayed within the browser status bar. The status bar now contains a message that confirms that the user was successfully authenticated by KeyMaster, but omits any further details. Version 4.3.0 - 19 Feb 2007 =========================== New Features SL4B 4.3.0 ZUN failover: SL4B now provides server failover functionality, allowing a client application that has lost its connection to a server to failover and connect to another server instead. To enable the failover functionality, the client must specify an XML file in the service configuration attribute that defines the servers that are available and their relationship with each other. KeyMaster keep alive: Support for a configurable polling request has been added to allow an SL4B enabled page to keep a single sign-on session alive with KeyMaster. The period between polls is specified using the "keymasterkeepaliveinterval" configuration attribute. Permission object support: Support added for the new RTTP permission object. Please see the AbstractSubscriber documentation for more information. Master/slave frame functionality works with JavaScript RTTP provider: It is now possible to use the slave frames in conjunction with a master frame that is using the JavaScript RTTP provider to connect to a Liberator. This requires both the master and slave frames to set the new "commondomain" configuration attribute (please see below). "commondomain" attribute added: This configuration attribute has been added to allow the SL4B library to set the value of document.domain property within an SL4B-enabled. This makes it easier to avoid JavaScript security issues, preventing two pages from being able to communicate with each other. Please see the main SL4B API documentation overview for more information (PSL4B-32). "debugwindowtype" attribute added: This configuration attribute has been added to allow the way in which the SL4B debug window is opened to be modified to suit the other configuration options within the page. The default "html" will be suitable in most instances, however the "about:blank" option may be preferable if the applet RTTP provider and a standard credentials provider are used and the "commondomain" attribute has not been set. Default "rttpprovider" attribute value modified: The default value of the "rttpprovider" configuration attribute has been changed to "javascript". In previous versions this was "applet". Default "connectiontimeout" attribute value modified: The default value of the "connectiontimeout" configuration attribute has been changed to "15000". In previous versions this was "5000". This had resulted in the JavaScript RTTP provider timing out too quickly when attempting to make a type 5 connection over the Internet. Slave frames can launch debug console windows: Slave frames can now launch their own debug console window which is independent of the master frames debug console. Previously only the master frame could launch a debug console. Please note that the slave frame does not connect directly to the Liberator, it connects via the master frame, therefore the slave frame console will not contain any entries regarding the RTTP messages. Parameterised transform functions in RTML: RTML now supports parameterised transform functions. The first parameter is the value of the update, the second parameter is the user configured parameter setting (if present). The third parameter is the updated object name and the forth parameter is the updated field name. This means that the same transform function can be used for different fields and objects. Display and numeric (for comparison) return values from RTML transforms: The RTML_TransformResult class can be used to return a result from a transform function. This class holds both a value used for numerical comparison (RTML_TransformResult.value) and the value used for display (RTML_TransformResult.displayValue). This allows a non-parsable value to be displayed, but with the correct colour flashing. Backwards compatibility for RTML added: Previous RTML quote attributes are now available in SL4B. The available attributes are as follows: bgchange, bg, bgdn, bgup, bgeq, fgchange, fgflash, fg, fgup, fgdn, fgeq, flashtime, plus, transform, fractionhandling, indicator, gfxup, gfxdn, gfxeq, toDP, round, addCommas and toSF. Due to improvements and no longer requiring the Java Applet, the following RTML attributes have not been implemented: makeDefault, formatString, isEncoded and javaClassName. Improved RTML attribute positioning: Quote elements attributes can be now specified in parent tags in the HTML DOM. This allows setting a particular attribute for a group of child elements only once. E.g. The bg and fg attributes can be applied to the whole HTML by specifying the values for these attribute in the
tag. Bug Fixes SL4B 4.3.0 KeyMaster reconnect: KeyMaster will now obtain a new token each time a connection to Liberator is required (including session reconnection). This fix has introduced a dependency on KeyMaster 4.3 (please see the list of known issues). Null field values received for non existant fields: Fixed issue where null field values were returned when a second request for a record with non existent fields was made (PSL4B-13). Multiplexing of container updates: Fixed issue where some subscribers were not being notified of updates to a container object. This issue only occurred if multiple subscriptions were made to the same container object, in which case only the first subscriber that was registered was notified of updates. Commas are not displayed correcting in Firefox by the flash library: Fixed issue in Firefox where certain values were not displayed correctly when commas were being added, for example "10000" was displayed as "0,000" rather than "10,000". Popup window example: Fixed issue with the popup window example which did not work when loaded from the default Liberator installation. Requesting blank object name results in corrupted subscriptions: Fixed issue where SL4B allowed requests for an object with an empty string for a name. This resulted in the subscriptions becoming corrupted, such that subsequent updates would be sent to the wrong subscribers. Requests for blank object names are now logged, and the request is ignored. RTML incompatibility with prototype library: Fixed issue where the RTML compatibility layer threw exceptions within a web page that also included the prototype JavaScript library. Version 4.2.1 - 09 Aug 2006 =========================== New Features SL4B 4.2.1 ConnectionListener.credentialsRetrieved callback method: A new callback method, credentialsRetrieved, has been added to the ConnectionListener interface to allow an SL4B enabled page to know when the credentials that will be used to login to the Liberator have been obtained. This is especially useful where a Caplin KeyMaster is used. Bug Fixes SL4B 4.2.1 RTTP message encoding/decoding fixed: Fixed issues with the encoding and decoding of RTTP messages. These issues only manifested themselves if a message included a character that needed to be encoded or decoded, which is typically occurs infrequently. Infinite loop occurs when exception is thrown: Fixed issue where the library entered an infinite loop whilst generating the stack trace for an exception that was thrown during connection or reconnection. KeyMaster use over https: Fixed issue with the request for user credentials from a KeyMaster using https. If the username passed up to the Liberator contained characters such as @ and . the request failed in IE. Version 4.2.0 - 13 Jun 2006 =========================== New Features SL4B 4.2.0 Reduced number of deployed files: The SL4B deployment release now consists of the minimal number of files. This improves initial startup speed. New object type support: Auto directory, container, news headline and news story objects are now supported. Helper methods have been added to the SL4B_AbstractRttpProvider interface to simplify how auto directory, container and news headline objects are requested. Image filtering support: Support added to allow an SL4B-enabled page to apply image filters to record requests. Update filters are still supported and are used by default. Please see the documentation for the SL4B_AbstractRttpProvider's getFilteredObject method for more information. Object data contribution support: RTTP contribution is now supported by the JavaScript RTTP provider, allowing an RTTP client to send data to the Liberator. The client must have write access for the data for this to be successful. Object creation and deletion support: A client can create and delete objects on the Liberator using the JavaScript RTTP provider, provided that they have suitable permissions. Bug Fixes SL4B 4.2.0 JavaScript RTTP provider multiple subscriber fix: Previously, if a subscriber requests an object that has previously been requested by another subscriber, both subscribers received an "image" update, even if the first subscriber had previously been sent the update. This is now fixed. (BTS 2984) Object not found event issue: Bug fix for JavaScript RTTP provider when an object not found event is returned by an active source. This was being processed identically to a object not found response which resulted in the next item being incorrectly removed from the request queue. Object discard problem with JavaScript RTTP provider: The JavaScript RTTP provider did not handle object discard responses correctly, which resulted in a script error if an object that had not been requested previously was discarded. This resulted in the internal expected response queue becoming corrupted. Script error when an object is removed from a container: Bug fix for issue where a script error occurs when an object removed message is received for an object within a container. This was caused by a discard being erroneously sent to the Liberator. (BTS 3024) Object status messages not sent on session reconnects: When a client loses its connection to a Liberator it automatically attempts to reconnect. When it reconnects to the Liberator it will attempt to bind to the clients previous session. If this session reconnect is successful, no object status messages are being sent, which results in the status remaining as stale, which was sent when the connection was initially lost. This problem has been resolved, such that when the client reconnects to a session the last object status message it received for each object subscription is sent. (BTS 3000) Erroneous record update generated for an object placeholder response: Bug fix for issue where a record update was generated when an object placeholder response was received from the Liberator. The placeholder response is used for an object that comes from an active DataSource and is not in the Liberator's cache at the time of the request. A record update is no longer generated when this response is received. Version 4.1.3 - 18 May 2006 =========================== New Features SL4B 4.1.3 None. Bug Fixes SL4B 4.1.3 Custom page onload event handler invoked twice: Custom onload and onbeforeunload handlers defined within an SL4B-enabled page were invoked twice. This has been fixed to ensure the event handler is only invoked once. (BTS 2996) Version 4.1.2 - 08 May 2006 =========================== New Features SL4B 4.1.2 Connection listener interface: Connection Listener interface (SL4B_ConnectionListener) added, which allows a client to register a class to be notified of connection events (e.g. connection OK). The listener can interact with the RTTP provider whilst processing an event, for example forcing another reconnection attempt after the SL4B library's previous attempt to reconnect has failed. Firefox 1.5 request enhancement: Altered the way SL4B works to take advantage of the way in which Firefox 1.5 uses the XMLHTTPRequest object as compared to Firefox 1.0. This means that the JavaScript container no longer needs to be reloaded for every message being sent to the Liberator. RTSL element cache implementation added: Added a RTSL "element cache" compatibility layer to the existing RTSL functionality which allows the efficient lookup of HTML elements within the users page by the SL4B library. Documentation enhancements: Enhancement of the existing SL4B documentation to restructure the overview section of the API guide, to include a Frequently Asked Questions section and improve the readability and clarity of the class-level documentation. SL4B log level configurable via the page query string: The SL4B log (debug) level can be specified via the page query string. This is achieved by adding the "debug=desired_debug_level" to the page's query string. Debug message rationalisation. Debug messages within the SL4B library have been rationalised to enable better identification of issues and logging of information at the appropriate level. Bug Fixes SL4B 4.1.2 Type 3 connection bug fix: Fixed issue with the JavaScript RTTP provider type 3 connection that resulted in the client establishing many connections to the Liberator (BTS2951). Secure/non secure items warning when liberator is down: Fixed issue where by a secure/non-secure warning dialog box was displayed to the user when SL4B was hosted over HTTPS. If Liberator was down, then the request for the JavaScript container page would fail and the HTTP error file (404 error page) was loaded from the user's PC over HTTP, thus causing the pop up dialog box. OnLoad event doesn't fire when page is refreshed: Fixed issue where refreshing a page with a type 5 connection to Liberator resulted in no onload event being triggered. Logout not sent to liberator when page is closed: Fixed an issue to ensure that JavaScript RTTP provider sends a logout message to Liberator when the user closes the web page. Previously this was not performed and the user's session was only deleted after the user session timed out on Liberator. Large request issue in Firefox 1.0: Fixed issue with large requests/discards and Firefox 1.0 for the JavaScript RTTP provider. Large messages needed to be split up and sent to the Liberator separately. This resulted in a reconnection and continued failure to subscribe properly. Version 4.1.1 - 13 Apr 2006 =========================== New Features SL4B 4.1.1 SL4B accessor object: A single SL4B accessor (SL4B_Accessor) object has been created to provide a centralised place that references to the core SL4B objects, such as the RTTP provider, can be obtained. This replaces the following objects, all of which have been deleted: SL4B_RttpProviderAccessor, SL4B_ConfigurationAccessor, SL4B_BrowserAdapterAccessor, SL4B_ExceptionHandlerAccessor and SL4B_CredentialsProviderAccessor. Bug Fixes SL4B 4.1.1 None. Version 4.1.0 - 05 Apr 2006 =========================== New Features SL4B 4.1.0 JavaScript RTTP provider performance: Performance enhancements made to increase the number of updates per second that the JavaScript RTTP provider could process. Bug Fixes SL4B 4.1.0 Secure/non secure items warning: Fixed known issue where a "Secure/Non Secure Items" warning message was displayed by Microsoft Internet Explorer, if the web page and Liberator connection use https. Browser history issue: Fixed known issue where HTML files that were loaded into hidden iframes by the JavaScript RTTP provider were added to the browser history, resulting in the back button behaving in an unexpected way. Version 4.0.1 - 24 Jan 2006 =========================== New Features SL4B 4.0.1 JavaScript RTTP Provider directory support: Added support for directory object updates in JavaScript RTTP provider. Version 4.0.0 - 13 Jan 2006 =========================== New Features SL4B 4.0.0 RTML and RTSL within the same web page: It is now possible to include RTML and RTSL within the same web page. RTML "quote" tags can be included within the page to display some of the live data, whilst the RTSL functions and callback functions can be used for more advanced data requests and/or manipulation. Mozilla Firefox browser support: Both RTML and RTSL will work within the Mozilla Firefox browser, running on either Windows or Linux. Pure JavaScript connectivity option: SL4B (including both RTML and RTSL) can be configured to use a pure JavaScript connection to the Liberator, with no need to download a Java applet. This both reduces the download size of the SL4B library, and resolves issues any firewall and/or http proxy issues between the client and the Liberator, where the firewall/proxy prevent the download of Java class/jar files. Shared configuration file: The configuration parameters for SL4B can be externalised in a JavaScript file that can be shared by many web pages. Previously the configuration of each web page needed to be set separately. This does not prevent each web page defining its own configuration, or overriding the configuration within the external file, if necessary. Bug Fixes SL4B 4.0.0 None.