FYI, I've just updated the snapshot to fix a regression: - Fixed handler starting bug (forcing status to 501). - Optimized the ByteUtils.write(is, os) method.
http://www.restlet.org/downloads/current.zip Thanks, Jerome > -----Message d'origine----- > De : Jerome Louvel > Envoyé : mardi 17 octobre 2006 14:05 > À : Restlet discuss > Objet : New snapshot of beta 19 > > > Hi all, > > The next release has been delayed several times already, > sorry for that. This time I'm confident to release this week, > probably on Friday, unless unexpected bugs occur over the > week. As it contains numerous changes, any effort to test the > latest snapshot is very welcome. > > Beware that significant changes were done to the API. Check > the changes log, the updated examples and the Javadocs in the > distribution. The code is stable and all known bugs are > fixed. Support for the Servlet adapter has been upgraded to > work with Applications. > > I've copied below the full changes log. The snapshot is available at: > http://www.restlet.org/downloads/current.zip > > Best regards, > Jerome Louvel > > --- > 1.0 beta 19 (2006-10-17) > > [Bugs fixed] > - Fixed issue with error status preventing the setting of > response headers with Servlet containers like Tomcat. Report > and solution by Evan DiBiase. > - Completed support for content streaming in the HTTP client > connector extension. Issue reported by Mikkel Jensen. > - Fixed bug in ParameterList.getFirstValue(String, boolean) > ignoring the "ignoreCase" parameter. > - Fixed issue with ServerServlet preventing the returning of > an output representation with an error status code. Reported > by Sean Landis. > - Fixed incomplete plugin descriptors for some extensions. > - Added workaround for JDK's bug #6472250 when using the > fixed length mode with the HTTP client. > > [API breaking changes] > - Renamed Representation.isContentAvailable() to > isAvailable() and isContentTransient() to isTransient(). > - Merged Client and GenericClient into a single Client class. > - Moved com.noelios.restlet.connector into hidden > com.noelios.restlet.impl.connector package. > - Moved internal utilities from com.noelios.restlet.util > into hidden com.noelios.restlet.impl.util package. > - Moved com.noelios.restlet.spi into hidden > com.noelios.restlet.impl package. > - Moved org.restlet.component.ContainerContext to > com.noelios.restlet.impl.component.ContainerContext. > - Renamed Server."next" property into "target". "Next" was > assuming that a previous Restlet existed, which is false for > Server connectors. > - Moved com.noelios.restlet.util.WrapperMap into org.restlet.util. > - Removed Restlet.compareTo() method. No apparent usage. > - Renamed Reference.getProtocol() into getSchemeProtocol(). > - Scorer now derives from Filter to improve factorization. > - Renamed Handler into Finder. Note: Handler is still used, > but for a new purpose! > - Renamed DirectoryHandler* classes into DirectoryFinder*. > - Added Context.getClient() returning a generic ClientInterface. > - Removed get/post/put/delete methods on Context as > getClient() is preferred. > - Added a post() method on Resource returning an instance of > the new org.restlet.data.Result class as well as put() and delete(). > - Renamed Chainer.findNext(Call) into getNext(Call). Chainer > is now abstract. > - Scorer is now abstract to force implementation of the > score() method. > - Renamed "name" property into "agent" for ClientData and ServerData. > - Added "name" (for domain name) and "port" properties to > ServerData, matching HTTP's "Host" header. > - Refactored HttpCall and related classes to better handle > and preserve the "Host" header information. > - Renamed CallModel variable "clientName" into > "client.agent" and "serverName" into "server.agent", also > "serverAddress" into "server.address" and "clientAddress" > into "client.address". > - Removed Context.getClient(protocol) method, now Context > directly implements ClientInterface. > - Replaced com.noelios.restlet.HostRouter by a portable > org.restlet.component.VirtualHost class. See updated tutorial > to know how to migrate. > - Moved com.noelios.restlet.PatternScorer to > com.noelios.restlet.impl.PatternScorer as this is related to > the API implementation. > - Refactored and completed the Application class to act as a > portable component, deployable on any Restlet engine and > any (virtual) host without any change. > - Moved "root" property from Component to Application. > - Added new org.restlet.component.VirtualHost class, as a > Router subclass to target applications or handlers. > - Split org.restlet.Call into org.restlet.Request and > org.restlet.Response to solve overweight issue. Suggested by > Piyush Purang. > Also added a parent Message class following the HTTP > semantics. Merged "input" and "output" properties into a > single "entity" property on Message. > - Merged AbstractResource and Resource into a single Resource class. > - Merged AbstractRepresentation and Representation into a > single Representation class. > - Removed the "com.noelios.restlet.builder" package as the > new Application feature broke this approach and makes it less useful. > We may reintroduce a refactored version in a later release. > - Moved LogFilter and StatusFilter to com.noelios.restlet.impl. > - Moved ClientList and ServerList to org.restlet.util > - Moved ScorerList to org.restlet.util and changed it to an > interface. > - Renamed ClientData and ServerData to ClientInfo and > ServerInfo to be less ambiguous about the type of data. > Also renamed "Response.server" property to "serverInfo" > and "Response.client" property to "clientInfo". > - Moved EmptyValue to org.restlet.util. > - Renamed ConditionData to Conditions. > - ServerServlet now only works with applications as target. > Review updated Javadocs before upgrading. > - GuardFilter now logs messages via the context's logger. > Changed constructor. > - Moved all remaining classes of org.restlet.component and > org.restlet.connector into org.restlet for simplification > purpose. Suggested by Piyush Purang. > - Added Holder filter to hold an attached handler and apply > call logging and status setting. > - Refactored hierarchy : Restlet, Chainer, Connector and > Component directly derive from base Handler class. > - Extended usage of contexts. > - Removed WrapperRestlet class, replaced by a wrapping > constructor on Restlet. > - Renamed "input" and "output" to "entity" or "request" or > "response" in all properties name for CompressFilter, > DecompressFilter, > ExtractFilter, HttpClientCall, HttpServerCall, Result > - Moved ClientInterface to org.restlet.util. > - Replaced WrapperCall by wrapper constructors on Message, > Request and Response. > - Replaced WrapperRepresentation by wrapper constructors on > Resource and Representation. > > [Other changes] > - Updated Jetty 6 extension to 6.0.1 release and Jetty 5 > extension to 5.1.11 release. > - Added Resource.setVariants() and setIdentifiers() methods. > Can be easier than doing a getVariants().clear() then a > getVariants().addAll(newList). > Suggested by Chris Winters. > - org.restlet.ReferenceList now derives from > WrapperList<Reference> to factorize code and to clarify (in > Javadocs) which extra methods are provided. > - Improved Javadocs for the org.restlet.Handler class to > explain what is the default behavior of each handle*() method. > - Refactored all HTTP client and server classes to work with > the new call converter mechanism. > - Renamed AbstractHttpServer to HttpServer, > AbstractHttpServerCall to HttpServerCall and > AbstractHttpClientCall to HttpClientCall. > - Merged HttpCall interface and DefaultHttpCall class into > single HttpCall class. > - Added com.noelios.restlet.connector.HttpServerConverter as > the base call converter (from HTTP calls to uniform REST calls). > - Refactored the HttpUrlConnection-based HTTP client to > extract a generic HttpClientConverter and added a base > HttpClient class. > - Added support of HTTP headers in high-level calls. The > headers are available in > Request|Response.getAttributes().get("org.restlet.http. > headers") as an instance of ParameterList. Additional > headers can also be added by setting a "org.restlet.http.headers" > attribute in Request or Response. Note that only > non-standard HTTP headers are allowed to be added to prevent > conflicts with the connector's behavior. > - Added sample application illustrating the access raw HTTP > headers. Used suggestion from John D. Mitchell. > - Added static valueOf() methods to ChallengeScheme, > CharacterSet, Encoding, Language, MediaType, Method, Protocol > and Status. > Sometimes renamed existing create() method. Suggested by > Piyush Purang. > - Clarified the Javadocs of root classes in org.restlet. > - Added more constructors to Chainer, Context, Filter and Finder. > - Added a Message.setEntity(String, MediaType) method > facilitating the setting of string-based entities. > - Fully updated the FAQ. > - Updated pictures in the tutorial to reflect the latest API > changes (Application, hierarchy changes, etc.). > - Form handling code don't throw IO exceptions anymore for > Call.getInputAsForm() and Reference.getQueryAsForm(). Issue > reported by Piyush Purang. > - Added modification support (PUT and DELETE) to > DirectoryFinder. Suggested by Don Dwoske and John D. Mitchell. > Implementation contributed by Thierry Boileau. > - Added "protocol" property on Call. > - Added FTP constant to Protocol. > - Improved detection of default ports in > Reference.toString() static methods. Added new toString() variant. > - HTTP client connectors now set the "Host" header manually > when proper information is found via Call.getServer()."name" > and "port". > - Refactored the parsing/construction of the target resource > reference to handle both relative and absolute URIs. > - Improved robustness of Reference when handling relative URIs. > - Added a "javadoc-hide" property to "build.properties" to > hide the Javadocs of implementation packages (true by default). > - Added shortcut attach/detach methods to Router, equivalent > to getScorers().add()/removeAll(). > - Method Filter.getNext(Call) is now final to prevent > overriding. If needed, use Chainer as base class. > - Added ScorerList.removeAll(UniformInterface) method to > remove all scorers pointing to a given handler. > - Added Protocol.ALL constant as a protocol wildcard. > - Added "hosts" and "localHost" properties to Container. > - Added support "Allow" HTTP headers. New allow*() methods > added on Resource and support for setting the 405 status in > the Finder (ex-Handler) class. > The list of allowed methods is then set to the Response > (ex-Call) object. Subclasses of Finder can customize the list > of allowed methods. > Suggested by AJ Barnes and Lars Heuer. > - Updated tutorial examples to leverage application concept. > - Refactored all usages of the JDK's loggers in order to > reuse the Context's logger, allowing separation of messages > for each application.