=========== Changes log =========== - 1.1.10 (2010-04-23) - Bugs fixed - Removed debug trace when using the Basic authentication. - Fixed generation of the Content-length header in requests when using ranges. - Fixed generation of Resource tags in a WADL document according to the 2009 WADL RNC (generate the Parameter elements before the Method ones). Reported by Leigh Klotz. - 1.1.9 (2010-03-30) - Bugs fixed - Allowed to specify its own user agent. - Fixed support of latin1 characters in credentials for the HTTP_BASIC scheme. - 1.1.8 (2010-01-29) - NRE and Extension Enhancements - War client now sets the modification date, if available. Suggested by Warren Janssens. - Bugs fixed - Fixed generation of Atom document. Reported by Bedwyr Humphreys. - Issue with line breaks that were removed when PUTting a file. Contributed by Daniel Truemper. - Precondition check was wrong for 'if-unmodified-since' if dates were equals. Reported by Andreas Schneider. - WadlApplication wasn't exposing the default route of routers. Reported by John Wismar. - 1.1.7 (2009-11-20) - Bugs fixed - Some Jetty parameters (maxThreads, etc.) had to be set at the connector creation time instead. Now they only need to be set at start time. Reported by Avi Flax. - Fixed issue with Grizzly Maven artifact ID. Reported by Daniel Peters. - Fixed issue with TransformRepresentation which should not use XMLFilter in getSaxSource(). Contributed by Warren Janssens. - Fixed bug in hours formatting in text elements of Atom feeds. Reported by Moisei Rabinovich. - Fixed potential NPE in ContentType. Reported by Eugeniy Chemezov. - Fixed bug in engine causing "connectTimeout" property to always be zero, for all connectors. Reported by Evgeny Shepelyuk. - Fixed bug in internal HTTP client causing "connectTimeout" property on Client to be ignored. Reported by Rahul Juneja. - Fixed bug in Apache HTTP client causing "connectTimeout" property on Client to be ignored. Reported by Jim Alateras. - PUT with empty entities were causing 400 errors. The test in Resource has been removed. Reported by Nicolas Rinaudo and Rhett Sutphin - Fixed bug in InputEntityStream causing issue with mark/reset logic. Reported by Arjohn Kampman. - Fixed bug that generates WADL documentation with wrong base ref. Reported by Carsten Lohmann. - Updated the response with all ChallengeRequests sent by the server. Reported by Murugesh Krishnamurthy. - Misc - Updated license file to mention distribution under EPL 1.0 in addition to other licenses, like for Restlet 2.0. - Added Series#getValuesArray(String, boolean) method. - 1.1.6 (2009-09-28) - Bugs fixed - Fixed bug in Template class when the pattern is updated. - Fixed bug when a Restlet application is deployed in Weblogic 10 listening on port 80. Reported by Sondre Eikanger Kvalø. - Fixed bug with the type of the content tag of Atom documents. - Fixed bug regarding reading of WriterRepresentation. Patch contributed by Bruno Dumon. - GWT client now accepts relative HTTP URIs. Reported by Wish Gandhi and fixed by Bruno Harbulot. - Fixed potential NPE in ContentType class. Reported by Eric Runquist. - Fixed bug with range service and redirections. - The "Location" header must contain an absolute URI. Reported by Simon Reinhardt. - The internal HTTP server now shuts down in all cases after 30 seconds. Reported by Martin Pernollet. - Fixed potential NPE in internal HTTP server. - Fixed potential bug with RangeInputStream causing 100% CPU utilization with java NIO. Reported and contributed by Tal Liron. - Router#attachDefault() method now relies on the protected createRoute() method. Reported by Rob Heittman. - Misc - Updated Grizzly to version 1.9.17. - Updated FileUpload to version 1.2.1. - Updated JavaMail to version 1.4.2. - Updated JAXB RI to version 2.1.12. - Updated JSON library to version from 2009/08/16. - Updated OAuth library to version from 2009/06/17. - Removed console traces when Restlet-GWT starts and stops the HTTP client. Reported by Frank Rousseau. - 1.1.5 (2009-05-26) - Bugs fixed - Fixed bug in Directory AlphaNumComparator. Reported and fixed by Rob Heittman. - Fixed bug in S3 authentication algorithm when bucket name was specified in the host name. Reported by Matt J. Watson. - Fixed potential NPE with Reference#getMatrix. Reported by Tal Liron. - Fixed matching of Firefox2 for Windows agent name. Reported by Peter Childs. - Fixed jSSLutils Maven group ID. Reported by John Wismar. - Fixed innacurate warnings in logs for 304 (Not modified) statuses with empty response entities. Reported by Nicholas Brown. - Fixed bug in ReaderRepresentation causing some issues while writing itself. Reported by Nicolas Rinaudo. - Fixed bug regarding the resolution of relative URI used in IncludeInfo. Reported by Jerome Bernard. - Fixed potential NPE in FreeMarker's TemplateRepresentation. Reported by Matt J. Watson. - Fixed MediaType.APPLICATION_W3C_XSLT value to application/xslt+xml (was application/xsd+xml). Reported by Jean-Yves Cronier. - ObjectRepresentation was closing the outputstream too early instead of simply flushing. - Fixed potential IllegalStateException when updating the allowed methods on Resource subclasses. Reported by Micah Whitacre. - Fixed issue between Tomcat and Servlet adapter when the response could be sent too early due to "Content-Length" header triggering the sending too early. Reported by Stephen Colebourne. - Fixed potential NPE in DomRepresentation when creating the transformer. Reported by Micah Whitacre. - Fixed bug preventing the TunnelService to process full media types passed in query parameter. Reported by Michael Berman. - Fixed flushing bug with HTTP server connectors. - Fixed parsing bug in Atom extension for inline content. - Fixed flushing bug with HTTP server connectors when the client party closes its connection at shutdown stage. Reported and contributed by Attila Babo. - Misc - The Template implementation now uses "\\d" as a regex for the Variable.TYPE_DIGIT constant. - The "com.noelios.restlet" OSGi bundle is now lazily activated. Suggested by Micah Whitacre. - 1.1.4 (2009-04-06) - Bugs fixed - Fixed issue in JettyHandler mixing HTTP and HTTPS requests. Reported by Albert Boehmler. - When updating a file via the FILE connector, some deletion issue could occur on Windows due to JVM integration issues with the OS. A workaround to reduce this was to invoke the garbage collection. Reported by Kevin Conaway. - The CLAP connector didn't set the expiration date based on its 'timeToLive' parameter. Reported by Peter Becker. - Added dependencies to the fileupload and dbcp modules for OSGi runtime. Reported by Rob Heittman. - Fixed "Content-location" header value set by the DirectoryResource when files are served from a CLAP connector. Reported by David Fogel. - Fixed starting issue with the range service. - Fixed POM generation issue with dependencies release version. Reported by Paul Austin. - Fixed selector exhaustion issue with Grizzly connector. Reported by Bruce Lee. - Fixed content negotiation bug in JAX-RS extension. Reported by Fabio Mancinelli. - Fixed bug in TunnelService preventing the replacement of client preferences if the HTTP header was "Accept" and not "accept". - Fixed flushing bug with WriterRepresentation and SaxRepresentation classes. Reported by Tal Liron. - Misc - Updated DirectoryTestCase (tested directory are made unique). May help fix a bug with Windows and deleted files reported by Kevin Conaway. - Made several JAX-RS imports optional in the OSGi manifest. Suggested by Hendy Irawan. - Updated Jetty to version 6.1.15. - JAX-RS extension now dynamically load the default providers to not throw class not found exceptions if they are not available in the classpath (JavaMail, JAXB, etc.) - Updated JAXB to version 2.1.10. - Upgraded Grizzly to version 1.9.10. - 1.1.3 (2009-02-26) - Bugs fixed - Fixed Regex issue in Template with fixed variables. Contributed by Bruno Dumon. - Fixed bug in ReadableRepresentation preventing channel from closing. Reported by Janne Husberg. - Fixed bug with jSSLutils integration. Reported by Dan Noble and fixed by Bruno Harbulot. - Handler is now capable of discovering allowed methods, even in protected Handler subclasses. Reported by Leigh Klotz. - Fixed the inclusion test of media types when one contains a "*+". - Fixed wrong computed "content-length" header when encoding representations using the Encoder. Reported by Tamas Cservenak. - Fixed wrong computed "content-location" header generated by the DirectoryResource. Reported by David Fogel. - Fixed potential bug with EncodeRepresentation when only Identity applies. - Misc - Upgraded JAXB to version 2.1.9. - Upgraded Grizzly to version 1.9.5. - 1.1.2 (2009-01-23) - Bugs fixed - org.restlet.util.Engine#getClassLoader() didn't return the system classloader when all other were null. Fixed by Rob Heittman. - Fixed bug when JsonRepresentation are instantiated with a JSONArray object. Reported by Adrian Nadeau. - Fixed bug that occurs when a request with a query part is sent to a Directory Restlet. - Fixed values of headers "Content-length" and "Content-Range" issues when serving a range. Clarified the non support of multiple ranges and cases where the content-range cannot be properly deduced. Reported by Diego Ballve. - The Maven POM for the JAX-RS extension was referencing the JAX-RS 1.0 snapshot version instead of the final 1.0 version. Reported by Hendy Irawan - ServerServlet was not always leveraging the createWarClient() method. Reported by Marcelo Ochoa. - Fixed NPE when using the "cri" and "crs" variables in log format. Reported by Maxence Bernard. - Fixed NPE with OSGi. Reported by Hendy Irawan and fixed by Xuhui Wang. - When a Resource was returning a 204 (No content) status, it was converted into a 404 error. Now it is left untouched. Reported by Ryan Niemeyer. - Added translation of the HttpUrlConnectionCall class for the backport to JDK 1.4. Contributed by Taras Puchko. - Fixed some bugs in JAX-RS extension: - in Util.doesImplements(..) and renamed it to Util.doesImplement(..). Reported by Luke Studley and Bruno Dumon. - JaxRsUriBuilder.path(Class, String). Reported by Juergen Zimmermann - NPE in JaxRsProviders.getContextResolver(..). Reported by Juergen Zimmermann - Fixed bug in StatusService preventing the "homeRef" property from being taken into account. Reported by Remi Dewitte. - Fixed bug in servlet extension pom which causes the javax.servlet api archive to be mistakenly packaged in generated war file. Reported by Daniel Woo. - Fixed potential NPE in Servlet logging. Reported by Yuri de Witt. - Fixed bug in the internal HTTP client preventing the sending of requests with a relative resource reference. Reported by Paul Austin. - Fixed NPE in DecodeRepresentation when the wrapped representation has no stream. Reported by Nicolas Rinaudo. - Fixed potential encoding bug with ReaderRepresentation. Reported by Nicolas Rinaudo. - The ServerServlet now sets the HTTP headers after the status to prevent issues with Tomcat 5.0 and "Content-Length: 0" headers sending the response immediately. This also fixes a similar issue with GWT that forced to return an empty representation. Reported by Eirik Bjorsnos. - Fixed potential recursion in ServletWarClientEntity. Reported by Nicholas Brown. - Fixed bug in Restlet-GWT preventing the callback to work with broken connections. Reported by Bill Greenseth. - Misc - Fully moved org.restlet.gwt.internal content into org.restlet.gwt.engine package. - Fixed backport issue with the NRE core (Class not found: javax.security.auth.login.CredentialException). Contributed by Taras Puchko. - Fixed Javadocs of Reference regarding invalid URI characters. - Upgraded jSSLutils to version 0.5.1. - Upgraded Grizzly to version 1.9.4. - Upgraded JSON library to latest version. - Upgraded FreeMarker to 2.3.15. - Upgraded Spring to 2.5.6. - 1.1.1 (2008-10-31) - Bugs fixed - Fixed regression with applications deployed in Servlet container hosted on Windows (Path "\WEB-INF\restlet.xml" does not start with a "/" character). Reported by Brian E. Williams. - 1.1.0 (2008-10-28) - Important change - The servlet extension now tries to instantiate the single application with the empty constructor first, then the one with the parameter of type Context. The aim is to encourage most people to use the empty constructor as it is the recommended way since release 1.1M5. The other constructor is still working but logs once a warning message. - Bugs fixed - Updated the type of the digest value from String to array of bytes. Reported and contributed by Kevin Conaway. - Fixed potential NPE in NIO caused by ByteUtils. Reported by Bruce Lee. - Added missing CGLib imports in Spring library manifest. Reported by Adam Harris. - Added missing parsing of the "published" tag in Atom feeds. - XPath expression evaluation could swallow some exceptions in XmlRepresentation subclasses. Reported by Richard Hoberman. - Fixed potential NPE with Digest authentication when the client's identifier is not known. - Fixed potential thread safety issues with client connectors. Reported by Tim Peierls. - Fixed potential NPE in Guard#doHandle method. Reported by Diego Ballve. - Fixed 404 response with Directory Restlet when the file's name contains "%" character. Reported by Andrew Herbert. - ResourceException was sometimes calling Status#toString() instead of Status#getDescription() to get the exception message. Reported by Aron Roberts. - API enhancements - Added a "tcpNoDelay" option for internal and Apache HTTP clients. Contributed by Kevin Conaway. - Added a DigestRepresentation that allows to both use an entity and compute its digest value. Suggested by Kevin Conaway. - Added the handling of server or client connector's context when adding a connector respectively to servers and clients list of a component. - Refactored constructors of the ParameterInfo class in the WADL extension in order to reflect the fact that "name" and "style" attributes are required. - Added the ability the give a title to WadlApplication or WadlResource instances. Suggested by Jerome Bernard. - The Request#isConfidential() method has been refactored to be supported by Message and Response as well. The method Request#setConfidential() has been removed (back to Restlet 1.0 state). Added Protocol#isConfidential() method to support the new implementation which rely on Request#getProtocol(). Reported by Kevin Conaway. - Misc - Updated JAX-RS API to version 1.0. The implementation of the runtime environment is not fully finished yet. We are waiting for an access to the TCK. - Updated Grizzly to latest 1.8.6.2 version. - Improved the performance of the ByteUtils#toString() methods significantly using a buffer. Impact the performance of the Representation#toString() method. Reported by Aaron Crow. - Removed unecessary 'final' modifiers in catch clauses. Reported by Richard Hoberman. - ServerServlet now copies all attributes from the Servlet context into the component's context. - Fixed Resource#allowPut() error in Javadocs. Reported by Erik Beeson. - Added the support of content negotiation to the WAR client. This was done by refactoring and sharing the existing logic available in the FILE client connector. - 1.1 Release Candidate 2 (2008-09-24) - Bugs fixed - Fixed bug when a webapp is mounted on the root instead of some context path. Reported by Bruno Dumon. - Fixed bug regarding the deeplyAccessible property for a directory. Reported by Carlos Alexandre Moscoso. - Fixed GWT javascript recursion with the Engine#getInstance method. Reported by Doug Alcouffe. - Fixed potential NPE with Spring integration when the component is not declared in the servlet configuration file. Reported by Alexander Koppelhuber. - Using a Engine.loadClass(), a ClassNotFound exception was not returning the missing class name. Reported by Vincent Ricard. - Fixed potential NPE in Restlet constructor when Engine is missing. Reported by John Logdson. - Fixed parsing of the HTTP WWW-Authenticate header when no realm is provided. Reported by Roman Geus. - Now the caller's classloader is used to try to load classes to fix a regression introduced in 1.1 RC1. Reported by Bruno Dumon. - Unknown challenge schemes used to hide the actual status of response for client HTTP connectors. Now only a warning is logged. Reported by Tamas Cservenak. - Lowered the log message for connectors without protocols from SEVERE to FINE. Reported by Paolo Borelli. - WadlApplication now correctly handles nested resources when the parent resource has no 'id' attribute. Also supports root resources with no leading slash. Patches contributed by Vincent Ricard. - Fixed error in Conditions.getStatus() sometimes returning 304 for methods other than HEAD and GET. Contributed by Stephan Koops. - Fixed uncessary assumption that an input stream would return -1 several times at the end. Reported by Marcelo Ochoa. - SpringHost were created without context, causing some NPE when trying to access client dispatchers. Reported by Alexei Sokolov. - Fixed potential ClassCastException with ReadableRepresentation when used with a non selectable channel. Reported by Rob Heittman. - Fixed IO exception "Resource temporarily unavailable" that could occur on Linux during file transfers due to a bug fixed in JDK 7 only (#5103988). Reported by Emblem Parade, Roman Geus. - Fixed bug causing blockings when exchanging an entity for a DELETE method with internal connectors. Reported by Tamas Cservenak. - Fixed autowiring of the default routes. Reported by Paolo Borelli. - Fixed potential security exception at ServerServlet#isDefaultComponent method. Reported by Marcelo Ochoa. - Fixed "Too many open files" exception with the internal server connector that did not close the socket after sending the response. Reported by Christoph Korn. - Fixed race issue in SSL unit test with Jetty. Server was stopped too early. - Fixed potential "Address already in use" exception with the grizzly connector when the server is required to connect on ephemeral port. - Fixed Grizzly exceptions "Unable to write to the non-blocking channel. Unable to select the channel to write to it. Selection timed out.". Reported by Bruce Lee, Emblem Parade and Roman Geus. - Misc - Removed deprecated code in GWT module not need for a first release. - Added initial support for HTTP challenges in GWT module. Suggested by Gabor Dolla. Help from Rasmus Agerholm. - Updated db4o to version 7.4.58. - Updated FreeMarker to version 2.3.14. - Updated JAX-RS API to version 0.11. - Updated GWT to version 1.5.2 (final). - 1.1 Release Candidate 1 (2008-08-20) - Breaking change - The logger names used by Restlet have been fully refactored to allow use more predictable names, to facilitate logging configuration, filtering, etc. See the wiki for details: http://wiki.restlet.org/docs_1.1/g1/13-restlet/29-restlet/98-restlet/101-restlet.html - Bugs fixed - Fixed NPE with WadlApplications that host Restlet subclasses. Reported by François Renard. - Removed all 'volatile' declaration in the Restlet-GWT module to prevent compilation issues. Reported by Nitin Gupta and fixed by Rob Heittman. - Fixed NPE occuring in JaxbRepresentation due to recent usage of representation's character set. - Fixed NPE in HttpRequest when using a Server instance without context. Reported by Bruno Dumon. - Fixed NPE in WadlApplication. Reported by Vincent Ricard. - Fixed blockings in internal HTTP connectors while processing requests. Reported by Zsolt Czinkos. - Refactored the ImmutableDate class since comparison operations ("after", etc) may fail. Reported by Mike Brzozowski. - Fixed bug in InputEntityStream when entity was containing '0' bytes. - Fixed instantion of application with a child context when deployed in a servlet container. Reported by Vincent Ricard. - Fixed bug in Grizzly connector causing retrieval of a request entity to fail. - Fixed bug in chunked encoding reading, forgetting to read the trailing new line. That caused connection resets between the JDK.net HTTP client and the Grizzly connector. Reported by Ralf Bommersbach. Debugging help from Kevin Conaway. - Fixed bug in Restlet example with HTTPS server configuration. Reported by Christy Ring and fixed by Bruno Harbulot. - Fixed context issue in Spring RestletFrameworkServlet. Contributed by Rhett Sutphin. - Fixed NPE when an application runs inside a servlet container as compressed WAR file. Reported by Jorge L. Williams. - API Enhancements - Added warning message when no client connector supports the request's protocol. Suggested by François Renard. - Added the ability to provide Wadl documentation to any Restlet instances. - Added an org.restlet.data.Digest class, a "digest" property to Representation and a DigestService for applications. Suggested by Chris Winters and Benoit Maujean. - Filtered broken connection based on French messages in addition to English ones. - Vastly improved internal client performances on all operations including chunked reading and writing. - Status#toString() now appends the description if available for more meaningful messages. - Added Representation#exhaust() method to read and discard content optimally (better than getText()). - Now a Reference that gets some invalid URI characters will automatically encode those characters instead of throwing an IllegalArgumentException. A message will still be logged with a "fine" level. Suggested by Brad Peabody. - Added static Context.getCurrentLogger() method which always returns a non-null logger, if possible the current context's logger. - Deprecated Form and Template constructors with a logger. - Added static Engine.setUserClassLoader() and getUserClassLoader() methods to allow a user to provide his own class loader to use in priority for all class loading actions done by Restlet code. Also kept the previous getClassLoader() static method to return the 'best' class loader available. Issue with Groovy reported by Avi Flax. - NRE and Extension Enhancements - Refactored WADL extension based on John Logsdon's feed-back. Added convenience methods and constructors on FaultInfo, MethodInfo and RepresentationInfo. Removed unecessary methods on WadlResource like getRepresentationInfo(Variant) and getParametersInfo(RequestInfo|ResponseInfo|Representation- Info). Added MethodInfo#add*() short-cut methods. - JAX-RS provider exception handling improved in the MessageBodyReader class. Contributed by Bruno Dumon. - Updated jSSLutils to version 0.5. - Added com.noelios.restlet.util.TraceHandler for debugging purpose displaying the logger name and message of each log record received by the log manager. - Misc - Updated Grizzly to version 1.8.4. - Uniformized logger names relying on the static method Context.getCurrentLogger(). - Added maven-metadata.xml files in the Maven repositories. Suggested by Guillaume Chatelet. - 1.1 Milestone 5 (2008-08-07) - Security warning - The handling of Context has been significantly refactored in this release. A new Context#createChildContext() method has been added to create a new isolated child context from a parent component's context. Application(Context) constructor doesn't wrap the given context anymore. Attach methods on virtual hosts and internal component router now automatically set the child context on the target application is a null context is detected. - Bugs fixed - Allowed subclasses of StatusService to get the throwable that generate the error in getRepresentation() method. Reported by Loic Mathieu. - The Servlet adapter now stops the whole Component instead of just the Application. - Fixed Apache HttpClient extension bug regarding multiple headers. Reported by Stephan Koops. - Fixed potential concurrency issues in Response and WrapperList/Series/Form. Reported by Stephan Koops. - Fixed potential NPE when using Velocity with template representations having no modification date. Reported by Evan Worley. - Moved generation of entries at the the end of Atom feeds. Reported by Bruno Harbulot. - Fix potential NPE in Template class. Reported by Ralf Bommersbach - Fixed bug in HTTP client connectors causing a null response entity to be returned when no entity headers were found but when chunked encoding was detected. - Each connector now has its own instance of Context to allow setting of different parameter values on different connectors. - Fixed issue with character sets and proxies where a character set could be written twice in HTTP headers. Reported by Alex Milowski. - The Router.defaultMatchQuery property wasn't properly taken into account by the Route class. Now it sets the default value for Route.matchQuery property. - Fixed bug in Grizzly connector causing some requests to hand. Contributed by Bruno Harbulot. - API Enhancements - Added a "Request.originalRef" property containing the URI reference originally requested by the client. Clarified the purpose of "Request.resourceRef". Suggested by Alex Milowski and Rob Heittman. - Client now has a new constructor taking a string with the protocol name instead of a Protocol instance. - Replaced "Response.challengeRequest" by "challengeRequests" list property to conform to HTTP semantics. Contributed by Bruno Harbulot. - Clarified concurrency constraints on Uniform/Restlet subclasses and on Resource class. Suggested by Bruno Harbulot. - Added public Resource#getAllowedMethods() method. - Allow the routing of URIs with or without taking into account the query part. Suggested by Jim Alateras and contributed by Bruno Dumon. - Completed the Component's XML config with the default query match setting defined on routers. Suggested by Bruno Dumon. - Replaced the Context#getThread(Runnable) method with a more flexible org.restlet.service.TaskService class and a new "taskService" property on Application. Many design contributions from Tim Peierls. Suggestions by Kevin Conaway. - Clarified Javadocs for static getCurrent() methods. Suggested by Patrick Logan. - Replaced Map<String, Object> parameters by Map<String, ?> in Template and Resolver classed. Suggested by Leigh Klotz. - Added shortcut Route#getMatchingMode() and setMatchingMode() methods that redirect calls to the "template" property. - Documented the default matching mode on Router. - Deprecated Context#setLogger() as there is no compelling use for it and synchronized setParameters() and setAttributes() methods. Updated Javadocs of Context related to concurrent access and modifications of those collections. Suggested by Tim Peierls. - Added HTTP OAuth authentication scheme constant. - Completed the Component's XML config with the support of parameters under the component, client and server elements. Reported by Bruno Harbulot. - Added a org.restlet.service.Service class, super class of all existing service classes, with "enabled" and "started" properties. Enabled services are automatically started by their parent application or component. - Added an org.restlet.data.Range class to represent content ranges. - Added "enabledCipherSuites" and "disabledCipherSuites" parameters to HTTPS connectors supporting those settings. Contributed by Bruno Harbulot. - Added Representation.range property to indicates the partial content available. Corresponds to Content-Range HTTP header. Also added a getAvailableSize() to return the range size in case it is set, or getSize() otherwise. - Added a RangeService class and an Application.rangeService property to control to automatic handling of range of response entities. - Added "resumeUpload" and "temporaryExtension" properties on the Directory class to enable resumable uploads. This limit the number of concurrent uploads on the same file to one client at a time. - NRE and Extension Enhancements - Added a static HttpServletRequest getRequest(Request) method to the Servlet extension. - DirectoryResource now exposes isDirectoryTarget() and isFileTarget() methods. Suggested by Jean-Yves Cronier. - Enhanced WADL extension to support all WADL description properties and both formatting and parsing. Also added new WadlRepresentation and WadlResource classes to facilitate the description of Resources as WADL documents. Sponsored by NetDev Ltd (http://www.netdev.co.uk). - The Apache HTTP Client extension can now have a retry handler parameter set. Suggested by Sanjay Acharya. - Added a "sslContextFactory" parameter and attribute to HTTPS connectors to improve the flexibility of SSL configuration. If this parameter isn't set, the previous parameters are used instead. Contributed by Bruno Harbulot. - Exceptions occuring while writing the response entities are now reported as severe errors instead of just info messages. Broken connections are still reported as info messages to reduce log size. Contributed by Bruno Dumon. - Made the com.noelios.ext.ssl extension public to provide more flexibility in configuring SSL certificates. Depends on jSSLutils library 0.4. Contributed by Bruno Harbulot. - Added a port of Restlet to GWT. This is a subset of the Restlet API and Engine, mostly the client side working on top of GWT 1.5 RC1. - Slightly refactored and documented OAuth extension. - Renamed the "org.restlet.ssl.hostnameVerifier" attribute into just "hostnameVerifier" for consistency with existing naming. - SpringBeanRouter can now search beans in ancestors. Contribution from James Maki. - JaxbRepresentation now takes into account its "characterSet" property to set the "jaxb.encoding" property on the JAXB marshaller internally used. Reported by Sanjay Acharya. - Misc - Refactored WAR client to remove remaining class in NRE core. - Refactored OSGi support to not require one activator for each bundle/extension anymore. Only the NRE bundle has an activator which introspects the installed bundles for the usual descriptor files in "META-INF/services" directories. Suggested by Hendy Irawan. - 1.1 Milestone 4 (2008-05-20) - Bugs fixed - Fixed NPE with internal HTTP server when no reason phrase is available for the response status. Reported by Stephan Koops. - Fixed potential NPE in request processing code when a request was not fully set (missing properties like the method). - Fixed issues with chunked encoding and socket closing. Contributed by Kevin Conaway. - Fixed potential NPE in ApplicationClientDispatcher. Reported by Alex Milowski. - Series.getValues() was not respecting the 'ignoreCase' parameter. Contributed by Stephan Koops. - Allowed only UTF-8 character set for JsonRepresentation. Reported by Michael B?ckling. - API Enhancements - Matrix parameters are now fully supported by the Reference and the Form classes. Added many new methods, similar to the ones available for query strings. - File-like extensions are now fully supported by the Reference class. See getExtensions(), getExtensionsAsArray() and setter methods. - Added Reference.hasExtensions(), hasFragment(), hasMatrix(), hasQuery() and hasScheme() methods. - Matrix parameters are now ignored by tunnel service. Contributed by Stephan Koops. - Refactored the TunnelService implementation, renamed the "extensionTunnel" to "extensionsTunnel" and added the "queryTunnel" property for consistency. Suggested by Chuck Mortimer. - Deprecated the Restlet.init() method. In Restlet 1.2, this method will be removed and its logic directly put in the handle(Request, Response) method. - Added static Response.getCurrent()/setCurrent() and Request. getCurrent() methods. Implementation based on thread local variables updated by component and applications when they handle a request/response couple. Suggested by Stephan Koops. - Added new Response.setStatus() methods and new Status constructors for more flexibility in setting status with associated exceptions. - Ensured the all NRE core and extensions classes properly pass the throwable/exceptions to the error statuses so they can be later retrieved or printed. Suggested by Steve Loughran. - Added support for new RIAP authority: HOST to issue requests relative to the current virtual host. Suggested by Rob Heittman. - Added APPLICATION_ALL_XML constant and proper changes to the MediaType.includes() to recognize those patterns. Contributed by Stephan Koops. - Moved shared initialization logic of Resource constructor ands init() method into initialization block. - Static valueOf() methods now treat "" as null. - Added connectTimeout attribute on both Client and ClientHelper classes. Reported by Avi Flax. - Added static "current" property on Application and VirtualHost returning the instance associated with the current thread. - Added Context.getThread(Runnable) method to centralize usage of thread (potentially doing some pooling and currently copying the thread local variables). - Deprecated Context.getApplication(). Use static method Application.getCurrent() instead. - Removed several unecessary throw clauses in ByteUtils and added some missing Javadocs. Contributed by Stephan Koops. - NRE and Extension Enhancements - Atom extension is now able to write Feed and Service XML documents and not just reading/parsing them. This can be used to return Atom feeds as representations. - Added Velocity's RepresentationTemplateLoader class and a new constructor to TemplateRepresentation which allows the processing of a Velocity template provided as a Restlet Representation. - Deprecated Protocol.SMTP_STARTTLS, replaced by a "startTls" parameter on JavaMail connector. - Added Protocol.POP and POPS constants. - Added ChallengeScheme.POP_BASIC (USER+PASS) and POP_DIGEST (APOP) constants. - Added support for POP v3 and POP/SSL v3 to the JavaMail connector and refactored existing code. Sponsored by RunMyProcess (http://www.runmyprocess.com). - The debugging mode of the JavaMail connector is now optional and can be changed with a connector parameter "debug". - Refactored the JavaMail connector to separate the message parsing and formatting into three new classes: MessageRepresentation, MessagesRepresentation and RepresentationMessage. Suggested by Matthieu Hug. - Added an ObjectFactory to the JAX-RS extension for customized root resource class and provider instantiation. Contributed by Bruno Dumon. - The local connectors (FILE and CLAP connectors for now) have a new "defaultLanguage" parameter that is uses when no parent application is available (no MetadataService accessible). Limitation reported by Jules Milner-Brage. - Added SslContextFactory and DefaultSslContextFactory to the com.noelios.restlet.util package. Contributed by Bruno Harbulot. - Misc - Updated Grizzly to 1.7.3. - Improved logging consistency. - Expressed the Eclipse plugin dependencies using the "Import-Package" instructions instead of "Required-Bundle". - All connector and authentication modules now have OSGi activator to automatically register themselves with the engine. The engine module also registers itself with the API. Suggested by Hendy Irawan, with help from Edward Yakop. - Updated db4o 7.2 to latest stable build. - Added Spring example based on REST book chapter 7. Contributed by Konstantin L?ufer. - Removed unecessary libraries from distribution. - The WAR client is now only available for Application deployed using ServletServer or a subclass. - Made javax.servlet.* dependencies optional for the fileupload extension. Reported by Hendy Irawan. - 1.1 Milestone 3 (2008-04-01) - Bugs fixed - Fixed setRedirectRef(String) method which wasn't supporting relative URIs when no base reference was available on the resource reference. Now it uses the resource reference instead. Reported by Steve Loughran. - Made the SpringApplication constructor public. Reported by Peter Neubauer. - The AWS authentication wasn't properly detected by the engine. Reported by Steve Loughran. - Fixed directory redirections in DirectoryResource class. - Fixed NPE in RestletFrameworkServlet. Reported by Yuri de Wit and fixed by Rhett Sutphin. - Fixed socket closing issues with the internal HTTP connectors. Reported and fixed by Kevin Conaway. - Fixed potential NPE in CLAP connector. Reported by Rob Heittman. - Fixed potential NPE in Freemarker extension when the template is provided under the form of a representation. - Request.getProtocol() now returns the protocol of the targetRef instead of the baseRef when the targetRef itself is absolute. Patch contributed by Jeroen Goubert (Schaubroeck). - When using new Reference(baseref, "absolute-path"), calling getTargetRef() now returns a reference with the baseRef cleared. Patch contributed by Jeroen Goubert (Schaubroeck). - API Enhancements - Added OAuth extension as a pluggable authentication scheme. Contributed by Adam Rosien. - Added XDB extension providing integration with Oracle embedded JVM. Contributed by Marcelo Ochoa. - Made the org.restlet.util.Resolver generic and used it in Guard to allow the user to provide a secret resolver without needing to subclass Guard. - DomRepresentation.getDocument() now creates a new empty document if no document is available or can't be parsed. - Reference class now enforces the usage of valid URI characters only. Suggested by Avi Flax. - Static methods added to Reference: isGenericDelimiter(char), isReserved(char), isSubDelimiter(char), isUnreserved(char) and isValid(char). - DomRepresentation now has a protected createTransformer() method that can be overridden to customize the properties of the JAXP Transformer. Contributed by Rob Heittman. - All getters in Reference returning URI encoded string now have an additional method taking a 'decode' parameter. Suggested by Paul J. Lucas. - TransformRepresentation can now be reused multiple times by multiple threads in parallel. Contributed by Marc Portier. - Parameters and output properties can now be set on the TransformRepresentation and are automatically passed to the created JAXP Transformers. Suggested by Marc Portier and Joe Nellis. - Added new constructors to TransformRepresentation making the creation of the internal URI resolver optional and allowing to pass a JAXP Templates precompiled instance directly. Suggested by Joe Nellis. - Added Context.getCurrent() and setCurrent(..) static methods based on a thread local variable. The static property is also updated when Component and Application instances are handling a call. This can be useful to get access to the context even when it isn't possible to manually pass it down the call stack. - Added a new constructor to Client and Server allowing to specify the class name of the connector to use. Suggested by Dan Diephouse. - Added a "getValuesArray(String name):String[]" method on the Series class. Suggested by Paul J. Lucas. - Method getDocumentBuilder() on XmlRepresentation is now protected, allowing reuse by subclasses like JaxbRepresentation, JibxRepresentation or DomRepresentation. - Method XmlRepresentation.getSource() was renamed to getStreamSource() and new getSaxSource() and getDomSource() methods were added. DomRepresentation has an optimized implementation of getDomSource() and SaxRepresentation was refactored to support this approach as well with many new constructors added. Suggested by Marc Portier. - TransformRepresentation has been refactored to support SAX pipelining when multiple TransformRepresentation are nested. Suggested by Marc Portier. - Added a getValuesMap() method to the Series class. - Added "authenticated" property on ChallengeResponse and refactored Guard and engine to update this property upon authentication. - Added getPrincipal() method on ChallengeResponse. - Added support of client preferences tunnelling by extensions. Suggested by Chuck Mortimore and contributed by Stephan Koops. - NRE and Extension Enhancements - Made the ServerServlet.create*() method protected instead of public. - Added a ServerServlet.createCall() and createWarClient() methods for easier subclassing by the XDB extension. Some contributions from Marcelo Ochoa. - Added new javax.annotation library for the JAX-RS extension. - Added ServerServlet.getClass() method to facilitate subclassing by the XDB extension. Suggested by Marcelo Ochoa. - Added new constructors to JiBX extension not requiring the binding name parameter. - Distributed experimental JAX-RS extension implementing the JSR-311 draft specification. Contributed by Stephan Koops. - All HTTP server connectors now expose the client certificates using the "org.restlet.https.clientCertificates" request attribute. Contributed by Bruno Harbulot. - Updated Java Activation Framework to version 1.1.1. - Updated JavaMail library to version 1.4.1. - Removed the SpringApplication class as an XML configuration alternative is now documented. - Updated db4o to version 7.2 with transparent activation and update. - Improve logging for internal HTTP server when created thread throw uncaught exceptions. Contributed by Kevin Conaway. - HTTPS server connectors expose new attributes related to SSL: "org.restlet.https.cipherSuite" and "org.restlet.https.keySize". Contributed by Bruno Harbulot. - Improved the Grizzly connector to support returning chunked responses. - Misc - Reformatting of the changes log. Contributed by Avi Flax. - All Component subclasses now use a main method that throws exceptions and takes a string array as parameter. - More precise log message for a Resource with no variant. - Optimized Eclipse dependencies by leveraging reexport option. - Updated Spring to version 2.5.2. - Improved handling of connectors created without a protocol. Contributed by Avi Flax. - Representations returned by the CLAP connector now have their modification date set if it is based on a file. Suggested by Keke. - Refactored and improved logging for Guard and challenge processing. Suggested by Alex Milowski. - Updated Reference's Javadocs to mention that getters do not automatically do URI decoding. Suggested by Paul J. Lucas. - Refactored NRE helpers hierarchy to take advantage of generics and remove duplications. - Added SSL unit test contributed by Bruno Harbulot. - Completed the list of known media-types with Tomcat's entries. Reported and contributed by Alex Milowski. - The engine can now registers an URLStreamHandlerFactory adapter on the java.net.URL class that is based on the current context as retrieved via Context.getCurrent() method. - Added condition on javadocs flag for the stage-classic task in the Ant build script. reported by Kevin Conaway. - Changed licensing scheme to a choice between CDDL 1.0, LGPL 3.0 or LGPL 2.1. - Ensured that all the framework (API, Engine and extensions) are thread safe, especially the representation and the request/reponse related ones. This will allow the usage of separate reader / worker / writer threads to work on the same request/response cycle. Reported by Tim Peierls. - 1.1 Milestone 2 (2008-02-29) - Bugs fixed - Fixed NPE in Connector class. Reported by Rob Heittman and fixed by Tim Peierls. - WriterRepresentation was missing a default implementation for getReader() abstract method. - If an error is found in HttpClientHelper.sendRequest(), StreamClientHelper ignores it and continues to parse the response when it should stop processing. Fixed by Kevin Conaway. - Status.isSuccess(), is*Error(), isRedirection() and isInfo() methods now support status classes as specified in HTTP 1.1. Reported by Paul J. Lucas. - The request ClientInfo address and port were not available for the default connector and the Grizzly connector. Patch contributed by Kevin Conaway. - Fixed issue in SpringHost preventing usage of the setRoutes(Map) method. Replaced with a setAttachments(Map) method. Added Javadocs example. Reported by Simon Olofsson. - ResourceException wasn't setting a message. Reported by Derek Chiles. - Representation.isAvailable() now returns false if the size is '0'. - Refactoring of HTTP server connectors code to better deal with HEAD request, 1xx, 204, 205, 304 status codes. Issues reported by Alex Milowski. - Ensured all modifiable collections are properly documented in the API. Suggested by Stephan Koops. - Fixed Spring XML loading issue related to validation in SpringContext class. - Fixed bug with the FileClientHelper returning wrong list of variants. Reported by Iestyn Evans. - Fixed bug in Tag.equals() implementation. Reported by Stephan Koops. - Fixed NPE in the WAR client of the Servlet extension. Reported by Jason Terhune. - Caught exception with Simple connector when flushing a closed stream. Now it is logged at a lower priority. Reported by Todd Nguyen. - Fixed NPE in the MediaTypes class. Reported and contributed by Marc Portier. - Fixed bug in SpringComponent preventing setting of clients. Reported by Garriot Zhang. - Fixed several bugs related to Grizzly (chunked encoding not working, restarting NPE, etc.). - API Enhancements - Deprecated Status.isInfo(), replaced by isInformational() to follow HTTP naming. - Removed unecessary 'synchronized' keyword on Application.createRoot() and added one to the setRoot() method. Reported by Tim Peierls. - Added support for Alpha-numerical sorting of index pages in Directory. Suggested by Davide Angelocola based on David Koelle's original idea. Optimized implementation contributed by Rob Heittman from Solertium Corporation. New setComparator, setAlphaComparator and setAlphaNumComparator methods added. The default sorting is now "AlphaNum". - Synchronized some list setters on Component and Connector with explanation in Javadocs as suggested by Tim Peirls. - Guard.checkSecret() method now has a Request parameter. Suggested by Alex Milowski. - Added new constructors to CookieSetting. Contributed by Stephan Koops. - Filter.beforeHandle() and doHandle() methods can now indicates if the processing should continue normally, go to the afterHandle() method directly or stop immediately. IMPORTANT NOTE: as it isn't possible to add a return parameter to an existing method, the change can break existing filters. In this case, you just need to return the "CONTINUE" constant from your method and use "int" as return parameter. Issue reported by Paul J. Lucas. - Added Handler.getQuery() method to easily return the request's target resource reference query as a parsed form (series of parameters). Suggested by Kevin Conaway. - Added a Reference.clone() method. Contributed by Stephan Koops. - Added more fine-grained lifecycle for Components with new start*() and stop*() methods. Suggested by a discussion with Alex Milowski. - Added Component.updateHosts() method to update the routes after dynamic changes to virtual hosts. Suggested and contributed in part by Alex Milowski. - Added format(Object) and resolve(Object,String) methods to Template to allow for custom variable resolution. Enhancement suggested by Stephan Koops. - Added "defaultMatchingMode" property on Router. Suggested by William Pietri. - Added "throwable" property to the Status class, respecting the immutability. Suggested by Paul J. Lucas. - Added "getEphemeralPort()" method on Server to get the local port actually used by the system when the "port" property is set to '0'. Suggested by William Pietri. - Made the inner Template.VariableResolver interface and "format(VariableResolver)" method public. Suggested by Stephan Koops for the JAX-RS extension. - Added static Representation.createEmpty() method to return a new empty representation. - Added Variable.TYPE_URI_PATH to match any path character except in the query or fragment parts. Suggested by Stephan Koops and Michael Makunas. - Added MediaType.APPLICATION_ATOM_SERVICE_XML constant. - Added TEXT_JAVASCRIPT media type constant. Suggested by Evgeny Shepelyuk. - Added MediaType.getMostSpecific(), isCompatible() and isConcrete() methods. Contributed by Stephan Koops. - NRE and Extension Enhancements - Added new JsonRepresentation constructors taking a Bean or a Map. Suggested by Evgeny K. Shepelyuk and Sean Landis - Updated Spring to version 2.5 - Updated db4o to version 7.0 - Added a new parameter to ServerServlet allowing specification of a custom component to instantiate. - Added the ability to specify a hostname verifier for the HTTPS client based on JDK's net package. Contributed by Alex Milowski. - Improved robustness of Reference when starting with an empty URI. Contributed by Stephan Koops. - Added new Spring NRE extension containing a SpringServerServlet facilitating the Servlet + Spring + Restlet trio integration. Contributed by Florian Schwarz. Also new classes where contributed by Rhett Sutphin that give even more integration option (RestletFrameworkServlet, SpringBeanFinder and SpringBeanRouter). - Added JiBX extension, alternative to JAXB. Contributed by Florian Schwarz. - Added support for nested resources in WadlComponent. Contributed by Avi Flax. - Resources with no variant set now log a warning on GET requests. Contributed by Avi Flax. - Updated and tested the Atom extension to conform to the latest APP specifications. The extension currently allows to retrieve an APP Service Document and Atom Feeds. - Lowered the logging level for some Simple IO exceptions. - Updated JSON JAR to latest version. - Externalized mappings between file extensions and media types in the MetadataService. Reported by Alex Milowsky. - Closed an open BufferedReader in IdentClient class. - Updated FreeMarker to version 2.3.12. - Added support for DIGEST authentication (client and server side). Contributed by Ray Waldin. - Added a WadlApplication class and refactored the WadlComponent to support many more usage scenarios: - WadlApplication instances can now be added to existing components. - WadlApplication instances can be modified to add filters in front of the root router - WADL description documents can be retrieved via HTTP or other protocols - Only the necessary client connectors are automatically created - Guard is now setting a Principal instance after authorization. Contributed by Stephan Koops. - Refactored engine to support pluggable authentication. - Updated Grizzly to version 1.7.2 - Misc - Added Engine.copyResponseHeaders() method. Contributed by Stephan Koops. - Handlers now return a SERVER_INTERNAL_ERROR instead of CLIENT_NOT_FOUND when no next Restlet is attached to them. Suggested by Paul J. Lucas. - Added Engine.formatCookie(), formatCookieSetting() and equivalent parse*() methods. Contributed by Stephan Koops for the JAX-RS implementation. - Updated HTTP server connectors behaviour in the purpose to avoid the sending of entity when the entity is empty, when the status explicitely forbids the sending of entity (e.g. 1xx, etc), or when the method must not send entity (e.g. HEAD). - Updated HTTP client connectors behaviour in the purpose to close aggressively the connection in several identified cases when the status explicitely forbids the sending of entity (e.g. 1xx, etc), when the method must not send entity (e.g. HEAD), or when the Content-Length header's value is 0. - Ensure that the headers of the response's entity will be retrieved even if no message body has been sent (in this case, an empty representation is created). - Tutorial examples based on applications are now runnable with the Servlet adapter. Suggested by Marcelo Ochoa. - RIAP request are now considered confidential when dispatched. Suggested by Rob Heittman. - 1.1 Milestone 1 (2007-12-24) - Bugs fixed - Overridden the StringRepresentation#setCharacterSet method, in order to refresh the size of the representation. Reported by Calvin Cheng. - Fixed issue in the selection of connectors. The last connector in the classpath for a given protocol was selected instead of the first one, leading to counter-intuitive behavior when multiple connectors were present in the classpath. - Fixed bug in DomRepresentation causing the loss of both public and system DocTypes. Reported by Lee Saferite. - Fixed path error in test cases module. Reported by Sean Landis, contributed by Alex Milowski. - SaxRepresentation constructors don't throw IOException anymore. Reported by Paul J. Lucas. - Fixed multi-threading issues. Reported by Tim Peierls. Some contributions by Kevin Conaway. - Renamed the HTTP_AWS challenge scheme into HTTP_AWS_S3 as there are changes for each existing Amazon Web Service. Reported by Guy Ernest. - API Enhancements - Added Response.locationRef property as a replacement for the Response.redirectRef property that is now deprecated. Suggested by Michael Vogel and Avi Flax. - The ConverterService and all related methods on Message are deprecated, with no replacement as it doesn't fit well with content negotiation. Most users prefer to handle those conversion in Resource subclasses. Suggested by Justin Makeig, Rob Heittman, Sumit Lohia. - Added a getApplication() method to Context and Resource classes. - Added abstract CharacterRepresentation for representations based on character streams. - Added ReaderRepresentation for representations based on characters Readers. - Added WriterRepresentation for representations based on characters Writers. - Added ByteUtils.toString(Reader) method and refactored ByteUtils.toString(InputStream) to reuse it. - Added ByteUtils.getReader(InputStream, CharacterSet) method. - Added ByteUtils.getStream(Writer) method. Implementation by Kevin Conaway. - Added getReader() and a write(Writer) methods on Representation class. - Exposed the "file" property on the FileRepresentation class. - Added two new FreeMarker's TemplateRepresentation constructor to allow more ways to provide the template (via a representation or directly as a FreeMarker Template object). - Added validate() methods on XmlRepresentation to validate an XML representation against a given schema. - Added a getSource() method on XmlRepresentation that results a JAXP Source instance. - Added a Template.getVariableNames() method. Suggested by Stian Soiland. - Added new Dimension.AUTHORIZATION enum entry. Suggested by Stian Soiland. - Added a Representation.release() to have an uniform way to release a representation without forcing a read for example or manually closing the socket, the channel, the file, etc. - Added a Message.release() method to have an easy way to release the message's entity. Suggested by Stian Soiland. - Added W3C XML Schema and Relax NG media types. - Added new media types for RSS and WADL. Contributed by Avi Flax. - Added Atom, Relax NG, RSS, RTF, WADL and XSD in the common extensions of MetadataService. Contributed by Avi Flax. - Simplified the management of MediaType constants. Contributed by Stian Soiland. - Application is now concrete and has a setRoot() method. - Added Component.setDefaultHost() method. - Moved the "expirationDate", "modificationDate", "tag", "size" properties from Variant to Representation. The old properties are only deprecated for now but will be removed in a later version. - The Resource class now accepts POST requests without any entity, or with an empty entity. Suggested by Sean Landis and Stian Soiland. - Added setters and getters for all the properties of all the classes in the API, including the collection properties. Clarified the Javadocs for the default collection creations. This will greatly facilitate the usage of the API in IoC containers like Spring. - Renamed "URIResolver" property to "uriResolver" in TransformRepresentation. - Renamed "*Attribute" properties to "*Parameter" in TunnelService. - Added "accessRestricted" property to CookieSetting, currently mapped to the "httpOnly" Cookie attribute supported by recent browsers to prevent XSS attacks. Contributed by Rob Heittman. - Added logger-less constructors to Template. Suggested by Justin Makeig. - Added "available", "modifiable" and "readable" properties to the Resource class. - Added "rechallengeEnabled" property to Guard (true by default) to repeatedly challenge the client upon reception of invalid credentials instead of forbidding the access like before. This conforms more closely to the HTTP 1.1 specifications while leaving the door open for the stricter behavior. Reported by Stephan Koops. - Added the "internalRouter" property to Component to attach internal/private Restlets that are accessible via the built-in RIAP client (Restlet Internal Access Protocol). Suggested by Marc Portier who contributed the test case. - Updated the Protocol and LocalReference classes with support for the new RIAP scheme. - In order to facilitate the implementation of your custom Finder, an new createTarget() method taking a Resource class in parameter. - Added support for the "Content-Disposition" field as a "downloadName" property on Representation. Contributed by Kevin Conaway. Added a "downloadable" property to activate the feature. - Added a ResourceException to facilitate the mapping between domain exceptions and response status. Suggested by Paul J. Lucas and others. - Replaced getPreferredRepresentation() and getRepresentation(Variant) methods by represent() and represent(Variant) methods throwing ResourceExceptions. - Added Reference.addQueryParameter() and addSegment() methods. Reported by Kevin Conaway. - Added Reference(Reference baseRef, Reference uriRef) constructor. Suggested by Rob Heittman. - NRE and Extension Enhancements - Added a new Grizzly based HTTP server connector (full NIO). Optmizations and support contributed by Jean-François Arcand. - Upgraded Apache MINA to version 1.1.0. - There are now default internal HTTP client and server connectors exposed in the NRE core. If no other HTTP connectors are found in the classpath, those connectors will be used. They should perform reasonably under normal workloads but won't be as scalable as the NIO based connectors such as Grizzly and MINA based ones. You don't have anything to do to configure them, just put the com.noelios.restlet.jar in your classpath along with the Restlet API's JAR. Note that they don't support HTTPS and persistent connections. The support for chunked encoding and decoding was contributed by Kevin Conaway. - All HTTPS server connectors (Grizzly, Jetty and Simple) now have two configuration parameters to indicates whether a client authentication is wanted or required. Suggested by Toby Thain and Chuck Hinson. - A request attribute "org.restlet.https.clientCertificates" containing the list of SSL session certificates (if available and accessible) is now available. Currently, only the Simple connector is capable or setting it. Suggested by Toby Thain. - Simple connector now initialize a trust manager. - Added JAXB extension based on a contribution by Overstock.com (via Sean Landis). - Added JAXB 2.0 and StAX 1.0 libraries. - The ServletConverter now also copy the Servlet's request attributes into the Restlet attributes map. Suggested by Leigh Klotz. - Added automatic call of release() for outgoing representations via HTTP connectors. Contribution by Alex Milowski. - Added SpringApplication, SpringComponent, SpringHost, SpringRouter, SpringServer to the Spring extension to facilitate the wiring by Spring IoC. - If Resource.getRepresentation(Variant) returns 'null', the Resource.handleGet() method now returns a NOT_FOUND (404) status. Suggested by John D. Mitchell. - Added WADL extension with a WadlComponent capable of automatically wiring a Restlet component, application and resource classes. Suggested by Avi Flax. - Added a createComponent() method on ServerServlet to facilitate the customization of the component for a Servlet. - The Message's getEntityAsDom(), getEntityAsSax() and getEntityAsForm() are now caching the result representation for easier reuse in a Restlet filters chain. Suggested by Rob Heittman. - Finder.createResource() method now rethrows the Error exceptions thrown by Resource constructors. Suggested by Vincent Lari. - A custom classloader can now be specified when using the CLAP URIs. Just set the attribute "org.restlet.clap.classloader" on your Request instances with your classloader instance. This will be automatically be picked up by the CLAP connector. Reported by Alex Milowski. - Guard.secrets is now a final ConcurrentMap instead of just a Map instance. Suggested by Tim Peierls. - Renamed Context's "dispatcher" property into "clientDispatcher" to distinguish with the new "serverDispatcher" property. The "serverDispatcher" property allows the developer to optimize the sending of request to applications under the current component/JVM, as if they were dispatched by one of the server connectors. Suggested by Rob Heittman with feed-back from Marc Portier. - Split the Resource class to separate a new org.restlet.Handler class exposing the lower-level API, from the higher-level API of Resource. - Refactored the implementation of dispatchers to derive from a base TemplateDispatcher class. - The context dispatchers automatically update the identifier property of response entities when they are empty, based on the request's target URI. - Added SpringServer.setParameters(Properties) method. Contributed by Kevin Conaway. - Response.redirect*(String targetUri) methods now automatically resolve relative URIs agains the base reference of the Request's resource reference. Suggested by Rob Heittman. - Misc - Removed AsyncWeb connector, to be replaced by a custom MINA based one. - Removed Jetty 5 connector from the code base. Jetty 6 connector is stable enough now. - Updated projects to Eclipse 3.3. Minor adjustments required.