Changes between Version 65 and Version 66 of ReleaseNotes


Ignore:
Timestamp:
21.08.2013 19:40:58 (11 years ago)
Author:
jri
Comment:

4.1.1 release notes, pt. 3

Legend:

Unmodified
Added
Removed
Modified
  • ReleaseNotes

    v65 v66  
    88 
    99New features: 
    10 * Timestamps (#386). 
    11     Each topic/association have creation and modification timestamps. Topics/associations retrieved via REST are attributed with these timestamps. The new Time API allows programmatic timestamp access and topic/association retrieval based on time ranges. Timestamps are also the basis for validating the browser cache and for edit conflict detection. 
     10* **Timestamps** (#386). Each topic/association have creation and modification timestamps. Topics/associations retrieved via REST are attributed with these timestamps. The new Time API allows programmatic timestamp access and topic/association retrieval based on time ranges. Timestamps are also the basis for validating the browser cache and for edit conflict detection. 
    1211* Better performance through exploiting the browser cache (#478). 
    13 * Edit conflict detection (#479). 
     12* **Edit conflict detection** (#479). The server rejects a PUT request when the resource has changed meanwhile. The check is based on the resource's "last modified" timestamp. This fights the "lost update" problem when working collaboratively. (Conflict ''resolution'' is not yet realized.) 
    1413 
    1514Plugin Development Framework: 
     
    1918    * RESOURCE_REQUEST_FILTER allows manipulation and interruption of static resource requests (#480). 
    2019    *  
    21 * 2 new Core API methods (#495): 
    22     * Iterable<Topic> getAllTopics() 
    23     * Iterable<Association> getAllAssociations() 
    24   These are useful for migrations which transform the entire database. 
     20* The Core Service provides methods for retrieving ''all'' topics/associations from the DB. These are useful for migrations which transform the entire database (#495). 
    2521* Simplified API: the Core API's and standard plugin service's get/retrieve/delete methods no longer require the `clientState` parameter (#496). 
    26 * A plugin can produce specific HTTP (error) responses by throwing a WebApplicationException from its resource methods or event handlers (#484). 
    27 * Exceptions thrown from resource methods or event handlers must no longer be wrapped in a WebApplicationException if a 500 response is intended (#484). 
     22* Revised exception handling: 
     23    * A plugin can produce specific HTTP (error) responses by throwing a WebApplicationException from its resource methods or event handlers (#484). 
     24    * Exceptions thrown from resource methods or event handlers must no longer be wrapped in a WebApplicationException if a 500 response is intended (#484). 
    2825* Access Control API: there are methods for retrieving topics/associations based on creator or owner (#458). 
    2926 
    3027Further changes: 
    3128* The dependency on Felix's proprietary ExtHttpService is dropped. We are ready to replace Felix HTTP Service with OPS4J Pax Web. OPS4J Pax Web is a far more modern and flexible OSGi HTTP Service implementation which enables a variety of new applications (#448). 
     29* The REST service no longer delivers user-related permission information along with the topics/associations. Instead the Access Control API provides methods for retrieving the permissions explicitly (#489). This makes topic/association responses cachable by the browser (#478). 
    3230 
    3331Bug fixes: 
    3432* Web application plugins (derived from WebActivatorPlugin) are detected as DeepaMehta plugins. The ALL_PLUGINS_ACTIVE event is properly fired (#498). 
    3533* Exceptions thrown from request filters appear in the log file (#474). 
     34* When processing the directives of an update request the object dm4c.selected_object (part of the Webclient model) is updated properly (#488). 
     35* The type loader doesn't throw a bogus "Endless recursion" exception when repeatedly tried to load a type with an invalid URI (#487). 
    3636 
    3737== 2013-03-11: DeepaMehta 4.1 ==