Restlet project has reached an important milestone. Encouraged by the quality of
the feed-back since the first public release, I am happy to announce the
release of version 1.0 beta 1. The project is now entering a phase of code
stabilization, bug fixing and minor enhancements. A final version 1.0 ready for
production is scheduled for Q2 2006. Here is a summary of the changes since 0.19
- Noelios Restlet Engine is now automatically
registered with the Restlet API if no other implementation is specified. A
flexible registration mechanism was also added based on a system property naming
a factory class. Also, many factory methods were added to the Manager class
helping the decoupling of your applications from a particular
- The Restlet API was simplified in many
ways. First, the RestletCall interface has been absorbed by the UniformCall. As
a result, Maplets, Chainlets and Restlet containers can now delegate directly to
any handler implementing the UniformInterface, not just Restlets. In addition, a
"redirectRef" property was added, removing the old way of passing the URI in the
call output. For consistency purpose, the getPaths, getPath and getMatches
methods were renamed to getResourcePaths, getResourcePath and
getResourceMatches. Then, the client preferences were refactored into a
PreferenceData interface accessible via the "preference" property. Finally,
RestletException was removed and existing JDK exceptions are used instead.
- The support for cookies was completed. Custom readers and
writers were implemented allowing a homogeneous behavior across all connectors
(HTTP client and servers). Also, the Cookies interface was replaced by
List<Cookie> and lazy parsing was implemented to prevent unnecessary
parsing and list creations when cookies are not actually used.
- The connectors were refactored, especially
the HTTP client and servers. The Connector interface now implements
UniformInterface and shortcut methods (get, post, put and delete) were added to
the Client interface. Also, thanks to some remarks from Benjamin Carlyle, I
decided to provide a set of HTTP call interfaces allowing direct interaction
with HTTP connectors and access to low-level artifacts like HTTP headers. The
new HttpCall also has a static list of all HTTP statuses and header names.
Finally, JavaMailCall and JdbcCall were replaced by factory methods on their
respective connector class.
- The default HTTP client connector was
significantly enhanced to support cookies, conditions, preferences, output
representation metadata, redirection reference, server name and basic HTTP
- The Jetty connectors were refactored to
prevent logic duplication and to support multiple listener types (HTTP, HTTPS
and AJP). Also, the Jetty 6 connector was updated to version 6.0 beta 7.
Finally, the HttpServer interface now as a standard method to configure
- Support for media type encoding modifiers
was added to RepresentationMetadata, allowing pre-compressed files and dynamic
compression of any representation. The support for encoding file extensions and
default encoding setting is already available in the DirectoryRestlet. Thanks to
John D. Mitchell for the suggestions.
- The tutorial and sample code were nicely
simplified using the latest API changes.