| Path: | ReleaseNotes |
| Last Update: | Fri Jun 13 16:30:34 PDT 2008 |
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.
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.
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.
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.
See the Rdoc for each plugin for a list of prerequisite software.