Changelog History
Page 2
-
v1.1.0 Changes
November 29, 2013spray-http: added some more helpers around form data and
BodyPart
constructionspray-io:
- fixed
Terminated
dead letters from IO layer (#704) - fixed
Tcp.SO.reuseAddress
not being applied for outgoing connections (#712)
- fixed
spray-routing:
- fixed problem with
compressResponseIfRequested
allowing unused parameters
- fixed problem with
✅ spray-testkit: added
NoAutoHtmlLinkFragments
helper trait
-
v1.1-RC4 Changes
November 20, 2013spray-can:
- fixed occasional DeathPactException in HttpHostConnector (#699)
spray-io:
- fixed SslTlsSupport sending out multiple acks in some cases (#689)
- fixed noisy DeathPactException when connection attempt fails (#692)
- added verification of correct clientMode of SSLEngines created by
*SSLEngineProvider.fromFunc
(#657)
spray-routing:
- made
FutureDirectives
andauthenticate(Future)
parameters call-by-name (#694) - applied small change as a workaround for http://youtrack.jetbrains.com/issue/SCL-6214
- made
-
v1.1-RC3 Changes
November 13, 2013spray-can:
- fixed IllegalStateException ("Unexpected slot state: Idle") in host-level API (#652)
- fixed client-side request-timeout not cancelled after receiving
ChunkedResponseStart
(#670) - fixed negative 'openConnections' in StatsSupport (#666)
- fixed possible excessive memory use when parsing incoming chunked messages (#662)
- fixed server sometimes sending events to wrong receivers
- improved "Cannot establish effective request URI" error message
spray-http:
- fixed OAuth2 bearer token parser problem (#671)
- added q-value support to
HttpCharset
andHttpEncoding
- improved content negotiation logic (#677)
- made auth scheme and "realm" parameter parsing case-insensitive (#668)
- smaller fixes
spray-httpx:
- fixed
TwirlSupport
XML marshalling - added
DelegatingToResponseMarshallingContext
andwithEntityMapped
/withResponseMapped
helpers
- fixed
spray-io:
- fixed IllegalStateExceptions in SslTlsSupport (#667)
spray-routing:
- fixed
HttpService::runRoute
not handlingConnectionClosed
events (#675) - fixed
listDirectoryContents
producing incorrect links when under pathPrefix (#684) - added parameterless
/
modifier forPathMatcher
- fixed
spray-util:
- fixed
SimpleStash
to also stash message senders
- fixed
-
v1.1-RC2 Changes
October 30, 2013spray-can:
- changed
ClientConnectionSettings::userAgentHeader
fromString
toOption[
User-Agent]
(#458) - relaxed parser to allow several identical
Content-Type
headers (#463) - improved
HttpHostConnector
for better performance with large numbers of connections (#643)
- changed
spray-http:
- fixed
DateTime
to allow years up to 9999 (#502) - fixed exception leaking from
HttpCharset.custom
(#637) - remodeled
HttpIp
toRemoteAddress
(#638)
- fixed
spray-httpx:
- made play dependency optional in OSGi Import-Package statement
- added
MarshallerM
helper type for abstracting over monadic marshallers
spray-io:
- fixed broken inbound bytes buffering in SslTlsSupport (#633)
- removed too tight assertions, replaced remaining asserts (#631)
spray-routing:
- changed
path
directive andSegments
matcher to never match trailing slashes - added
pathEnd
,pathSingleSlash
andpathEndOrSingleSlash
directive (#628) - added
PathMatcher::repeated
modifier (#636)
- changed
-
v1.1-RC1 Changes
October 22, 2013⬆️ Upgraded to Scala 2.10.3 and latest versions of all dependencies
spray-caching: added a size method to
Cache[V]
spray-can:
- "privatized" all classes/objects not meant to be part of public API
- replaced
InetSocketAddress
inHostConnectorSetup
with hostname/port pair (#394) - moved
client.ssl-encryption
setting from reference.conf intoHttp.Connect
message (#396) - when creating
HostConnectorSettings
expect client settings atspray.can.client
(#408) - introduced dedicated exceptions for connection failure and request timeout for host-level API
- made Content-Length a long value (#443)
- add auto-chunking for responses without content-length (#455)
- broke out
ServerSettings
timeout settings into sub case class (#489) - change rendering of default
User-Agent
(#462) - added support for custom status codes (#564)
- added explicit registration of chunk handler for incoming message chunks (#473)
- added client-side redirection following (#132)
- removed of
Http.Register::keepOpenOnPeerClosed
(#401) - a ton of other fixes, additions and smaller improvements
spray-http:
- added
startsWith
anddropChars
method to Uri.Path model - added support for
Accept
header extensions and media-type parameters (#310) - fixed raw queries performing %-decoding and not being rendered as raw (#330)
- made only standard charsets available as constants (#340)
- added model for CORS headers
- allowed empty
Host
headers - fixed
Location
header parsing to accept relative URIs (#484) - introduced
HttpData
model replacing the byte array inHttpBody
andMessageChunk
(#365) - added
CONNECT
method and support for custom HTTP methods (#428) - added
StatusCode::allowsEntity
member - made multipart form-data more flexible but have it adhere to the RFC more strictly
- introduced a distinction between "?key=" and "?key" in queries (#460)
- added effectivePort method on
Uri
- many other fixes, additions and smaller improvements
- added
spray-httpx:
- flexibilized
RequestBuilding
andResponseTransformation
by generalizing the~>
operator - added
mapHeaders
,removeHeader
andremoveHeaders
to RequestBuilding - moved
unmarshal
andunmarshalUnsafe
toUnmarshaller
object - changed default StringMarshaller to prefer
UTF-8
encoding overISO-8859-1
(#498) - added default marshallers for
ByteString
andHttpData
- changed default charset for
application/x-www-form-urlencoded
toUTF-8
(#526) - added support for custom
Content-Disposition
headers - added support for non-strict
FormDataUnmarshaller
- added
FromMessageUnmarshaller
,FromRequestUnmarshaller
andFromResponseUnmarshaller
- extended
MarshallingContext
with support for specifying additional HTTP headers - introduced
ToResponseMarshaller
and supporting infrastructure - added
Unmarshaller.oneOf
to create negotiatingUnmarshaller
(#581) - added support for play-json (un)marshalling
- many other fixes, additions and smaller improvements
- flexibilized
spray-io:
- upgraded to latest upstream Akka IO additions and fixes
- significantly improved
SslTlsSupport
(#544) - smaller fixes, additions and improvements
spray-routing:
- added
headerValueByName(Symbol)
andoptionalHeaderValueByName(Symbol)
overload - added
rejection
parameter toDirective::hrequire
andDirective::require
- added
separateOnSlashes
helper for PathMatchers (#334) - moved
UserPassAuthenticator.cached
toCachedUserPassAuthenticator.apply
(#352) - redefined
PathMatchers.Empty
asPathMatchers.Neutral
with explicit type annotation (#339) - renamed
PathMatcher.(flat)map
=>h(flat)map
, introducedmap/flatMap
(#274) - added
detach
directive which executes its inner route in a future, removeddetachTo
(#240) - added
scheme
directives - added
PathMatchers.Segments
which will match all remaining segments asList[String]
- added some higher-level compression/decompression directives
- added
autoChunkFileBytes
directive - fixed
getFromDirectory
andgetFromResourceDirectory
not working properly for URIs with encoded chars - added
requestInstance
andrequestUri
directives (#525) - removed layer of
*Aux
classes by type aliases for simplicity - removed
CompletionMagnet
in favor of newToResponseMarshaller
- removed superfluous
RequestContext::complete
overloads - added
PathMatcher::?
modifier, removedSlash_!
- many other fixes, additions and smaller improvements
- added
spray-servlet:
- added support for providing the
javax.servlet.http.HttpServletRequest
in a special header - added
illegal-header-warnings
setting in analogy to spray-can (#553) - added
spray.servlet.uri-parsing-mode
setting (#574) - smaller fixes, additions and improvements
- added support for providing the
-
v1.1-M8 Changes
June 10, 2013- ⬆️ Upgraded to Scala 2.10.2, Akka 2.1.4 and latest versions of all dependencies
- general: added automatic source formatting via sbt-scalariform
- spray-caching: folded
Cache.fromFuture
into Cache.apply spray-can:
- migrated from old spray-io onto new akka-io
- completely rewrote client-side APIs for improved architecture and usability
- completely rewrote HTTP parser for cleanliness and much better performance
- rewrote HTTP renderer for cleanliness and performance
- many fixes, additions and smaller improvements
spray-client:
- removed HttpConduit (now part of spray-can client-side APIs)
- moved HttpDialog from spray-can into spray-client
- adapted to new spray-can client layer
spray-http:
- major refactoring for cleanliness and performance
- established serializability for all model classes
- added custom RFC3986-compliant URI model incl. fast parser
- many fixes, additions and smaller improvements
spray-httpx:
- added marshaller for
Try[T]
- added Json4s native and Json4S jackson support
- many fixes, additions and smaller improvements
- added marshaller for
spray-io:
- migrated large majority of logic to new Akka I/O layer (for Akka 2.2)
- backported new Akka I/O layer from Akka 2.2 to Akka 2.1
- updated remaining logic
spray-routing:
- added several new directives (most notably: FutureDirectives, AnyParamDirectives)
- many fixes, additions and smaller improvements
spray-servlet:
- fixed NPE during exception handling using
e.getMessage
- enabled dynamic timeout setting via SetRequestTimeout and SetTimeoutTimeout commands
- smaller improvements
- fixed NPE during exception handling using
🛠 spray-util: many small fixes and improvements
-
v1.1-M7 Changes
December 19, 2012- ⬆️ Upgraded to Scala 2.10.0-RC5, Akka 2.1.0-RC6
spray-can:
- fixed broken overridability of SprayCanHttpServerApp.system member
- fixed request rendering to not suppress custom Date headers
- fixed rendering of 'Content-Length: 0' request headers
- added option for tagging log messages with custom prefixes, closed #153
- added DefaultHttpClient extension, closed #166
- added explicit naming for connection actors
spray-http:
- fixed non-public access to the HttpRequest URI and queryParams members through the 'copy' method
- added HttpMessagePart extractor
- improved Date header parser to allow UTC as well as GMT time zone label
- improved language-tag parser to also accept tags according to BCP 47, closed #168
spray-httpx: changed JSON rendering to always be UTF-8 encoded
spray-io:
- changed IOExtension.ioBridge to IOExtension.ioBridge()
- added option for tagging log messages with custom prefixes, closed #153
- added proper supervisor strategy for connection actors: stop (and close connection) on all exceptions
- improved enabling/disabling of encryption on the connection (SslTlsSupport)
- flexibilized connection tag provision
- changed IOClient.Connected events to be sent with connection actor as sender
spray-routing:
- fixed rejection duplication in certain cases
- changed default marshalling encoding to UTF-8
- added SimpleRoutingApp trait
- added
complete(Future[StatusCode])
overload - added
optionalHeaderValuePF
directive - simplified and homogenized ExceptionHandler and RejectionHandler to both return Routes
✅ testkit: turned response MatchError into proper error message, closed #165
util:
- introduced SprayActorLogging trait
- improved LoggingContext with configurability regarding logger name generation
- improved PimpedFuture.delay to accept implicit ActorRefFactory instead of ActorSystem
examples:
- added simple-routing-app example
- renamed simple-on-jetty and simple-on-spray-can examples to on-jetty / on-spray-can resp.
🛠 smaller fixes and improvements
-
v1.1-M6 Changes
November 30, 2012- ⬆️ Upgraded to Scala 2.10.0-RC3, Akka 2.1.0-RC3, parboiled 1.1.4, shapeless 1.2.3 and spray-json 1.2.3
- ➕ Added 'is-local-ActorRef' assertions across modules (where applicable)
spray-can:
- removed superfluous ssl-encryption config setting from HttpClient
- increase default HttpServer pipelining-limit from 1 to 8
- introduced SprayCanHttpServerApp convenience trait, updated examples
- smaller performance improvements
spray-http:
- added support for 'Bearer' scheme in Authorization header (OAuth 2.0), closes #155
- renamed 'OtherHttpCredentials' to 'GenericHttpCredentials'
- improved MediaType model, added more default MediaTypes, closed #157
- improved warmup
- improved parser for 'X-Forwarded-For' header to also accept "unknown" elements
- added DateTime.fromIsoDateTimeString
spray-httpx: made the (Un)marshaller[NodeSeq] also accept 'application/xml'
spray-io:
- turned IOBridge into Actor, added optional parallelism
- general refactoring for cleanliness and clarity
- improved flexibility of connection actor creation
- smaller performance improvements
spray-routing:
- added Directive.recover and .recoverPF modifiers
- introduced HeaderDirectives trait, reworked and improved header extraction directives
- changed evaluation of 'complete' directive arguments to call-by-name
- fixed incomplete exception handling in Directive.unwrapFuture
- renamed getFromFileName directive to getFromFile
- introduced default, simple HttpServiceActor implementation
- smaller refactoring in PathMatcher API
🛠 spray-servlet: fixed missing application of root-path setting
✅ spray-testkit: flexibilized ActorSystem provision for RouteTest, closed #162
⚠ spray-util: changed log level of loggers installed via 'installEventStreamLoggerFor' from DEBUG to WARNING
🛠 smaller fixes and improvements
-
v1.1-M5 Changes
November 09, 2012- ⬆️ Upgraded to Scala 2.10.0-RC2 and Akka 2.1.0-RC2
spray-can:
- fixed NPE in RequestChunkAggregation
- removed stray logging statement from RequestChunkAggregation
- fixed incorrect rendering of chunked responses to HEAD requests
✅ spray-http: fixed incorrect test for response encoding acceptance
🚚 spray-httpx: removed dangerous StatusCodeMarshaller
spray-io:
- improved logging of errors in the SslTlsSupport pipeline stage
- reworked connection closing, added ConfirmedClose reason, fixed #147
spray-routing:
- added option for disabling automatic file-chunking
- removed HttpService.routingSettings method, provision of RoutingSettings now fully implicit
- renamed Directive.map and .flatMap to .hmap/.hflatMap, re-added .map and .flatMap pimps for single-value directives
- improved HttpService 'runRoute' wrapper to also work in "sub-route" actors
- removed 'filter' directive, converted all applications to 'extract(...).flatMap'
- added 'pathTest' directive
- improve rendering of directory listings
- changed default redirection type to '302 Moved Permanently'
- improved host directive
- added 'dynamicIf' directives
- improved and flexibilized DebuggingDirectives
- add 'complete' overload taking a single StatusCode parameter
0️⃣ spray-can & spray-servlet: increased default idle and request timeouts to 120s and 30s respectively
✅ spray-testkit: improved provision of custom RouteTestTimeout
spray-util: added 'installDebuggingEventStreamLoggers' convenience helper
🛠 smaller fixes and improvements
-
v1.1-M4 Changes
October 19, 2012- ⬆️ Upgraded to Scala 2.10.0-RC1 and Akka 2.1.0-RC1