jump to navigation

Restlet Framework 2.1 RC1 and 2.0.10 released October 7, 2011

Posted by Jerome Louvel in GAE, RDF, Restlet Releases, Security.
add a comment

Here is the first Release Candidate of 2.1 which freezes the features scope and the public Restlet API. It also marks the beginning of a stabilization and optimization phase.

In order to reach 2.1.0 early next year, we want to fix as many issues reported in our tracked as possible and welcome any help on this front, especially reproducible test cases and patches.

We will also complete the Restlet in Action book, which has already 10 chapters out of 11 written and most appendices ready as well. Manning should be sending a MEAP update emails very soon now, taking into account great feed-back from readers and technical reviewers.

In the coming weeks, we will also start working on version 2.2, but we will come back on this exciting topic in another blog post !

Bug fixed

First, the 2.0.10 version fixes 11 issues on the stable branch including:

  • HTTP DIGEST signature issues when targeting several URIs
  • Web form empty issue on the GAE edition
  • RDF writing issue with XML and n3 formats

Major changes

In addition, version 2.1 RC 1 contains several major enhancements and new features summarized below.

  • Added ChallengeScheme.HTTP_AWS_QUERY constant to Crypto extension with client-side support for Amazon Web Services special authentication scheme (using URI query parameters)
  • Better handling of special URI characters when encoding and decoding to workaround JDK’s URLEncoder/Decoder limitations
  • Added syntactic sugar to the RDF extension
  • Added ClientResource#addQueryParameter and addSegment methods
  • Added ClientInfo#certificates and cipherSuite properties
  • Added Authenticator#multiAuthenticating to better control optional authenticators and prevent several authentications if not necessary.
  • Updated all Apache libraries to recent versions
  • Updated Jackson to version 1.9.0
  • Updated FreeMarker to version 2.3.18 (security fix!)

 

Recent contributors

  • Alex Milowski
  • Arjohn Kampman
  • Avi FlaxBjorn Roche
  • Bryan Hunt
  • Cyril Lakech
  • George Calm
  • Henry Story
  • Matt Stromske
  • Raif S. Naffah
  • Sebastien Schneider
  • Steve Ferris
  • Warren Janssens

Thanks to all others who helped us in various ways for this milestone.

Additional resources

Changes log:
http://www.restlet.org/documentation/2.0/jse/changes
http://www.restlet.org/documentation/2.1/jse/changes

Download links:
http://www.restlet.org/downloads/

Maven repositories:
http://maven.restlet.org

Advertisements

Restlet Framework 2.1 M4 and 2.0.7 released April 27, 2011

Posted by Jerome Louvel in GAE, Restlet Releases, SDC, Security.
add a comment

In order to adress several pressing issues, we are releasing those new versions one month after the previous release cycle. The good news is that we had time to add a couple of nice features to the 2.1 development branch!

Bug fixed

First, the 2.0.7 version fixes a couple of issues on the stable branch including:

  • Dormant threads in some IO operations due to excessive thread pool instantiation (via TaskService). Now a single temporary thread is used when an existing TaskService can’t be found.
  • Broken Amazon S3 authentication due to new AWS domain naming strategy
  • Cookies management interference when using the Apache HTTP client extension
  • Performance issue with JAXB serialization when used by the JAX-RS extension
  • Equality testing between Role instances wasn’t properly done (object identity testing)

Those fixes are of course also available in the new 2.1 release.

Major changes

In addition, version 2.1 Milestone 4 contains several major enhancements and new features summarized below.

  • The ClientResource#entityBuffering property now buffers non transient representations of unknown size. This change was necessary to fully prevent HTTP chunking when talking to a GAE backend (which forbids chunk encoding).
  • Refactoring of the SSL support to reduce the “org.restlet.jar” size by moving all SSL logic to the “org.restlet.ext.ssl” extension. Now other HTTP extensions including Jetty, Simple and Apache HTTP Client need to add this dependency. The SSL extension also includes an experimental HTTPS client that will be stabilized and completed with a HTTPS server in next milestone.
  • The simplified logging format (one line per log entry) used by default in the Java SE edition has now been disabled from the Java EE edition by default as it could interfer with logging behavior of some containers such as Tomcat
  • Throwing ResourceExceptions in ServerResource subclasses now properly preserves the given status code back to the client
  • The SDC protocol support added in 2.1 M3 via the “org.restlet.ext.sdc” extension is now available in the GAE edition via the “org.restlet.ext.net” extension, with the same syntax for better code portability between cloud platforms (Protocol.SDC and ChallengeScheme.SDC constants also added)
  • New “org.restlet.ext.gae” extension added to the GAE edition that supports authentication and enrolement based on the GAE users service
  • ClientResource now respects any change to the default client preferences when using dynamic proxies (via wrap() for example), such as change in preferred media types.

Recent contributors

  • Avi Flax
  • Bo Xing
  • Christoph Dietze
  • John Logsdon
  • Julien Landuré
  • Kristoffer Gronowski
  • Martin Svensson
  • Matt Kennedy
  • Michael Guiral
  • Rhett Sutphin
  • Tal Liron
  • Tim Peierls

Thanks to all others who helped us in various ways for this fourth milestone.

Additional resources

Changes log:
http://www.restlet.org/documentation/2.0/jse/changes
http://www.restlet.org/documentation/2.1/jse/changes

Download links:
http://www.restlet.org/downloads/

Maven repositories:
http://maven.restlet.org

Restlet 1.2 M2 released April 1, 2009

Posted by Jerome Louvel in Groovy, Maven, RDF, Restlet Releases, Ruby, Security.
1 comment so far

This post isn’t an April Fools’ Day joke! We did released Restlet 1.2 M2 today including major enhancements:

Resource API refactoring

After a long experience with our class-driven Resource API introduced in Restlet 1.0 and the recent introduction of the annotation-driven JAX-RS API (that we support as a special Restlet extension), we felt it was time for us to step-back and propose a better solution, taking the best of both experiences.

We initiated a specification effort in our developers wiki at the beginning of this year, taking into account all the enhancement requests, issues and feed-back made by our community (with a special mention to Tim Peierls). Then, we analyzed those requirements and developped a first implementation for Restlet 1.2 M2. Here is the overall architecture:

resource-design

The new design uses three foundation classes (UniformResource, ClientResource and ServerResource) which support just four annotations by default: @Get, @Post, @Put and @Delete. New ones can be defined to support extension methods like @Copy and @Move for WebDAV. Note that the support for annotations can be turned off and is not necessary to develop resources.

This new design provides the best of both worlds, the power and flexibility of Restlet 1.1 and the expressivity and additional abstraction offered by JAX-RS. In addition, it goes beyond those existing APIs by offering a uniform support for both server and client resources !

We look forward to your feed-back in order to complete and fully stabilize this work. We have started the adaptation of our traditional first steps, first resource and tutorial documents. It should give you a feeling of how it will simplify your Restlet developments.

RDF extension added

After a specification and design effort initiated for Restlet 1.2 M1, we now have a first usable version of our RDF extension. This extension contains a full RDF API, leveraging the Restlet API, and capable of processing RDF documents either in a DOM-like way or in a SAX-like way.

semantic-web1

It is also capable of writing large RDF documents is a SAX-like way. We currently support two serialization formats: RDF/XML and RDF/n3. In the next version we will extend those formats to Turtle and NTriples. We will write later about the potential of the REST and RDF combination !

Security API refactoring

Thanks to a strong collaboration with our community, the new security API introduced in 1.2 M1 has been significantly improved and refactored. We have added support for Roles, Realms and Permissions with a better separation of concern between Components and Applications.

The API was deeply refined and now offers a good foundation for your new security efforts. We will focus on its stabilization and testing in the coming months. If you hadn’t have a chance to look at this effort yet, it is still time to influence its design while before we release the first 1.2 RC version which will freeze the API.

New Script extension

A very complete and powerful Script extension has been contributed by Tal Liron. It allows you to write Restlet resources and dynamic representations in the following script languages: Groovy, Jython, JRuby and PHP thanks to the standard “javax.script” facility and to Three Crickets’s Scripturian library.

Restlet

This extension has been specified in detailled and has a very complete user documentation as well. Some additional work is planned to adjust it to the new resource API presented above, but we encourage all interested users to start playing with it and to provide feed-back.

The potential for this Script extension is huge as it will let us offer Restlet distributions dedicated to those scripting languages and broaden the usage of Restlet with developers not familiar with Java. Thanks again Tal for your hard work and for this wonderful contribution !

Enhanced Maven support

A long time ago, we offered a Maven distribution via our own Maven repositories and regularly we try to improve its quality, for example working with Buckminster users to adjust our Maven metadata. However, we use a custom forge based on Ant as our official build system and this has been causing some pains to Maven developers and putting some barriers for potential contributors.

Thanks to ideas and contributions from the community, we are now providing Maven POM files in our SVN repository as an alternative way to build Restlet. Of course, those POM files are the same that are distributed in our Maven repository and are consistently synchronized with our main Ant script to ensure that they don’t diverge in term of dependency versions for example.

maven1

For details on building Restlet with Maven, please read this short page on our developers wiki. Note that we have also adjusted our Maven GroupId (only “org.restlet” is used now) are redistributed third-party libraries are now packaged with a “org.restlet.lib.” ArtifactId prefix.

Package restructuring

In order to ensure a cleaner separation between resource and representation artifacts, we have added a new “org.restlet.representation” package and moved all representation classes to it. The “org.restlet.resource” package is now more focused, allowing us to welcome our new resource API and to move in related classes such as Finder and Handler.

We have also added a “org.restlet.routing” package where we moved Filter, Redirector and Router related classes. We plan to refactor the Route class for more extensibility. We encourage you to have a look at the new API as soon as possible to get familiar with it and anticipate the migration of your existing applications when Restlet 1.2 is stable.

When you upgrade, your existing code will look broken as many imports won’t be resolved. However, simply adjusting the package imports (using the dedicated feature of your IDE, like the “Organize Imports” feature in Eclipse) will fix all those issues. Indeed, the classes themselves have either not changed their API at all or have been properly deprecated.

Additional enhancements

But wait there is more! Many other valuable features were added in this release:

  • JAX-RS extension now leverages the new Security API
  • The TunnelService now supports “X-HTTP-Method-Override” header
  • Client connectors for the ZIP and JAR pseudo-protocols were added
  • The JsonRepresentation was improved (indentation, conversion)
  • Microsoft Shared Key [Lite] HTTP authentication scheme supported
  • Eclipse Public License 1.0 is an additional licensing option offered

Direct contributors

  • Bruno Dumon
  • Cliff Binstock
  • David Fogel
  • Fabrice Boileau
  • Gordon Mohr
  • Jean-Yves Cronier
  • Jonathan Hall
  • Kevin Conaway
  • Lars Heuer
  • Leigh Klotz
  • Marcelo Ochoa
  • Nels Nelson
  • Niall Gallagher
  • Paul Davis
  • Raif S. Naffah
  • Rémi Dewitte
  • Rhett Sutphin
  • Scooter Willis
  • Sean Sullivan
  • Tal Liron
  • Tim Peierls

Thanks to all others who helped us in various ways!

Additonal resources

Changes log:
http://www.restlet.org/documentation/1.2/changes

Download links:
http://www.restlet.org/downloads/1.2/restlet-1.2m2.zip

http://www.restlet.org/downloads/1.2/restlet-1.2m2.exe

Maven repositories:
http://maven.restlet.org is updated on the 1st and 15th of each month
http://maven.noelios.com is updated daily with new artifacts (access reserved to subscribers)