ReleaseNotes

Path: ReleaseNotes
Last Update: Fri Jun 13 16:30:34 PDT 2008

Release Notes for OLORE Release 0.0.2

Summary

An incremental feature enhancement release of the OLORE project. A new feature is added which allows invoking Ruby class methods on remote classes. This makes the design more consistent with Ruby class semantics.

This contains an OpenLaszlo Client Library and a Ruby on Rails plugin for the RemoteObjects protocol. In 0.0.2 JSON is the only serialization format supported.

This release also contains an AdminService Rails plugin providing access to ActiveRecords using the RemoteObjects protocol. The AdminService interface is now implemented using class methods which takes advantage of the new feature introduced in 0.0.2.

New Features Description

1) Allow Remote Objects to call class methods on remote Ruby Classes.

In prior releases only remote instance methods could be called. The protocol adds a load_methods interface which returns both class and instance methods in arrays inside a hash with appropriately named keys. The get_methods interface that returns instance methods is deprecated but retained for now.

Functionally there is no real requirement to load method names before using them, since the client programmer needs to understand the interfaces available. Nonetheless, it may be useful to load method names to allow construction of client side class proxies where remote calls can be invoked just like local calls. However, some use cases may want to disallow inspecting class interfaces for security reasons. To accomodate this, we allow the returned hash to be of the form {‘policy’ : ‘no_inspect’} wherein no method names are returned. This is thought to be better than a simple error return since it is a more explicit "ok" response that needs to be handled.

Code Changes

OpenLaslzo remote_objects:

    remote_class.lzx:
        - Add new attribute named 'instance_methods' to hold the instance
        methods which had been held in 'class_methods' prior.
        - Use existing 'class_methods' attribute for the real class methods.
        - add boolean attribute named 'no_inspect'.
        - add 'invoke' method which calls the class method.
        - add '_invoke' and '_invoke_err' methods to handle return.
    remote_instance.lzx:
        - check remote_class.no_inspect before checking if a method is
        registered.

OpenLaszlo test_remote_objects:

    test-robjects.lzx:
        - Allow invoke on remote_class.

Rails remote_objects:

    remote_object_controller.rb:
        - Add controller method 'load_methods()' with pseudo-code:
                im = klass.instance_methods(false)
                cm = klass.methods(false)
                return {'instance_methods' => im, 'class_methods' => cm}
        - Extend 'invoke' to handle class methods

Rails admin_service:

    admin_service.rb:
        - convert public methods to Class methods and make private methods private.

Environments

The Rails plugins have been tested with Rails 1.2.

The OpenLaszlo client has been tested with OpenLaszlo 4.0.3 and 4.0.12 on Windows XP using the Internet Explorer 6.0 and FireFox 1.5.

Prerequisites

See the Rdoc for each plugin for a list of prerequisite software.

Known Issues

  • RemoteObjects has not been tested recently with browsers on the Mac and has exhibited problems with them in the past.
  • Use of strings containing complex URL encoding inside objects transmitted with RemoteObjects may cause parse errors on the server.
  • RemoteObjects has been designed and tested to work in OpenLaszlo Solo mode and so has not been tested in proxy mode using an LPS server.
  • RemoteObjects has not been tested with SSL (https).

[Validate]