===========
Changes log
===========
- 2.0.15 (2012-08-23)
- Bug fixed
- Fixed bug in Reference#getParentRef with relative URIs.
Reported by Christian Bauer.
- Fixed closing issue with pipes used by BioUtils.getReader
and getInputStream methods.
- Fixed concurrency bug upon application start or strop that could
cause errors such as "no Restlet defined to process calls. Maybe it
wasn't properly started" errors (500). Reported by several persons
including David Fuchs, Danny Leshem, Yunwu Zhu and Bjorn Roche.
- Fixed range issue that leads to generate a Response having a
Content-length greater than actual content with range request.
- Fixed potential security issue that allows Javascript injection
inside entities of error reponses.
Reported by Danny Leshem.
- Fixed potential threading/pipe issues with OutputRepresentation
and WriterRepresentation classes.
- Fixed range computation issue.
- Fixed Turtle BNode parsing (RDF extension).
Contributed by Christophe Gueret.
- MemoryRealm now copies the properties from the reference user in the
realm to the User object set in Request.clientInfo.
Reported by Peter Ansell.
- SecretVerifier now consider two 'null' secrets as not comparable.
- Fixed client proxy media type preferences, when repeated calls
are done, which may lead to a status 413 response.
- Fixed case sensitivity issue with query parameters in JAX-RS
extension. Reported by Mark Kharitonov.
- Misc
- Reverted Role equality test to default Java object equality as
equality based on name could cause issues with MemoryRealm
mapping if several applications used the same role names.
- Added log traces in case of error with custom status representation.
- Improved DateUtils's Javadocs with clear formatting hints.
- 2.0.14 (2012-05-23)
- Bug fixed
- Fixed issue with OutputRepresentation retrieved as InputStream
using its getStream() method when writing negative integers.
Now properly shift values into the 0-255 ranges, leaving the -1
value as a clear marker for end of file.
Reported by Gabriel Pulido.
- Usage of ranges on representations having unknown size.
Reported by Bjorn Roche.
- Fixed missing JSON media type with converter service and the
JSON extension.
- Optimized conversions using the Jackson extension in order to reuse
configuration (issue #577).
- Fixed security bug in the XML extension that allows XML external
entity attacks. Reported by Nicolas Grégoire,
Caleb James DeLisle and Fabio Mancinelli.
- 2.0.13 (2012-04-18)
- Bug fixed
- Fixed user agent name detection for Firefox 12 on Windows.
Reported by Tim Peierls.
- Fixed issue with content negotiation in the JAX-RS when
multiple Accept preferences were expressed by the client.
Reported by Vincent Massol, Fabio Mancinelli, Anca Luca.
- 2.0.12 (2012-04-06)
- Bug fixed
- Fixed the JAX-RS extension that did not introspect the
interfaces and parent classes of resource classes.
Reported and contributed by Shaun Elliott.
- Relaxed content type header parsing in case of a trailing
semicolon. Reported by Jean-Baptiste Dusseaut.
- Fixed handling of Put requests with Jax-Rs extension without any
mime type. Reported by Thomas Mortagne.
- Fixed NPE when setting last segment on Reference.
Reported by Laszlo Hordos.
- Fixed OSGi manifest file for the Jackson library that exposes a
private package. Reported by Laszlo Hordos.
- Fixed parsing of Feed using the Rome extension.
Reported by Andy Dennie.
- Allowed multiple cookies set at once for JAX-RS.
Reported and contributed by Grzegorz Godlewski.
- Fixed namespaces declaration using SaxRepresentation.
Reported by Nicholas Waltham.
- Fixed scoring algorithm of the JaxbConverter, detected when used in
conjunction with JacksonConverter.
Reported by Michael Henderson.
- Misc
- Updated FreeMarker library to version 2.3.19.
- 2.0.11 (2012-01-25)
- Bugs fixed
- Fixed MediaType.includes(MediaType) which returned true with the
other type was null. Reported by Try Lam.
- Improved OData client speed by caching costly reflection calls,
especially on Android. Contributed by Nikhil Purushe.
- Fixed conversion bug with asynchronous annotated interfaces
when a Result parameter is declared. Reported by Bill Claypool.
- Fixed conversion of request entities by ClientResource using response
variants. Reported by Arjohn Kampman.
- Fix the GWT edition, client requests using HTTP_BASIC authentication
scheme did not generate Authorization header.
Reported by Koen Maes.
- 2.0.10 (2011-10-05)
- Bugs fixed
- RDF/XML writing wasn't properly factoring statements from the same
source reference.
- SaxRepresentation wasn't writing the wrapped SAX sources. Added
logic to write(XmlWriter) method. Reported by Raif S. Naffah.
- Fixed potential NPE in Adapter#getLogger() method.
Reported by Avi Flax.
- Removed unused namespaces declaration in RDF/n3 and Turtle writers.
- Removed extra empty line generated by XmlWriter at the top of docs.
- Lowered level of log messages in the internal connector when a
connection is broken from warning to fine as it could be the result
of a simple SHIFT+F5 browser reload.
- Exceptions while writing RDF were not properly traced, leading to
hard to debug issues.
- Fixed the DIGEST authentication, when reusing a valid digest
ChallengeResponse for a distinct resource. Reported by Steve Ferris.
- Fixed FreeMarker optional OSGi dependency on Servlet.
Reported by Warren Janssens.
- Fixed issue regarding the posting of Web forms to the GAE
platform (release 1.5.0 and higher) due to GAE misbehaviour
that consumes streams when receiving Web forms.
Reported by Bjorn Roche.
- Fixed parsing of form with empty parameters. Now their value is ""
instead of null. Reported by Arjohn Kampman
- 2.0.9 (2011-08-20)
- Bugs fixed
- Fixed severe log messages produced by the Component class due to
lack of child context usage.
- Fixed potential IO issue by adding missing calls to flush()
methods in Writer and OutputStream. Reported by Jeroen Goubert,
Konstantin Pelykh.
- Fixed potential NPE in Velocity's TemplateRepresentation.
Reported by David Hamilton
- Fixed bug failing to properly clear the service filters of a
Component when stopped. Reported by Jean-Pascal Boignard.
- Fixed parsing issue with invalid HTTP Basic credentials, when
length of Base 64 value isn't a multiple of 4.
Contributed by Ray Waldin.
- Fixed conversion of representations to instances of primitive
type using the default converter.
- Fixed handling of binary data in OData extension.
Reported by Nikhil Purushe.
- Fixed a bug in the default converter that lead the latter to
take precedence over specialized converter when converting
incoming representations. Reported by Glenn Bruns.
- Fixed potential NPE in the GWT edition. Reported by Cyril Lakesh.
- Added warning message when an unexpected error happen during the
invocation of an asynchronous callback.
- 2.0.8 (2011-06-21)
- Bugs fixed
- AbstractJaxbProvider, JaxbRepresentation and JibxRepresentation
used TreeMap which required Comparable implementation and isn't
synchronized. Replaced with ConcurrentHashMap.
Reported by Julien Landure
- Fixed regression introduced in 2.0.7 with WriterRepresentation,
OutputRepresentation and subclasses when sending long entities
(1024 and longer). Reported by Tim Peierls.
- Fixed Range issue when handling large files. Reported by Tom Moore.
- Fixed potential NPE in FreeMarker ContextTemplateLoader.
- The Content-Disposition header was never retrieved using external
server connectors.
- Misc
- 2.0.7 (2011-04-27)
- Bugs fixed
- Optimized support of JAXB in the JAXRS extension in case
the org.restlet.ext.jaxb extension is present in the
classpath. Reported by Julien Landure.
- Amazon S3 authentication could fail due to new subdomain
names like "s3[a-z0-1\\-]*.amazonaws.com".
- Fixed bug with the testing of equality of Roles in RoleAuthorizer.
Reported by Tim Peierls.
- Fixed issue with 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.
- Apache HTTP Client was processing cookies like a browser while
as a Restlet client connector it shouldn't have done so, like
for other connector such as the internal client.
Reported by Kristoffer Gronowski and Martin Svensson
- Fixed bug with the testing of equality of Roles in RoleAuthorizer.
Reported by Tim Peierls.
- Misc
- Clarified in log trace the need to manually register connector
helpers on the Android edition.
- 2.0.6 (2011-03-31)
- Bugs fixed
- Fixed Redirector when the targer URI is on a distinct domain.
Reported by Guido Schmidt.
- Fixed potential issue in ClientResource regarding the actual
entity being resent in case of error.
- Misc
- Clarified default property values of the TunnelService class.
- 2.0.5 (2011-02-09)
- Bugs fixed
- Fixed bug in virtual host router that was failing if no host
URI was set. Now falls back to the host part of the resource URI.
- Fixed handling of "EDM Single" properties.
Reported by Andreas Taube.
- Fixed ClientResource#put(Object,MediaType) and
#post(Object,MediaType) methods of the GWT edition.
Reported by Charlie Mason.
- Fixed bug causing first entity byte to be eaten if the connection
wasn't persisting. Reported by Sebastien Gaide and Olivier Miel.
- Fixed potential NPE with conditional requests.
Reported by Carolyn Duby.
- Fixed potential race issues in internal HTTP connector under high
load. Reported by Leandro Oliveira.
- Fixed bug with AWS S3 authentication due to wrong insertion of
HTTP headers. Reported by Sebastien Gaide.
- The GWT proxies generated at compilation time weren't setting
their preference for the GWT object serialization format.
- 2.0.4 (2010-12-24)
- Bugs fixed
- Extension headers on responses were now supported by the
JAX-RS extension. Reported by Jim Stabile and fix suggested
by Simon Temple.
- Invalid log traces for connectors without protocols, such as
dispatchers, were removed.
- Fixed AccessControlException caused by an unnecessary call to
System.getProperties(). Reported by Matthias Reichl.
- The JAXB extension now has better support for classloader.
Contributed by Eric Hough.
- Fixed the writing of the Via header.
Reported by Guido Schmidt.
- Fixed annotation processing on XStream deserialization.
Contributed by Bruno Gieder.
- Fixed parsing of complex types in the OData extension.
Reported by Alex Bass.
- Fixed potential IndexOutOfBoundsException when receiving
chunked content. Reported by Mark Thornton.
- Fixed ROME 1.0 JAR to use the latest version.
- Fixed scoring issues between the Atom and XML extension
for the Feed and Service classes which extend the
SaxRepresentation classes.
- Fixed converter issues with the ROME extension.
- Fixed SpringBeanFinder throwing misleading exceptions
when resource not found. Contributed by Rhett Sutphin.
- Fixed double-instantiation of prototype resources in
SpringBeanRouter. Reported by George Calm and
contributed by Rhett Sutphin.
- Fixed status description lost when throwing ResourceException
inside the deprecated Resource class.
Reported by Rhett Sutphin.
- Fixed ConnegUtils#getPreferredMetadata algorithm.
Reported by Rickard Oberg.
- Fixed lack of "Vary" HTTP header with HEAD calls on the
ServerResource class.
- Request with no entity are now detected at connector level when
non persistent connections are used without setting the
Content-Length header properly either. Reported by David Fogel.
- Fixed parsing of Warning header. Reported by John Logsdon.
- Fixed support of GWT 2.1.
- 2.0.3 (2010-11-07)
- Bugs fixed
- Fixed Representation#availableSize computation issue when
total size is unknown and fixed ranged entity writing.
- Fixed generation of GWT proxies. Reported by Evan Wang.
- 2.0.2 (2010-11-03)
- Bugs fixed
- Fixed bug in Netty HTTPS connector preventing the handling
of several connections, persistent connections and chunked
encoding. Reported by Laurent Rustuel.
- Fixed issue with Netty when an unknown parameter was passed.
- Fixed content negotiation issues with methods accepting
Representation parameters or returning Representation
instances. Reported by Dustin Jenkins.
- Fixed potential thread blocks due to CountDownLatch.await()
calls. They now properly time out. Suggested by Tim Peierls.
- Fixed initialization of the ClientInfo#userAgentTemplates
static variable. Reported by Michael Terrington.
- Fixed the Content-length header sent by HEAD responses.
Reported by Nicolas Rinaudo.
- Fix bug with automatic redirects by Directory when the URI
contains query parameters. Reported by William Pietri.
- Internal HTTP client now uses absolute URIs for proxies
requests.
- Redirector supports relative URIs again.
Contributed by Marc Portier.
- Fixed bug when using the internal client in Sun Applet Viewer.
Reported by Darin Jackson.
- Fixed bug when an URI was included in the URI query or
fragment.
- Fixed the deserialization of Java objects when using the
internal client or server connectors. The final and empty
chunk was not read. Reported by Rob Kooper.
- Fixed serialization of String parameter in the GWT edition.
Reported by Brian Cabana.
- Fixed the usage of Collection as entity in the GWT edition.
Reported by Evan Wang.
- Fixed bug in ObjectRepresentation preventing the writing of
</java> at the end of entities with media type
"application/x-java-serialized-object+xml".
Reported by M. Maksin.
- Fixed usage of 405 and 415 statuses during content negotiation.
Reported by Doug Smalley and Avi Flax.
- Misc
- Additional errors are now caught and logged in the HTTP
servers. Contributed by Marc Portier.
- Updated Jetty to version 7.1.6. Suggested by Marc Portier.
- Updated Netty to version 3.2.2.
- Optimized writing from NIO channels to BIO output streams.
- Updated Simple to version 4.1.20.
- Added support of GWT 2.1. The behaviour of the log API
introduced in GWT 2.1 may not work as expected according to
the GWT documentation.
- 2.0.1 (2010-09-08)
- Bugs fixed
- When cloning the prototype request, the ClientResource wasn't
copying the ClientInfo#user property.
- Fixed the setting of the Request's rootRef attribute when
using the RIAP protocol.
Reported by Tal Liron and Tim Peierls.
- Fixed content negotiation issue in the Servlet extension and
all HTTP connectors except the internal one.
- Fixed the deserialization of unavailable entities in the GWT
edition.
- Fixed serialization of String objects in the GWT extension.
- Allowed to filter serialized types in the GWT client proxies
generated.
- Fixed potential entity reading issue with Grizzly HTTP server.
- Fixed the internal client connector when a connection cannot
be found to send a request.
- Added missing createRequest(Request), createResponse(Request)
methods in the ClientResource class.
- Optional authentication keep request in neutral state: neither
authenticated neither unauthenticated.
Reported by Bruno Harbulot.
- Fixed RangeRepresentation which was incorrectly modifying the
wrapped representation. Reported by David Fogel.
- The ServerServlet now wraps the Servlet input and output
streams to prevent them from being closed, especially once the
response has been returned to the container as it could be
reused and impact another call.
Suggested by Alois Cochard.
- Removed Message#finalize() calling release() at GC time which
can have side-effects that are hard to isolate, especially in
Servlet environments. Reported by Giovani Pieri.
- Throwables wrapped in ResourceExceptions can now get a custom
status via the StatusService. Reported by Olivier Miel and
Olivier Monaco.
- Fixed potential NPEs in converters such as the JSON extension
converter. Reported by Alexander Kampmann.
- Fixed potential conversion issues due to lack of preference
setting (Request#clientInfo#acceptedMediaTypes property) on
the ClientResource based on the available converters. New
ConverterService#updatePreferences() method was added with
a similar (optional) method on ConverterHelper.
- Fixed bug in ConnegUtils#getPreferedMetadata() causing the
quality level to be ignored. Reported by Daniel Zhelyazkov.
- Reduce the number of OSGi imported packages for the Jackson
extension. Suggested by Jean-Luc Geering.
- Removed the support of FTP protocol of the net client connector.
Reported by Christophe Vanfleteren.
- Misc
- Updated Grizzly library to version 1.9.19.
- Improved concurrency for TunnelFilter.AcceptReplacer.
Contributed by Tim Peierls.
- Clarified Javadocs of Context#getServerDispatcher().
Suggested by Alex Milowski.
- Added missing parsing capability to the ROME extension.
- Added description of the status in the default error
representation. Suggested by Fabian Mandelbaum.
- 2.0.0 (2010-07-19)
- API changes
- When an annotated method manually sets the response entity, if
this entity is available then it will be preserved and the
result of the annotated method ignored.
Suggested by David Fogel.
- Added missing JaasUtils#doAsPriviledged(..) methods.
Contributed by Bruno Harbulot.
- Added Encoder#getSupportedEncodings() method to allow
customization.
- Added WadlApplication#createHtmlRepresentation(ApplicationInfo)
to allow for customization of HTML representation.
- WadlApplication#getApplicationInfo and #wadlRepresent methods are
now protected instead of public.
- WadlApplication#title property is now deprecated. Use the common
Application#name and #description property instead which are now
used by default.
- Renamed "htmlConvert.xsl" file into "wadl2html.xslt" in WADL
extension JAR.
- Added static ResourceInfo#describe(ResourceInfo, Object, String)
method in WADL extension to factorize logic.
- Status service now logs exceptions caughts.
- Added static Method#sort(List<Method>) method.
- Renamed WadlServerResource#title into "name" property and added
"description" property.
- Added WadlServerResource#createWadlRepresentation(...) and
createHtmlRepresentation(...) methods.
- Added RepresentationInfo#reference property to support
representation "href" attributes.
- Added describe(Class<?>, Variant) method on WadlServerResource
to allow for custom documentation.
- Added describeAnnotations(MethodInfo, ServerResource) static
method on MethodInfo.
- Renamed WadlServerResource#autoDescribed into autoDescribing.
- The private WadlServerResource#describe(ResourceInfo) method is
now protected. Also renamed getParametersInfo() method into
describeParameters(), and isDescribable(Method) into
canDescribe(Method) for naming consistency. Also added the
describe(ApplicationInfo) method to allow updating the parent
application description, to add global representations for
example.
- The WadlDescribable interface now passes an ApplicationInfo
instance as parameter to the getRessources() method so the
global properties can be updated if necessary.
- Moved ClientResource#toRepresentation(...) and toObject(...)
methods up to UniformResource, so that they can be overridden
in ServerResource subclasses as well.
- Upon garbage collection, if a Restlet instance is still started
its stop() method is now automatically called for clean-up
purpose.
- Request and responses now call their release() method upon
garbage collection. It releases any associated entity.
- Increased default value for "maxConnectionsPerHost" parameter
of the Apache HTTP client extension.
Suggested by David Fogel.
- Bugs fixed
- Thread local variables are now cleared correctly.
Prevented unloading of WAR files or OSGi bundles
using Restlet. Reported by Felix Leipold,
Dustin Jenkins and Rickard Oberg.
- Fixed generation of client proxies in the GWT edition, when the
annotated method declares an entity as a Representation instance.
- Fixed handling of non ASCII characters in the GWT edition
when running in hosted mode.
Reported by Giovani Pieri.
- Removed XML header in JSON documents produced by XStream.
Reported by Louis Huh.
- Empty representations (with a size of 0) are considered again
as not available. Reported by David Fogel and Eric Hough.
- The log service now logs "0" instead of the entity size when this
entity isn't effectively sent (204 or 304 status).
- Atom feed and entry readers now set the media type of the inline
content. Reported by Martin Svensson.
- Fixed bug in relative references computation.
Contributed by Tal Liron.
- Client connectors automatically created by the ClientResource
are now automatically stopped upon garbage collection to prevent
dormant threads. Reported by Dustin Jenkins and TK Kocheran.
- Parameters on Attachments in Component's XML configuration were
not taken into account. Contributed by Alex Milowski.
- Fixed bug avoiding the usage of HashMap in annotated interfaces
in the GWT edition.
Reported by Greg Hengeli and Christopher Gokey.
- Removed the "default" attribute for the matching mode of
attachments in the Component XML configuration.
Reported by Alex Milowski.
- Atom feed parser wasn't parsing "summary" elements.
Reported by Guillermo Vega and fixed by Vassilis Touloumtzoglou.
- Made JaasUtils.createSubject(ClientInfo) static.
Reported by Bruno Harbulot.
- Fixed NPE when requesting via the RIAP protocol.
Reported by Alex Milowski.
- Application#outboundRoot wasn't properly taken into account by
the ClientResource class. Reported by Kristoffer Gronowski.
- JAX-RS extension wasn't setting new cookies properly.
Reported by Sriram Chavali.
- Fixed issue with services which weren't getting their context
properly set and updated. Reported by Iestyn Evans.
- Fixed regression in WadlApplication that prevented the retrieval
of WADL description when OPTIONS was called on "/" or "" URIs.
- Fixed WADL generation to not add an empty response element when
no WADL response info is provided.
- Fixed Variant#equals(), VariantInfo#equals(),
AnnotationInfo#equals().
- Removed duplicate representations in WADL description and
representation with abstract media types.
- ServerResource#updateAllowedMethods() now clears the response
property before updating it. Caused troubles with the
WadlApplication discovery logic.
- Fixed potential NPE in ServerConnection#writeMessage.
Reported by Tim Kuntz.
- When selecting an annotated method, if the request has an
available entity, now the Java methods without an input
parameter are rejected.
- ConverterService don't return non concrete media types anymore.
- Fixed internal connectors in order to ensure that connections
are closed when the controller is shutdown.
- Fixed writing issue with JiBX extension.
Reported by Aleskandr Shekhter.
- Fixed character encoding issues in JAX-RS extension.
Reported by Alistair Dutton and Jeroen Goubert.
- Fixed GWT's ObjectRepresentation constructors for
serialization to not conflict with deserialization
constructors when a string is passed as parameter.
Reported by Alexander J. Perez Tchernov.
- InputRepresentation#getText() now closes the underlying stream.
Reported by David Fogel.
- Representation#exhaust() now closes the underlying stream
used. Reported by David Fogel.
- Enhancements
- Improved performance of the Reference#isValid(char) method.
Suggested by Guillaume Maillard.
- Added generics support in annotated resources, for example when
calling ClientResource#wrap.
Suggested by Valdis Rigdon who also contributed a unit test
and solution ideas.
- Misc
- Component#main() now accepts related XML configuration file
paths. Contributed by Alex Milowski.
- Updated jSSLutils to version 1.0.5.
- Clarified Javadocs of the WADL extension.
- Reduced max threads default value from "255" to "10".
Suggested by Tim Peierls.
- Improved precision of variants detection of annotated methods.
Positive impact on WADL descriptions.
- WadlApplication is now capable of describing more precisely
ServerResource subclasses and not just WadlServerResource ones.
Request and response representation variants are described.
- 2.0 Release Candidate 4 (2010-06-01)
- API changes
- Changed character oriented subclasses of OutputRepresentation
to extend WriterRepresentation instead for consistent character
set handling.
- StringRepresentation now derives from CharacterRepresentation.
- WriterRepresentation now uses HTTP's default character set when
no one is provided (ISO 8859-1).
- Added missing ServerResource#abort() method.
Reported by Tal Liron.
- Deprecated the GwtShellServletWrapper as the hosted mode has
been removed in GWT 2.0. Reported by Rob Heittman.
- Fixed design of the Engine class to allow custom subclasses to
be registered without systematically creating a new
EngineClassLoader. The classLoader and userClassLoader
properties are no longer static. A createClassLoader() method
was added as well as a static getResource(String) : URL one.
Reported by Bruno Harbulot.
- Deprecated WadlResource. Use WadlServerResource instead.
- Added get/setRouter methods and deprecated getSpringBeanRouter
in the SpringBeanFinder class. Reported by Thierry Templier.
- The status name is now returned to clients for display instead
of the description, in order to not expose internal information
by default for security reasons. Reported by Marc Knaup.
- Added the System property "org.restlet.engine.io.buffer.size"
that allows to set the buffer size for all instances of the
BufferedReader class.
- Bugs fixed
- Fixed character encoding issues (XStream, Jackson, JAXB, etc.)
- Adjusted Jackson configuration as it was automatically closing
the target stream/writer, not respecting the
Representation#write() contract.
- XStream detection of annotations was only working for JSON, not
for XML representations. Reported by George Calm.
- Conversion of empty entities to Form instances.
Reported by Jean-Baptiste Dusseaut.
- Fixed implementation of JaasVerifier to provide the User and
Roles principals to the JAAS Subject before login and to retrieve
the User if no one exist and a principal user classname is
provided. Contributed by Bruno Harbulot.
- Fixed bug preventing MessageBodyReader/Writer implementors
from being recognized as providers.
Contributed by Martin Krasser.
- Fixed constructor DigestAuthenticator(Context,String,String)
to properly take into account the "serverKey" parameter.
Reported by Yang Xudong.
- Fixed support of inherited annotated methods by ServerResource.
Reported by Kevin Pauli.
- Fixed potential NPE in HttpBasicHelper.
Reported by Myriam Leggieri
- Fixed potential NPE in SpringBeanFinder#getContext() and
Reported by Thierry Templier.
- Fixed HttpClient client connector for the Android extension.
- Fixed conversion bug with annotated methods returning void.
Reported by Pierre-Yves Ricau.
- Fixed bug in DigesterRepresentation#getText() not working as
expected. Reported by Bruno Harbulot.
- Fixed bug in OData extension when parsing complex properties.
Reported by Roger Heim.
- Fixed Generator class in OData extension when the service URI
is actually to be redirected.
- Fixed bug causing several starts of the HTTP client connector.
Reported by Matthew Drooker and Arun Kumar Sharma.
- Fixed instantiation of BufferedInputStream and
BufferedOutputStream using the constructor with size.
Reported by Matthew Drooker.
- Fixed optional Authenticator. Reported by Jean-Philippe Steinmetz.
- Misc
- Server connectors now display the port they are listening on
in their start message.
- Optimized by a factor 10, the speed of the getStream() method
in StringRepresentation, using a ByteArrayInputStream.
- Improved ServerResource and Finder Javadocs with lifecycle
information. Suggested by Alex Milowski.
- Added links from API packages to user guide (wiki).
Suggested by Alex Milowski.
- OData Generator now uses the current directory by default
if none is provided via arguments.
- 2.0 Release Candidate 3 (2010-04-23)
- API changes
- Replaced MemoryRealm#findRoles(Set<Group>, User) method by
findRoles(Set<Group>), findRoles(Group) and findRoles(User)
to clarify contract. Suggested by Brunon Harbulot.
- Added proxy configuration to the internal client connector
(necessary for the sip connector).
- Added "ftl" extension to MetadataService for FreeMarker
templates.
- Keeped few MediaType constants for the GWT edition in order
to reduce size.
- Bugs fixed
- Fixed support of parameters with the MediaType class. The
name contains the the main and sub types, plus the parameters.
Reported by Carsten Lohmann.
- Fixed generation of GET request sent by the internal
connector just after a request with an entity.
- Moved ServletUtils class introduced in RC2 into the
org.restlet.ext.servlet package.
- Fixed potential NPE with the Extractor.
Reported by Graham Smith.
- Fixed parsing of "nc" parameter and fixed potential endless
loop in HttpDigestHelper. Reported by Mark Drew.
- Fixed issues preventing multi-threaded usage of ClientResource
and dynamic client proxies.
- Fixed concurrency bug with annotated interfaces causing
405 errors (method not allowed). Reported by Antonio Fiestas.
- Fixed regression about the method filtering (ignore case).
Reported by Jean-Baptiste Dusseaut.
- Fixed bug in HttpDigestVerifier which didn't create the User
into the request's ClientInfo property.
Reported by Bruno Harbulot.
- Prevented threads to block when other requests's entities are
not consummed.
- Allowed to set entity headers even when conditions are not
fulfilled with GET and HEAD request.
Reported by Leigh Klotz.
- XStream annotations are now automatically detected.
Suggested by Dan Simpson.
- Fixed support of HTTPS by the internal client connector.
- Fixed support of conditions on non-GET methods.
- Fixed generation of ChallengeResponse instances for DIGEST
authentication scheme.
- Allowed Verifier to indicate that an identifier doesn't exist.
- Fixed internal connector for Android edition.
- Enhancements
- Added support of request#onSent and #onResponse callbacks for
the net and httpClient extensions.
- 2.0 Release Candidate 2 (2010-03-30)
- API changes
- Left an unspecified key stores 'null' to prevent troubles
with HTTP client connectors. Contributed by Bruno Harbulot.
- Deprecated the getters for the keystore-related attributes in
each connector. Lets these values be read from the
DefaultSslContextFactory (which is initialized with the same
attributes as the individual connectors were using).
Contributed by Bruno Harbulot.
- User and Role classes now implement java.security.Principal
interface. Removed UserPrincipal and RolePrincipal classes
from the JAAS extension. The JaasUtils#createSubject() now
also adds the ClientInfo#principals entries.
Suggested (in part) by Bruno Harbulot.
- Added ServletUtils class to the Servlet extension with two
methods to easily retrieve the Servlet request/response.
- Bugs fixed
- Fixed HeaderReader#addValues method.
Reported by Carsten Lohmann.
- Fixed the resolver hash model provided by the Freemarker
extension when underlying resolvers return TemplateModel
values and allowed access to Freemarker configuration shared
variables. Reported by sirthias.
- Fixed the StringWriter implementation for the GWT edition.
Reported by Kelly McLaughlin.
- Fixed potential bug with ATOM mappings (customizable feeds
feature). Reported by Thomas Conté.
- Fixed generation of HTML representations for WADL resources.
Reported by Carsten Lohmann.
- Fixed formatting of Date instances for the GWT edition.
Reported by Kelly McLaughlin.
- Fixed support of latin1 characters in credentials for
the HTTP_BASIC scheme.
- ResourceException caught by UniformResource where not setting
the response status properly, always using a 500 status code.
Reported by Tal Liron.
- Fixed issues with local conversions using RIAP for example.
Now, the object converters (default, JAXB, JiBX, XStream,
Jackson and GWT) know about to retrieve the wrapped local
object without serializing/deserializing it.
Reported by Valdis Rigdon.
- Fixed support of latin1 characters in writing headers.
- Internal client connector was always pipelining requests.
- Fixed support of generic types and arrays for the GWT edition.
- Fixed handling of Cookies. Reported by Rob Heittman.
- Fixed potential NPE in DimensionReader class.
Reported and contributed by Rob Heittman.
- Fixed parsing of multi valued "www-authenticate" headers.
- Fixed redirecting the internal server connector to file URIs.
- Misc
- Updated Simple framework library to version 4.1.20.
- 2.0 Release Candidate 1 (2010-03-15)
- API changes
- Added a Router#getMatchingMode(Restlet) method which returns
the default matching mode for the Router, except for target
that are instances of Directory or Router, where the
MODE_STARTS_WITH value is returned.
Reported by Rhett Sutphin and Masaki Sudo.
- Added Router#detach(Class) method.
Suggested by Martin Kubincanek.
- Added conveniency constructors to Atom classes.
- Added new Relation constants in the Atom extension.
- MediaType#getParent() now returns the same media type without
parameters if some parameters are present.
- Refactored Redirector. Renamed MODE_CLIENT_DISPATCHER into
MODE_SERVER_OUTBOUND and MODE_SERVER_DISPATCHER into
MODE_SERVER_INBOUND. Renamed redirectClientDispatcher() into
outboundServerRedirect(). Renamed redirectServerDispatcher()
into inboundServerRedirect(). Expose serverRedirect() method
as protected.
- Engine's BioUtils#write(InputStream, OutputStream) method was
renamed to copy(...).
- Removed all Client#get/post/put/... methods not present in
Restlet 1.1.
- Refactored XML extensions to share XPath evaluation logic.
Added XmlRepresentation#getInputSource() abstract method.
- Removed dependency from JAXB and JiBX extensions to the
XML extension. JaxbRepresentation and JibxRepresentation
aren't extending XmlRepresentation anymore due to the small
added value.
- Deprecated JaxbRepresentation#getSaxSource() method and added
the getJaxbSource() method instead.
- Deprecated JaxbRepresentation#getInputSource() and
JibxRepresentation#getInputSource() methods.
- Added TransformRepresentation#toSaxSource(),
transform(Source, Result) and write(Result) methods for
easier extension.
- Added default constructor to SaxRepresentation.
- Renamed org.restlet.ext.xml.NodeSet into NodeList as it is
really a List<Node> implementation.
- Deprecated the XmlRepresentation#evaluate(...) method,
using the get*(String) methods is easier.
- Deprecated the XmlRepresentation#putNamespace(...) method.
- Added an XmlRepresentation#setNamespaces(Map<String, String>)
method.
- CLAP scheme now supports a default authority corresponding to
the "class" authority for shorter URIs.
- Added LocalReference#createClapReference(int, Package) and
createClapReference(Package) static methods to help building
CLAP URIs.
- StatusService#getStatus(Throwable, Request, Response) doesn't
log an error anymore.
- Added a Transformer#canTransform(Representation) method to
prevent systematic transformation. Returns true by default.
- Deprecated JaxbRepresentation#getInputSource() method.
- Made JaxbRepresentation#getContext() method public.
- Deprecated JibxRepresentation#encoding property in favor of
the parent Variant#characterSet property.
- Added JacksonRepresentation#setObject(T) method.
- Renamed JsonRepresentation#indentSize into indentingSize.
- Deprecated JsonRepresentation#toJson*() method with logic
similar to equivalent getJson*() ones.
- Added new constructors for FreeMarker's TemplateRepresentation
using a default Configuration instance. Also added getter and
setter for the "template" variable.
- Renamed Jetty parameter "lowResourceMaxIdleTimeMs" into
"lowResourcesMaxIdleTimeMs".
- Added Expectation data class and Request#expectations property
to support "100-continue" headers to optimize sending of large
request entities.
- Renamed Variant#identifier property into "locationRef" to more
close match HTTP terminology.
- Added org.restlet.data.RecipientInfo class and property
Message#recipientsInfo, supporting the "Via" HTTP header.
- Enhancements
- UniformResource#doCatch now extract the cause exception from
caught ResourceException instance for easier debugging.
- The Request#abort() method is now supported by the Simple,
Grizzly, Netty, Jetty and the internal HTTP server.
Reported by Nicolas Rinaudo.
- Response#onSent callback now called by other HTTP server than
the internal one.
- Added BioUtils.delete(...) methods to delete files and
directories, recursively if needed, while working around
Windows file locking issues.
- Moved up the documentation on Resolver data model for Restlet
calls at the top of Javadocs. Suggested by Tal Liron.
- SSL session IDs are now provided as an attribute of requests.
The attribute name is "org.restlet.https.sslSessionId".
Suggested by Stefan Meissner and contributed by Bruno Harbulot.
- Added support of projections to the OData extension.
- Added support of server-paging to the OData extension.
- Added support of media link resources (blobs) to the OData
extension.
- Added support of row count to the OData extension.
- Added support of customizable feeds to the OData extension.
- Added support of generation and parsing of request/response
version header to the OData extension.
- Added support of service operations to the OData extension.
- Added support of SetLink method to the OData extension.
- Added support of NTML secured services to the OData extension.
- Bugs fixed
- Fixed compilation issue in the ClientResource class for the
GWT edition. Reported by Laszlo Megyer.
- Fixed internal client connector that removes the query part
of the target resource reference.
Reported by Laurent Rustuel.
- Fixed internal connector that was not setting properly the
ServerInfo. Reported by Laurent Rustuel.
- Fixed regression when tunnelling user agent properties.
Reported by Fabian Mandelbaum.
- The 0 value of the "TimeToLive" parameter for the client
connectors was badly taken into account when setting the
expiration date. Reported by Fabian Mandelbaum.
- 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.
- Updated MANIFEST.MF files to not declare the "Uses" fields
for the exported packages. Reported by Bryan Hunt.
- Fixed MediaType#toString(). Reported by Carsten Lohmann.
- WadlApplication wasn't exposing the default route of routers.
Reported by John Wismar.
- WadlApplication wasn't exposing the default route of routers.
Reported by John Wismar.
- Fixed usage of Component configured by XML inside servlet
containers. Reported by Zsolt Czinkos.
- Allowed Redirector to plug to another protocol.
Reported by Tal Liron.
- Fixed if-none-match conditions ("*" value).
- Fixed computation of the ServerResource#rootRef member.
Reported by Nirav Shah.
- Fixed bug using annotated interfaces declaring simply a "GET"
method in GWT client. Reported by Xavier Mehaut.
- Client HTTP connectors were not automatically resolving
relative URI references with a given base URI.
Reported by Rickard Oberg.
- Fixed conversion issue when using XstreamRepresentation and
similar classes in annotated methods' signature.
- Fixed Reference#decode and encode methods for the GWT edition.
Reported by Harald Pehl.
- Fixed potential threading issues on Message/Request/Response
regarding collections in asynchronous processing mode.
Based on feed-back from Tim Peierls.
- Fixed missing parsing of the "Accept-Ranges" header to
populate the ServerInfo#isAcceptingRanges() property.
- Misc
- Removed Representation#getDigester* methods. There is no
reason to favor this way to wrap a Representation.
- Updated db4o library to version 7.12.132.
- Updated Grizzly library to version 1.9.18i.
- Updated Spring framework library to version 3.0.1.
- Updated GWT library to version 2.0.3.
- Updated Jackson library to version 1.4.3.
- Updated Jettison library to version 1.2.
- Updated Jetty library to version 7.0.1.v20091125.
- Updated FreeMarker library to version 2.3.16.
- Updated JiBX library to version 1.2.2.
- Updated JUnit library to version 4.8.1.
- Updated Simple framework library to version 4.1.19.
- Updated SLF4J library to version 1.5.11.
- Updated Apache Commons Codec library to version 1.4.
- Updated Apache Commons Collections library to version 3.2.1.
- Updated Apache Commons DBCP library to version 1.3.
- Updated Apache Commons Lang library to version 2.5.
- Updated Apache Commons Pool library to version 1.5.
- Updated Apache HTTP Client library to version 4.0.1.
- Updated Apache HTTP MIME library to version 4.0.1.
- Updated Apache Lucene library to version 2.9.2.
- Updated Apache Solr library to version 1.4.0.
- Updated Apache Tika library to version 0.6.
- Updated Apache Velocity library to version 1.6.3.
- 2.0 Milestone 7 (2010-01-29)
- API changes
- Added more specific Validator#validatePresence and
validateFormat methods.
- Added Protocol#SIP and SIPS constants.
- Added Response#abort() and Request#abort() methods.
- Added Response#commit() and Request#commit(Response) methods
to support provisional responses and asynchronous replies.
- Added Response#autoCommitting and committed boolean
properties for asynchronous processing of responses.
- Added Status#isGlobalError() methods for 6xx range
(SIP protocol).
- Removed "onContinue" property on Message introduced in
2.0 M6 until real use cases are identified.
- Added Protocol#technicalName property to indicate the actual
name used on the wire, such as "HTTP" for Protocol#HTTPS.
- Added Request#maxForwards property mapping to the HTTP header
"Max-Forwards".
- Renamed Context#verifier and enroler to defaultVerifier and
defaultEnroler.
- Added lifecycle support to Realm and Component#realms.
- Refactored Component with an extensible "services" property
and added a new ServiceList class for factorization purpose.
- Moved Response#onReceived to Request#onResponse.
- Added protocol helpers that registers protocols's methods.
- Added MediaType.APPLICATION_XMI_XML constant and "xmi" extension
into MetadataService.
- Client preferences were not taken into account with annotated
methods returning beans with multiple variants available.
- Added new Server(Protocol) constructor.
- Renamed Application#findRole(String) into getRole(String).
- Renamed Component#findRealm(String) into getRealm(String).
- Renamed Extractor#extract*() into extractFrom*().
- Component#main() now expects a full URI reference instead of
a local file path for more flexibility (CLAP and HTTP URIs).
- Removed the Simple, Jetty, Netty extensions from the Java EE
edition of Restlet.
- Renamed ServletAdapter#target property into "next".
- Enhancements
- Added a new Jackson extension, with transparent conversion
between JSON representations and objects.
Suggested by Tal Liron.
- Adjusted scoring in DefaultConverter for Form objects and
in XstreamConverter for objects with unspecified target
media type.
- ServerResource now rejects unconvertible parameters with
a 415 status.
- ServerResource now supports empty POST and PUT requests.
- Added converter of FreeMarker Template objects in the
FreeMarker extension.
- Added converter of Velocity Template objects in the
Velocity extension.
- Added converter of Graph objects in the RDF extension.
- Added converter of Syndfeed objects in the ROME extension.
- Added converter for the JiBX extension.
- Added converter for Message objects to representations in the
JavaMail extension.
- Added converter for WebRowSet, JdbcResult, ResultSet objects
to representations in the JDBC extension.
- Added support of the Data Services extension in Android.
- Added Restlet object serialization for the GWT edition,
leveraging GWT's deferred binding mechanism and GWT-RPC
serialization format.
- Added a context's attribute to requests coming from the
Servlet extension: "org.restlet.ext.servlet.offsetPath".
Proposed by Carsten Lohmann.
- Added support for additional marshalling properties to the
JAXB extension.
- Added support of Chrome browser when tunneling with user
agent. Suggested by Jonathan Hall.
- Added support connection timeout for Apache HTTP client.
Contributed by Sanjay Acharya.
- Replaced the default HTTP connectors (StreamClientHelper
and StreamServerHelper) with a new implementation supporting
persistent connections, provisional responses (1xx status),
asynchronous request and response handling (via the
Response#commit(), Request#onReceived() and Message#on*()
callback methods). Significant feed-back from NetDev and
especially John Logdson.
- Improved routing log by also displaying the next Restlet
of the selected route in addition to the URI template.
Suggested by John Logdson.
- Implemented Request#toString() and Response#toString() to
display something similar to HTTP request and status lines.
Suggested by John Logdson.
- In the default access logs, the identifier of the user
attempting to authenticate is now logged.
Suggested by John Logdson.
- VirtualHost#serverPort is now matched against the request's
protocol default port if the ServerInfo#port value is
unspecified (-1).
- Dynamic client proxies created from ClientResource#wrap(Class)
or create(Class) or getChild(Class) or getParent(Class)
methods now automatically implement the ClientProxy interface
and can therefore retrieve the underlying ClientResource
instance if needed. Based on feed-back from John Logdson.
- Added support of requests pipelining.
- Added Service#context property.
- Added Component(String) constructor for XML configuration.
- Completed XML configuration XSD scheme to match more of Restlet API.
- Added LogService#logPropertiesRef to easily read log properties from
a URI at start time.
- Added setDefaultAttachment() method to SpringHost and SpringRouter.
- Updated component configuration parsing logic.
- Bugs fixed
- Fixed issue in DomRepresentation with createTransformer()
method. Fix contributed by Remi Dewitte.
- Validator#validate() method was protected instead of public.
Reported by Ben R. Vesco.
- Fixed issue in Validator causing an error when a non
required attribute is not found.
Reported by Laurent Rustuel.
- Fixed NPE when parsing "Date" header in the GWT edition.
- Fixed issue with automatic setting of 204 when no entity
was available and the status was 200. The logic has been
moved from the HTTP server connectors to the ServerResource.
Reported by Bruno Harbulot.
- Relaxed tunneling of user agent string.
Reported by Erick Fleming and Fabian Mandelbaum.
- Fixed potential infinite loop when getting the Engine
instance.
- Fixed RepresentationContext#getCharacterEncoding method in
the fileupload which did not return the character set.
Reported by Carsten Lohmann.
- Fixed potential NPE in engine's LogFilter class.
Reported by Jeff Ramsdale.
- Fixed potential BufferOverflowException in
NbChannelOutputStream.
Reported by David Fogel and Iestyn Evans.
- Fixed internal client connector which didn't refresh entity
properties from headers values.
Reported by Taylor Cowan.
- Allowed to set the DATE header.
- Fixed support of chunked response in the Netty connector.
Reported by Laurent Rustuel.
- Removed ServletLogger adapter for the GAE edition due to the
fact that the Logger class cannot be inherited.
Reported by Cedric Hurst.
- Misc
- Updated Simple framework library to version 4.1.17.
- Deprecated Message#getEntityAs* methods.
- Updated GWT library to version 2.0.
- Updated WADL extension according to new WADL specification.
- Improved thread safety of MapVerifier.
Reported by Tim Peierls.
- Updated Apache HTTP Client to version 4.0.1.
- 2.0 Milestone 6 (2009-11-20)
- API changes
- Renamed ChallengeScheme#HTTP_MS_SHAREDKEY into
HTTP_AZURE_SHAREDKEY and HTTP_MS_SHAREDKEY_LITE into
HTTP_AZURE_SHAREDKEY_LITE.
- DataServices.Session#getMetadata() now returns on Object
to prevent link to internal class.
- Upgraded the "org.restlet.ext.httpclient" extension to
leverage Apache HTTP Client 4.0. WARNING: some parameters
were renamed due to API changes.
- Refactored for simplification the security API introduced
in previous Restlet 2.0 milestones.
- The Organization class was removed and its "rootGroups"
and "users" properties were moved to MemoryRealm.
- The Permission class was removed as it isn't necessarily
the best way to enforce fine grained authorization.
- The RealmService class was removed and the "realms"
property moved to Component.
- The ClientInfo#subject property was replaced by
"user : User", "roles : List<Role>" and "principals" to
remove the JAAS dependency.
- A new JAAS extension was added, where the JaasVerifier,
DefaultCallbackHandler, UserPrincipal and RolePrincipal
classes where moved.
- Verifier now uses ClientInfo as parameter instead of
Subject.
- Added a "name" property to Realm and a findRealm(name)
to Component.
- Added JaasUtils class with a createSubject(ClientInfo)
static method. Suggested by Rickard Oberg.
- Enroler and Verifier are now interfaces.
Suggested by Rickard Oberg.
- Added new Digest#ALGORITHM_HTTP_DIGEST constant for A1
field as specified in RFC 2617.
- Renamed HttpDigestAuthenticator into a more generic
DigestAuthenticator.
- Made the HTTP DIGEST work again on the server-side, via
DigestAuthenticator. Issue reported by Carsten Lohmann.
- Refactored engine's AuthenticatorHelper to facilitate the
support of alternative server-side schemes such as S3.
- Renamed RestletSolrQueryRequest to SolrRestletQueryRequest.
- Renamed RestletSolrParams to SolrRestletParams.
- Renamed Application#getRole() into findRole().
- Added "next" property to Server and deprecated "target" for
more naming consistency with filters.
- Added conveniency constructors to Server.
- ResourceException is now a RuntimeException to facilitate its
usage with dynamic proxies created by ClientResource#create()
static methods and wrap() methods.
- UniformResource#doCatch() now logs throwable with different
levels depending on the type of errors.
- Added additional methods like post(Object, MediaType) that
return a Representation to ClientResource.
- The Router class now has those default values:
- "defaultMatchingMode" : MODE_EQUALS instead of STARTS_WITH
- "defaultMatchQuery" : false
- "routingMode" : FIRST instead of BEST
Note that for easier configuration, the router detects the
attachment of Directory instances and automatically uses a
MODE_START_WITH mode in this case.
- Added "org.restlet.ext.crypto" extension including many digest
related features such as Amazon S3 and Azure client HTTP
authentication. This removes the dependency from the Restlet
core to javax.crypto.
- Improved the Resolver class to expose call attributes as
objects instead of string for easier integration with template
engines such as FreeMarker.
- Moved the OAuth extension to the incubator as it needs to go
through a complete redesign with proper documentation.
- Renamed routing mode constants of Router to follow the
MODE_*_MATCH pattern such as MODE_BEST_MATCH instead of BEST.
Deprecated older values. Suggested by Arjohn Kampman.
- Added asynchronous support in the Restlet API for all editions.
New "onContinue" and "onSent" callback properties added to the
Message class. New "onReceived" callback property added to the
Response class. Exposed those properties in the ClientResource
and ServerResource classes. Added asynchronous methods to the
Client class like the GWT edition already had.
- Refactored the GWT edition to be more inline with the other
editions. Especially, we ported the ClientResource class.
- Added ClientInfo#from property corresponding to the "From" HTTP
header.
- Added Response#age and #retryAfter properties corresponding to
the "Age" and "Retry-After" HTTP headers.
- Added Message#date property corresponding to the "Date" HTTP
header. Suggested by Carlos Alexandre Moscoso.
- Added org.restlet.data.Warning class and Message#warnings
property corresponding to the "Warning" HTTP header.
- Added HTTP warning status codes to the Status class.
- Added org.restlet.data.CacheDirective class and
Message#cacheDirectives property corresponding to the
"Cache-Control" HTTP header.
- Added support of CacheControl header.
- Properly exposed HTTP Digest properties in the
ChallengeRequest and ChallengeResponse classes. Added a
parent ChallengeMessage class.
- Added org.restlet.data.AuthenticationInfo class to support
preemptive HTTP DIGEST authentication.
Initially contributed by Kelly McLaughlin.
- Added support of the If-Range header.
- Translated the packages of the gwt edition from
org.restlet.* to org.restlet.gwt.*.
- Bugs fixed
- Fixed bug when the deprecated method "createRoot" is
implemented instead of the "createInboundRoot".
Reported by Fabian Mandelbaum.
- ServerResource#getVariants() now returns an empty list
instead of null when no annotation is present.
Reported by Tal Liron.
- Annotated methods returning a String, a StringRepresentation
or a Reader were only exposing a "text/plain" variant even
though most other media types are acceptable like JSON, XML.
- Fixed bug in ServerResource when content negotiation was
disabled, all non standard methods where invoking the OPTIONS
method.
- Fixed ClientResource to throw ResourceException upon error
as specified in Javadocs. Reported by Patrick Logan.
- ClientResource was not checking the "followRedirects"
property.
- Fixed bug when sending entities with the GWT edition.
- Fixed bug when normalizing References with the GWT edition.
Reported by Guido Schmidt.
- Fixed OSGi dependency issue with the JAX-RS extension.
Reported by Stefan Maassen.
- The rootRef attribute of a request was not set when handled by the
Component's internal router.
Reported by Emily Toop.
- Fixed bug with conditional methods in ServerResource when no
variant is available.
- ServerServlet life cycle is now correctly propagated to the
embedded Restlet component and applications.
Reported by Rickard Oberg.
- Fixed issue with OSGi bootstrap that failed to register the
converters. Reported by Adam Harrison.
- Fixed NPE in ChallengeCallbackHandler when challenge response
is null. Reported by Georges-Etienne Legendre.
- Fixed NPE in the dataservices extension due to bad parsing of
referential constraints.
- Fixed potential exceptions raised when an XML document is
parsed using the default characterset instead of the parsed
document's one.
- Fixed bug that prevents the SimpleWeb server connector to
retrieve the values of identical headers in the request.
Reported by Arjohn Kampman.
- Fixed update of entities in the dataservices extension, due
to the generation of a wrong entity.
Reported by Simon Guest.
- Fixed issues with SSL test cases.
Contributed by Bruno Harbulot.
- Fixed bug with the setIdent method of class DomRepresentation.
- Fixed manifest files varying by editions.
Reported by Thierry Templier.
- Fixed bug in OSGi activator causing default converters not to
be registered. Reported by Bryan Hunt.
- Fixed SpringBeanRouter and SpringBeanFinder to ensure that the
context is available in the target resources.
Reported by Dustin Jenkins.
- Fixed ClassCastException in the
Series#getValuesArray(String, boolean) method.
Reported by Arjohn Kampman.
- Updated SpringFinder Javadocs to mention the need to use
create() as a lookup-method instead of createResource().
Reported by Kevin Pauli.
- Enhancements
- Improved JAXB converter. Contributed by Sanjay Acharya.
- Added library jcip-annotations 1.0.
- ServerSevlet now automatically supports the declaration of
several adapters in the same web.xml. Reworked the Javadocs
to encourage usage of Servlet init parameters instead of
context parameters.
- Refactored connector extensions to move implementation
classes in "internal" packages hidden from the Javadocs.
- The default status page and directory listings are now using
a sans-serif font.
- Add support for annotations values separated by a ":" and "|"
characters. Suggested by Bob Resendes.
- Added Netty extension containing an HTTP server connector
based on this NIO client/server framework developed at JBoss.
Contributed by Gabriel Ciuloaica.
- Added support for result set paging in JDBC client connector.
Contributed by Warren Janssens.
- Restlet#name property now uses toString() as a default value
and Filter uses this property in its log traces.
- Improved Context#getLogger() to cover cases where the class's
canonical name is empty like for anonymous classes.
- The FreeMarker TemplateFilter is now more flexible with a
createDataModel(Request, Response) method that can be
overridden and a "dataModel" property with getter and setter.
- Life cycle events are now propagated in all the Restlet
routing system (filters, routers, virtual hosts, etc.).
Suggested by David Fogel
- Added a LoggerFacade class and a related property on the
Engine to allow the replacement of the default JULI logging
mechanism.
- Added an SLF4J extension with a LoggerFacade for the Restlet
Engine providing an optimal bridge to SLF4J.
- Added HTTP/HTTPS proxy configuration support to the Apache
HTTP Client 4.0 extension. Contributed by Bruno Harbulot.
- Added the Net client extension to the Android edition
(without the FTP connector though).
- Response with a 200 (success, ok) status and no content now
log a fine trace instead of a warning and automatically
change the status to 204 (success, no content).
- Added support of the Warning header.
- Added support of the ranges in the GWT edition.
- Added support of the Authentication-Info header.
- Added support of "inline" disposition type in the
Content-Disposition header. This is based on the value of the
"downloadable" attribute of the Representation class.
Proposed by Paul Austin.
- Added support of automatic redirections by instances of
ClientResource for unsafe methods.
- Misc
- Added Velocity template in the org.restlet.example project.
Reported by Ben Vesco.
- Updated Apache Commons Logging to version 1.1.1.
- Updated Simple framework library to version 4.1.15.
- Updated GWT to version 1.7.1.
- Updated Jetty to version 7.0.0.
- 2.0 Milestone 5 (2009-09-28)
- API changes
- Moved Message, Request and Response classes from the
org.restlet.data to the org.restlet package as they are
core artifacts of the API used in Uniform interface.
- Deprecated Redirector.MODE_DISPATCHER to introduce support
for MODE_CLIENT_DISPATCHER and MODE_SERVER_DISPATCHER.
- ServerResource#getPreferredVariant() is now protected.
- Moved Template and Variable classes from "org.restlet.util"
to "org.restlet.routing" package.
- Moved Restlet#handle(Request) method to Client class.
- Added "inboundRoot" and "outboundRoot" properties to
Application and deprecated the "root" property and the
createRoot() method. The outbound root, is the hook for
client-side routing and points by default to the context's
client dispatcher, but can be changed by the user to do
custom routing/filtering. New createInboundRoot() and
createOutboundRoot() methods can be overriden.
- The ServerResource#getVariants() method now returns a
modifiable list of variants instead of a map.
- Refactored the ServerResource class so that annotated methods
are invoked through the regular get(), get(Variant), post(),
post(Variant) methods instead of using a separate call path.
- ServerResource now has protected getConverterService() and
getMetadataService() methods.
- Bugs fixed
- Added Simple extension to the JEE edition.
Reported by Dustin Jenkins.
- Fixed bug detected in the CharacterSet class when running in
the MacOS context. Reported by John Logsdon.
- Removed the TaskService from the GAE edition as we are not
allowed to create threads. Reported by Olivier Bruchez.
- Fixed POM dependencies groupId. Reported by Remi Dewitte.
- 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.
- Fixed potential synchronization issues.
- Fixed concurrency issue with annotated methods that could
result in wrong methods invoked. Reported by John Logsdon.
Isolation of issue by Filip Hanik from the Tomcat team.
- Improved robustness of internal HTTPS client with trust
stores. Suggested by Bruno Harbulot.
- Fixed bug that would prevent the GWT callback from being
called if some exception occured.
- Fixed integration issue with Tomcat due to the GC releasing
Restlet representations, indirectly closing the underlying
Tomcat buffer which could have been reused for another
request, causing unexpected socket reading issues.
Initially reported by Denys Hryvastov.
- Fixed issues preventing SpringFinder and SpringBeanFinder
from working correctly with ServerResource subclasses.
Reported by Evgeny Shepelyuk with contributions to the
solution by Rhett Sutphin.
- Fixed bug in CopyOnWriteArrayList emulation class causing
the Client helper to not being created in compiled mode.
Reported by Guido Schmidt.
- Added NPE check in ServerResource in getAvailableVariants().
Reported by Bob Resendes.
- Added NPE check in MapVerifier.getSecret().
Reported by Carsten Lohmann.
- Added test to prevent class cast exception in Variant#equals.
Reported by Patrick Logan.
- Fixed GAE compilation issue in ByteUtils.getStream() method.
Contribution by Marcelo Ochoa.
- Fixed issue with redirections in first resource example.
Reported by Philippe Mougin.
- Fixed issues with response.getEntity().getText() in the GWT edition.
Reported by Guido Schmidt.
- Enhancements
- Added support of the "xml:base" attibute when parsing Atom
Publishing documents.
- Updated Grizzly to version 1.9.18b.
- 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 Lucene to version 2.4.1.
- Updated Tika to version 0.4.
- Updated OAuth library to version from 2009/06/17.
- Updated Velocity to version 1.6.2.
- Updated JiBX to version 1.2.1.
- Updated db4o to version 7.10.96.
- Updated Jetty to version 7.0 RC6. Upgraded the Jetty
extension: replaced "headerBufferSize" parameter by
"requestHeaderSize" and "responseHeaderSize" parameters.
Removed "lowThreads" parameter no longer available.
- Updated the Javadocs of the API to indicate the mapping
between properties/classes and HTTP headers.
- Updated the "Server" HTTP header returned by default to
"Restlet-Framework/xxx"
- The thread pool of Jetty servers can now be configured
with Spring. Reported by Evgeny Shepelyuk.
- Added support for the "xsl" extension in MetadataService.
Fixed potential NPE. Contributed by Fabian Mandelbaum.
- Added JAXB converter helper. Contributed by Sanjay Acharya.
- The ConverterService now passes a preferred variant to the
selected converter helper when no one is provided by the
client. Reported by John Logsdon.
- Added extension "dataservices" which is a client extension
of the ADO.NET Data Services technology provided by
Microsoft.
- 2.0 Milestone 4 (2009-08-06)
- Bugs fixed
- Improved support for the RFC 3339 date format which was
limited due to SimpleDateFormat. Added InternetDateFormat.
Based on a contribution from Frank Hellwig.
- Fixed bug in date format generated by Atom feeds.
- The internal HTTP server now shuts down gracefully.
- Added a "gracefulShutdown" parameter on the Jetty connector.
Suggested by Arjohn Kampman.
- Registration of HTTP and JavaMail clients was missing in the
GAE edition. Reported by MyloC.
- XStreamRepresentation didn't register JettisonMappedXmlDriver
correctly. Necessary for proper deserialization.
Reported by Gabriel Ciuloaica.
- Fixed and completed SecretDigestVerifier class.
Reported by Thomas Cozien.
- Returned error status when a client sends a request although
no client connector supporting this request's protocol is
registered. Reported by Avi Flax.
- Fixed bug in Template class when the pattern is updated.
- Fixed regression with Directory causing a 405 status to be
returned for conditional GETs. Reported by Serge Ilyn.
- Fixed issue with parsing of AWS authentication HTTP headers.
Reported by Stuart MacKay.
- Fixed infinite loop when instantiating a Form with a query
in the GWT extension. Reported by Olivier Monaco.
- Fixed issue with annotated method returning a representation
and whose metadata where ignored (always returning the
"octet/stream" media type for example).
Reported by Fabian Mandelbaum, David Fogel.
- Added implementation of the "exhaust" method in
DigesterRepresentation class.
- Added default DomRepresentation constructor.
- Form now accepts extra "&" characters in query strings.
Reported by Andrew Moore.
- Fixed encoding and decoding of LocalReference#normalizePath()
and localizePath() methods. Contributed by Bruno Harbulot.
- Fixed potential NPE in ServerResource and AnnotationUtils.
Reported by Schley Andrew Kutz.
- Fixed OSGi imports for org.restlet.ext.xml.
Reported by Nicolas Janicaud.
- Fixed potential NPE in ComponentHelper#checkVirtualHost.
Reported by Matt J. Watson.
- Fixed bug in XstreamRepresentation failing to use the DOM
XML driver. Reported by Florian Georg.
- Fixed bug in converter helper selection algorithms.
Reported by John Logsdon.
- Fixed bug causing subsequent requests to annotated
ServerResource subclasses to be forbidden.
Reported by John Logsdon.
- Fixed issue with Macintosh character set. Java returns it as
MACROMAN, while IANA only accepts MAC or MACINTOSH. Added
translation logic to CharacterSet class.
Reported by Bruce Cooper.
- Fixed bug in ClientResource#options() method not issuing an
OPTIONS HTTP request. Reported by Bob Resendes.
- Fixed issues in Xstream converter with primitive types.
- HTTP response where returning duplicate media type
parameters. Reported by Evgeny Shepelyuk.
- Added Status#isRecoverableError() method.
- Added "retryOnError", "retryDelay" and "retryAttempts"
properties on ClientResource to try to recover from some
communication errors.
- ServerResource now rejects unknown entities with a 415
status. Suggested by Sylvain Pajaud.
- Fixed bug with annotated methods returning a representation.
Metadata were always overridden. Reported by Joe Nellis.
- The "Location" header must contain an absolute URI.
Reported by Simon Reinhardt.
- Enhancements
- Upgraded Jetty library to version 6.1.18.
- SpringServerServlet nows gets its component fully configured,
with a default WAR client and parameters copied.
Reported by Dustin N. Jenkins.
- Added Variable.URI_QUERY_PARAM type to match query parameter
names or values. Suggested by John Wismar.
- ServerServlet nows copies the ServletContext into a special
"org.restlet.ext.servlet.ServletContext" attribute of both
the Component's context and the Application's context.
- Added logging capabilities to the Router classes via a new
protected log(Route) method.
- Directory listings now correctly display a trailing slash for
directories. Suggested by Aron Roberts.
- Load only once the accept.properties file used by the
TunnelFilter instance.
- Load only once the agent.properties file used to populate
ClientInfo instances.
- SpringFinder and SpringBeanFinder now support the creation of
resources based on ServerResource.
- SpringRouter and SpringBeanRouter now support the creation of
resources based on ServerResource.
- Refactored content negotiation to take into account all
dimensions (language, media type, character set and encoding).
- Improved metadata handling for local entities (files, zip,
clap, etc.).
- Added Variant#includes() method.
- Significantly improved converter service implementation. Now
converter helpers support affinity scoring.
- HTTPS connectors now reuses the keystore password as the key
password if no specific one is defined. Supports keystore
default behavior.
- Added FTP client connector based on JDK's URLConnection in
our existing "org.restlet.ext.net" extension. This connector
supports login/password setting via ChallengeResponse and the
new ChallengeScheme.FTP_PLAIN. This connector is only capable
to handling GET methods.
- Added RdfClientResource that can easily navigate the Web of
data. Can follow linked resources and linked literals.
- Added support of inline content for link tags.
- Added getStatus(Throwable, UniformResource) method to
StatusService. Suggested by John Logdson.
- Added doCatch(Throwable) method to UniformResource.
Suggested by Schley Andrew Kutz.
- Added CharacterSet#WINDOWS_1252, MACINTOSH and many
ISO_8859_* constants.
- Added new extensions to MetadataService:
- "ascii" for CharacterSet#US_ASCII)
- "latin1" for CharacterSet#ISO_8858_1
- "mac" for CharacterSet#MACINTOSH
- "utf8" for CharacterSet#UTF_8
- "utf16" for CharacterSet#UTF_16
- "win" for CharacterSet#WINDOWS_1252
- Added converter selection traces. Suggested by John Logdson.
- Communication error from HTTP clients are now logged at the
FINE level instead of WARNING.
- The JAX-RS extension now works on Google App Engine.
Fixes contributed by Martin Krasser.
- Added doHandle(Restlet next, Request, Response) method on the
Router class that can be overriden to do some processing that
is common to any route selected. Suggested by John Logdson.
- Fixed behaviour of ServerResource. When non existing a 404
status should be returned for safe method.
Reported by Robert Hyerle.
- The internal HTTP server now looks up system properties for
SSL configuration as a fall-back.
- The engine now catches all exceptions and even throwables
(suggested by Marcelo Paternostro) that occur when trying to
register helpers.
- UniformResource#doCatch now logs at INFO level all exceptions
and errors caught.
- The JAX-RS extension now leverages the new ConverterService.
For example you can now leverage the converter of the XStream
extension for better serialization to JSON than the existing
JSON provider based on the more limited JSON.org library.
Reported by Juergen Zimmermann.
- Added extension based on ROME library to support several
versions of syndication feed formats RSS and Atom.
Contributed by Tal Liron.
- Fully automated the port of Restlet to each edition (GAE,
GWT, Android, JSE and JEE). Using a custom Restlet Forge
mechanism. Conditional compilation mechanism suggested by
Philippe Mougin.
- Breaking changes
- The default language, defined in MetadataService is now based
on the JVM's default locale, instead of English/US.
- API changes
- Added client and server RIAP connectors.
Suggested by John Logsdon and Nirav Shah.
- Added ClientInfo#getPreferredLanguage(),
getPreferredMediaType(), etc. methods.
Suggested by Jonathan Hall.
- Uniform has been trimmed to a single handle(Request, Response)
method and converted to an interface. The other methods have
been moved to the Client class. The handle(Request) method
has been moved to the Restlet class.
- Context#clientDispatcher and serverDispatcher properties are
now instances of Client instead of Uniform.
- Removed the UniformGuard and ChallengeGuard classes. We now
recommend to directly use Authenticator and Authorizer.
- Added simpler TemplateRoute, Extractor and Validator filters
as an alternative to the single Route class.
- Deprecated Route in favor of parent and lighter TemplateRoute
class. In Restlet 2.1, we will reintroduce Route as an
abstract parent of TemplateRoute.
- Renamed SecretDigestVerifier into DigestVerifier.
- Restricted the role of Metadata class to metadata about
representations for conneg.
- Added protected authenticated() and unauthenticated() methods
on Authenticator.
- Added protected authorized() and unauthorized() methods
on Authorizer.
- Added Authorizer#AUTHENTICATED constant to authorize only
authenticated requests.
- Deprecated Request#setChallengeRequest().
Use getChallengeRequests() instead.
- Added Metadata#getParent() method.
- Added Metadata#isCompatible() method.
- Added Metadata#includes() method.
- Added better Variant#toString() implementation.
- Added MetadataService#defaultCharacterSet property.
- Added Conneg class in the engine to support content
negotiation in a more maintenable way, and to support all
dimensions (character sets, encodings, languages and media
types). Suggested by Alexander Horn, Maxence Bernard and
David Fogel.
- Implemented Variant#equals() method and improved the
implementation of isCompatible() method.
- Moved static methods of LinkReference to Link. Removed the
LinkReference class.
- Added ClientResource#getParent() to return the parent
resource based on the URI hierarchy.
- Added org.restlet.util.Couple and Triple generic classes to
store two or three related objects.
Inspired by Tim Peierls's Relation interface idea.
- Made Application#getService(Class<T>) public.
Suggested by Remi Dewitte.
- Marked Restlet class as abstract.
- Moved "name", "description", "owner" and "author" properties
from Application to Restlet.
- Misc
- Exceptions thrown in the internal HTTP client are not logged
with a FINE level instead of a WARNING level.
- Upgraded Simple to version 4.1.13 which now supports
programmatic shutdown. Contributed by Niall Gallagher.
- Updated GWT to version 1.7.0.
- 2.0 Milestone 3 (2009-05-27)
- Breaking changes
- Deprecated ServletConverter and added an equivalent
ServletAdapter class to prevent confusion with the
ConverterService reintroduced in Restlet 1.2.
- Moved all XML, DOM, SAX and XSLT related classes from the core
Restlet API to a new "org.restlet.ext.xml" package. This was
need to keep a uniform API with the new Android port.
- Bugs fixed
- Fixed bug with a ServerResource when an annotated method does
not return a value.
- Fixed dependency issue in the org.restlet.example.pom.
Reported by Marcelo Ochoa.
- ServerServlet ignores client connectors that are now available.
- Fixed issue with annotation inheritance.
Contributed by Tal Liron.
- Fixed bug causing Engine to be instantiated several time.
Reported by David Fogel.
- Fixed potential issue in Engine classloading logic which used
Class.class instead of Engine.class to get the class's
classloader. Reported by David Fogel.
- Fixed conversion issues with edge cases.
- MediaType#isCompatible() now requires the other mediatype to be
non null.
- Fixed issues with conditional method in ServerResource.
Reported by Tal Liron and David Fogel.
- Fixed issues with ServerResource used in OSGi environments.
Reported by David Fogel and fixed by Tim Peierls.
- Fixed NPE with SpringFinder. Reported by Eric Hough.
- Fixed potential NPE. Contribution from Remi Dewitte.
- Fixed issue with the Authenticator class.
Reported by Remi Dewitte.
- SpringServerServlet now don't directly instantiate a
ServletContextAdapter. Reported by Mikhail Spirydonau.
- Fixed Maven build issue with resource files.
Contributed by Remi Dewitte.
- Fixed potential bug when a serverResource handle several
representations with methods that return String objects.
- Fixed potential bug with WriterRepresentation when character
set is not defined.
- Fixed bug in Finder with ServerResource causing some NPE
in some cases. Reported by Michael Berman.
- Fixed some Maven artifact IDs (Atom, XML and FileUpload
extensions). Reported by Jean-Yves Cronier and Remi Dewitte.
- Fixed potential NPE in XmlRepresentation with namespaces.
- Fixed Atom extension for better AtomPub 1.0 compliance.
Reported by Thom Nelson.
- Fixed MediaType for proper parsing of parameters.
Reported by David Bordoley.
- Enhancements
- Servlet's UserPrincipal is now transferred into Restlet's
ClientInfo#subject property. Suggested by Paul Davis.
- Updated Media type RDF N3 from "text/rdf+n3" to "text/n3".
Suggested by Simon Reinhardt.
- Added support of the parsing and writing of RDF documents
expressed in N-Triples notation.
- Added support of the parsing and writing of RDF documents
expressed in Turtle notation.
- Added an initial port of Restlet to the new Google App Engine.
Suggested by Didier Girard.
- Added a ContextTemplateLoader to FreeMarker extension to load
template based on the client dispatcher and a base URI.
- Added new extension based on XStream library to automatically
convert Java objects to/from XML and JSON.
- Added converter helper to the "org.restlet.ext.json" extension.
Useful for the ConverterService.
- Added ObjectRepresentation classes to both the Restlet/GWT
edition and to the server-side GWT extension. This class can
(de-)serialize POJOs using the JSON-based encoding used by
GWT-RPC.
- Added content-length header (with 0 value), in case the
entity is not available when posting or putting since MS
Azure requires this header for any request. Reported by
Ronny Kwon.
- Improved implementation of converter plugins (default/internal,
Atom extension and GWT server-side extension).
- Added MediaType#APPLICATION_JAVA_OBJECT_XML constant.
- Added support for automatic conversion between serializable
JavaBeans and Representations using either binary Java Object
Serialization or JavaBeans XML encoding.
- Added conversion support for forms.
- Interfaces implemented by server resource classes are now
introspected for annotations.
- Added ClientResource#create(...) and wrap() methods to create
dynamic proxies implementing a given interface.
- Added Series#getValuesArray() with a flag to ignore case.
Suggested by Arjohn Kampman.
- Added a port of Restlet core to Android 1.5 (mobile OS) and to
Google AppEngine 1.2.
- The Net HTTP client connector now supports SSLContextFactories
Contributed by Bruno Harbulot.
- Added check for JAXP parsers not supporting XInclude feature.
Reported by Mikis.
- Optimized MetadataService#addCommonExtensions() to prevent
multiple array copies. Reported by David Fogel.
- XmlRepresentation#getNamespaces() is now protected.
Suggested by Remi Dewitte.
- Refactored the class loading code in the engine.
Suggested by David Fogel.
- Tag#weak internal field is now final.
Suggested by Arjohn Kampman
- Added provider for JAX-RS based on the new ConverterService.
This allow pluggable support for converters such as JSON or
XStream.
- API changes
- RepresentationInfo is now concrete and has more constructors.
Suggested by Lars Heuer.
- UniformResource#init() now throws ResourceException and
catches it to update the response. Suggested by Lars Heuer.
- Renamed UniformResource#init() into doInit().
- Renamed UniformResource#destroy() into release().
- Added an UniformResource#doRelease() method.
- ClientResource now overrides finalize() to call the release()
method.
- Connector#isAvailable() method added to test the presence
of the underlying connector helper.
- Removed Context#setRealm() to prevent potential threading
issues. Reported by Tim Peierls.
- Added new constructors to Representation based on the parent
RepresentationInfo class. Suggested by Remi Dewitte.
- Added FileRepresentation#autoDelete property. Contributed by
Remi Dewitte.
- Added intercepter methods to ServerServlet needed for the
XDB extension. Contributed by Marcelo Ochoa.
- Added a "form" extension mapping in MetadataService for the
media type "application/www-form-urlencoded".
Suggested by Tal Liron.
- The class EmptyRepresentation is now public and the static
method Representation#createEmpty() has been deprecated.
- Moved several implementation classes of the Servlet extension
into an "org.restlet.ext.servlet.internal" package to hide
them from the public Javadocs as they should rarely be used
directly by end users.
- Renamed ServerResource#exists property to "existing".
Suggested by Lars Heuer.
- Filter#setNext() now accepts ServerResource subclasses.
Suggested by Lars Heuer.
- Added Method#safe and idempotent properties.
- Added ClientResource#followRedirects property and the related
implementation code.
- Deprecated the abstract DigestRepresentation class, replaced
by Digester. Added a getDigester method on the Representation
class.
- Deprecated Representation#checkDigest and
Representation#computeDigest methods.
- XML component configuration now supports new ServerResource
subclasses.
- Deprecated the Resource and Guard classes.
- Added toObject() and toRepresentation() methods on
ClientResource.
- Refactored the services API. Added a "services" property
on Application to allow users to register new ones. Also,
add a createInboundFilter() and createOutboundFilter()
methods to automatically register them when starting the
application.
- Added MetadataService#getAllMediaTypes(), getLanguage() and
getMediaType() and similar methods. Reported by David Fogel
and suggested by Remi Dewitte and Tim Peierls.
- Added AppendableRepresentation for dynamic generation of
StringRepresentation instances.
- Miscellaneous
- Component XML configuration has been moved into an Engine
ComponentXmlParser class.
- Added unit test case for the Alphanum algorithm.
Contributed by Davide Angelocola.
- ServerResource now rethrows exceptions from annotated methods.
Reported by Tal Liron.
- Removed the Script extension and Scripturian libraries that
will now be managed outside the Restlet project by Tal Liron.
- Updated GWT library to version 1.6.4.
- Updated OAuth library to latest version.
Suggested by Sean Sullivan.
- 1.2 Milestone 2 (2009-04-01)
- Breaking changes
- Finder#createTarget() methods are now all protected. The
findTarget() method is now public. Suggested by Leigh Klotz.
- All core representation classes have been moved from the
"org.restlet.resource" package into a new
"org.restlet.representation" package. Make sure to adjust your
import instructions.
- The ConnectorService#afterSend() and beforeSend() are now
always called, even if no entity is written. They are now
related to the sending of the message itself.
Suggested by Paul Davis.
- The Router.createFinder() method is now public.
- The Callback abstract class in the GWT module is now an
interface. This should have no impact in most cases. Just
remove any associated @Override annotations.
Suggested by Scooter Willis.
- Bugs fixed
- Fixed typo in the declaration of the
o.r.e.Engine#DESCRIPTOR_AUTHENTICATOR.
Reported by Remi Dewitte.
- Removed all string instantiations of secrets.
Contributed by Remi Dewitte.
- Fixed various OSGi issues. Reported by David Fogel.
- Fixed missing entries in ChallengeScheme#valueOf.
Reported by Sean Sullivan.
- Fixed JAXB pom issue. Reported by Fabio Mancinelli.
- Added workaround to make sure that the JAX-RS extension
is registered as an implementation of the JAX-RS API.
Suggested by David Fogel.
- Fixed encoding issue with percent characters at the end
of URI references with the required two digits following.
Now the percentage sign is encoded and a fine trace is logged.
Reported by Nels Nelson.
- Enhancements
- Added a getItemIterator() on RestletFileUpload to facilitate
access to parts in streaming mode. Suggested by Paul Austin.
- The default SAX handler has been implemented to log
validation information. Contributed by Raif S. Naffah.
- DirectoryResource class in engine now has a protected
getDirectoryContent() method. Suggested by Gordon Mohr.
- Implemented Text#toString() in the Atom extension.
- Completed list of registered media types. Suggested by Remi
Dewitte.
- JAX-RS extension now leverages the new security API.
Contributed by Bruno Dumon.
- Added setters for helpers in Engine.
Suggested by Kevin Conaway.
- Added the ability to tunnel methods via a specific header.
Contributed by Fabrice Boileau.
- Added conversion methods to engine's ByteUtils between byte
arrays and character arrays. Contributed by Remi Dewitte.
- Added protected DirectoryResource#getRepresentation() and
getClientDispatcher() method to facilitate extension and
support of special cases.
Original issue reported by Dave Fogel.
- Added a client connector supporting ZIP and JAR URIs that
are based on local archive files.
Contributed by Remi Dewitte.
- Enhanced JsonRepresentation based on Tal Liron's contributions.
Now supports indentation configuration and more manipulation
and conversion methods.
- Added RDF extension that aims to support the parsing and
writing of RDF representations.
- Added support of parsing and writing of RDF/XML and RDF/N3
representations.
- API changes
- Added Role class and "roles" property to Application.
- Fully refactored the security package introduce in 1.2 M1
based on community feed-back.
- Added Realm, MemoryRealm classes and "realms" property to
Component.
- Added "verifier" and "enroler" properties to Context.
- Reverted represent*() auto-matching support for further
discussions. Suggested by Tim Peierls.
- Added constructors with feed URI in the Feed class of the Atom
extension.
- Added "indent" property to DomRepresentation. Suggested by
Cliff Binstock.
- Added support of Shared Key and Shared Key Lite authentication
schemes developed by Microsoft. Suggested by Steve Sfartz.
- WadlApplication now invokes the findTarget() method on Finder
instances instead of the createTarget() one.
Suggested by Leigh Klotz.
- Added Delete, Get, Options, Post and Put annotations
to the org.restlet.resource package. Based on community
feed-back and suggestions by Tim Peierls.
- Added org.restlet.resource.UniformResource and ClientResource
classes as part of our new Resource API.
- Added createClientInfo() method on Variant.
- Added a Message#getEntityAsText() method caching the text
content to allow several reads along a chain of filters.
- Added a Server#setTarget() method taking a Resource class as a
parameter. This is useful for minimalistic examples.
- TunnelService now accepts query parameter values such as
"application/xml" and now just registered extension names
such as "xml". Suggested by Paul Austin.
- Renamed LinkSet to Graph and added support for N3 formulae.
Graph can be source or target in Link instances.
- Removed Link.identifier and Graph.identifier properties.
- Series#getFirstValue() now returns the default value if the
parameter exists but has a null value.
Suggested by Jonathan Hall.
- Added Context#setClientDispatcher() and
Context#setServerDispatcher() methods.
- Added support for proxy authentication in the Restlet API.
Added "proxyChallengeResponse" property to Request, added
"proxyChallengeRequests" to Response. Added support in the
HTTP parsing and formatting layers.
- Added a WadlApplication#createFinder() method to facilitate
customization of behavior with Spring.
Suggested by Rhett Sutphin.
- Added Protocol#ZIP constant.
- Representation#finalize() method now has a default
implementation that calls the release() method.
Suggested by Remi Dewitte.
- Updated accept.properties file, removing Firefox
customization as version 3.0 has proper 'Accept' header.
- Added a JaxbRepresentation#setValidationEventHandler method.
- Added Variant#isCompatible() method.
- Added an org.restlet.representation.RepresentationInfo class
that contains the "lastModified" and "tags" properties from
Representation which is now a subclass. Variant is the super
class. Useful to check conditions without pulling a full
representation. Suggested by Lars Heuer.
- Added Method.ALL constant. Useful to declare variants common
to all methods in the new ServerResource class.
- Added new org.restlet.routing package and moved Filter,
Router, Redirector and subclasses to it.
- Moved Directory, Finder and Handler to org.restlet.resource
package.
- Renamed org.restlet.security.Guard to UniformGuard in order to
move org.restlet.Guard to this security package.
- Misc
- Upgraded Simple server to version 4.1.9.
Contributed by Niall Gallagher.
- Fixed Javadocs typos in Router and Resource.
Contributed by Raif S. Naffah.
- Fixed issue with parent contexts in ServerServlets.
Contributed by Marcelo Ochoa.
- Updated OAuth library to latest version.
Suggested by Sean Sullivan.
- Added HttpRequest#getHeaders() and HttpResponse#getHeaders()
methods. Added HttpRequest#addHeader() and
HttpResponse#addHeader() static methods.
Suggested by Kevin Conaway.
- Updated licensing information to mention addition of the
EPL 1.0 licensing option (Eclipse Public License 1.0).
- Added Maven support to build Restlet modules.
Suggested by many. Contributions by Jean-Yves Cronier.
- 1.2 Milestone 1 (2009-01-23)
- Breaking changes
- The engine has been moved from "com.noelios.restlet" to
the "org.restlet.engine" package, simplifying the packaging.
- All engine extensions have been moved to "org.restlet.ext"
packages.
- The com.noelios.restlet.ext.spring extension has been merged
with org.restlet.ext.spring.
- Moved org.restlet.util.DateUtils, ByteUtils and Engine
classes to org.restlet.engine.* packages.
- Enhancements
- Internal HTTP connector now supports HTTPS connections.
Contributed by Kevin Conaway.
- Added a Lucene extension including a Solr client connector
contributed by Remi Dewitte. Also contains a useful
TikaRepresentation to extract metadata from a representation
using Lucene Tika parsing and analysis library. Suggested by
Ben Johnson.
- The Atom Service class now supports getting documents from
other protocols than HTTP.
- Updated org.restlet.Component to support validating parsing.
Contributed by Raif S. Naffah.
- XmlRepresentation now has "entityResolver", "errorHandler",
"schema", "xIncludeAware" and "validating" properties.
Contributed by Raif S. Naffah.
- API changes
- A response with a 200 (Ok) status should have an entity. Now,
we make sure that a warning is logged.
Reported by Rob Heittman.
- Removed all code deprecated in the Restlet 1.1 release.
- Added org.restlet.data.Literal to represent RDF
literals with an optional datatype.
- Added org.restlet.data.Link to represent RDF links (aka
triples, statements or relationships).
- Moved o.r.u.Helper class, used privately by API classes to
the o.r.engine package.
- Added MediaType constants APPLICATION_RDF_TRIG,
APPLICATION_RDF_TRIX, APPLICATION_RDF_TURTLE,
APPLICATION_SPARQL_RESULTS_XML and
APPLICATION_SPARQL_RESULTS_JSON for RDF and SPARQL.
- Added LinkReference and LinkSet classes to support RDF
reference manipulation (blank nodes for example) and RDF
graphs or models.
- Added CharacterSet#DEFAULT constant, new constructor for
Charset instances and a toCharset() method. Suggested by
Charles Gay.
- Added Reference#toUri(), toUrl() and constructors from
java.net.URI and URL instances. Suggested by Cliff Binstock.
- Added APPLICATION_ATOM media type constant and
deprecated APPLICATION_ATOM_XML.
- Added APPLICATION_ATOM_SERVICE_XML media type constant and
deprecated APPLICATION_ATOMPUB_SERVICE.
- Added APPLICATION_ATOMPUB_CATEGORY media type constant.
- Added APPLICATION_KML and APPLICATION_KMZ media type
constants. Suggested by Frank Hellwig.
- Added APPLICATION_MATHML_XML media type constant and
deprecated APPLICATION_MATHML.
- Added APPLICATION_RSS_XML media type constant and
deprecated APPLICATION_RSS.
- Added APPLICATION_W3C_SCHEMA_XML media type constant and
deprecated APPLICATION_W3C_SCHEMA.
- Added APPLICATION_WADL_XML media type constant and
deprecated APPLICATION_WADL.
- Added APPLICATION_XHTML_XML media type constant and
deprecated APPLICATION_XHTML.
- MediaType constructor now normalizes the main and sub parts.
If invalid characters are detected, an IllegalArgumentExcept
is thrown. Spaces are also trimmed and empty parts are
converted to '*'. Contributed by Nicolas Rinaudo.
- Method#setUri() has been deprecated as Method instances
shouldn't be modifiable.
- Language.getSubTags() now returns an unmodifiable list.
- MediaType.parameters property is now unmodifiable. Initial
issue reported by Nicolas Rinaudo.
- Added static Series#unmodifiableSeries() method.
- Added DateUtils.format(Date) method which uses HTTP default
format.
- Added a new "org.restlet.security" package with a full
replacement for current Guard mechanism. This is
an alpha level package not intended for Restlet users yet.
- Made the SpringBeanRouter implement ApplicationContextAware
to enable AOP on target resources. Suggested by Daniel Woo.
- Resource subclasses can now declared variants and match them
more easily using an automatic detection mechanism based on
represent*() methods where '*' is a series of extensions.
Also added a "detectVariants" property to turn off this
behavior if necessary.
- Added a getAllMetadata(String extension) method on the
MetadataService class.
- Deprecated the ClientInfo#addresses property and replaced it
by a more explicit "forwardedAddresses" property. Also, added
a new getUpstreamAddress() method. Adjusted the Resolver
class to add a new "ciua" variable. Change suggested by
John D. Mitchell. Initial patch provided by Remi Dewitte.
- Added ClientInfo#subject property returning a JAAS Subject.
Can contain several principals and credentials. Deprecated
the ChallengeResponse#getPrincipal() method.
- Added new Conditions.getStatus() method signature for usage
by the JAX-RS extension. Suggested by Stephan Koops.
- Misc
- JAX-RS extension:
- added class ExendedUriBuilder with "file" extensions for
content negotiation and an ExtendedUriInfo to get it.
- Supports per-request-providers now.
- JaxRsApplication will not clear the MetadataService (as
before; was required to not use other extensions as given
in the JAX-RS ApplicationConfig class).
- The Directory class doesn't override the findTarget() method
but uses the default Finder mechanism based on the
"targetClass" property. Therefore, it is easier to specify a
subclass of org.restlet.engine.local.DirectoryResource in
order to customize the default behavior.
Suggested by Cliff Binstock.
- Upgraded db4o to version 7.7.67.
- Refactored engine support for the StatusService. Removed
ApplicationStatusFilter and ComponentStatusFilter.
- Extracted all internal classes of ByteUtils into the new
org.restlet.engine.io package for easier reuse and
maintenance.
- Clarified Javadocs in Reference#getPath() methods.
- Fixed potential NPE in Reference#decode() method.
- Clarified Javadocs in FileRepresentation and methods
Representation#getDownloadName(), setDownloadName() in order
to explain that setDownloadable(true) must be called first.
Issue reported by Kevin Conaway.
- The internal HTTP client doesn't send absolute request URIs
anymore. It now sends them as relative URIs according to the
HTTP 1.1 specification. Reported by Jonas Maturana Larsen.
- Upgraded Apache Commons IO to version 1.4.
- 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.
Reported by Eirik Bjorsnos.
- The internal HTTP client no longer forces the user agent name
if one has already been specified by the user. Contributed by
Kevin Conaway.