BREAKING CHANGE: moved into "MindTouch.Tasking" namespace
BREAKING CHANGE: renamed to 'DispatcherCue<T>'
ConvertInCue<TInput, TOutput>:
class added (applies a Converter<TInput, TOutput> to incoming messages)
ConvertOutCue<TIntput, TOutput>
class added (applies a Converter<TInput, TOutput> to outgoing messages)
Cue<T>
BREAKING CHANGE: moved to 'MindTouch.Tasking' namespace
implemented proper behavior for Fail()
fixed inconsistent CueState results
DatabaseService
execution of a Query returning
a DataSet or execution of a NonQuery including parameter passing from
predefined SQL statements with support for any Database support
System.Data.
DirectoryService
mapped entire events services at /events
DreamAbortProcessingException
BREAKING CHANGE: renamed to 'DreamAbortException'
DreamContext
BREAKING CHANGE: removed 'Request' and 'Response' properties, use 'InCue' and 'OutCue' instead
BREAKING CHANGE: 'InCue', 'Redirect()', and 'Passthrough()' can only be called from asynchronous feature handlers
added 'GetParam(string)' and 'GetParam<T>(string)' to retrieve query (?param=value) and path (/{param}/) parameters
added 'GetParam(string, string)' and 'GetParam<T>(string, T)' to retrieve query (?param=value) and path (/{param}/) parameters
added static 'Current' property (uses Task state to remain thread-static)
added state container (use 'GetState' and 'SetState')
DreamContextCollection
BREAKING CHANGE: removed explicit support for events
DreamEnvironment:
BREAKING CHANGE: renamed to 'DreamKernel'
added global unique identifier
upon startup, the 'DreamHost' environment variable is set pointing to the location of the executing assembly (can be used in environment variable expansions such as "%DreamHost%/config.xml")
decoupled DreamKernel from HttpTransport; enabling the kernel to be embedded into various environments with different transports
kernel now first matches the request URI and then checks for a matching verb; if uri is matched, but no verb is found, the kernel automatically generates a 405 response (Method Not Allowed) with a description of allowed methods
DreamFeatureAttribute
added support for compact feature notation: "GET:myfeature/path/*/*"
made Info uri optional; if none is provided, the service Info uri is inherited
wildcards can now be used anywhere in the signature: "GET:myfeature/*/name"
wildcards can be named: "GET:myfeature/[id]/name
added StatusFilter property; used to filter for certain message (default is "2xx"; lists can be used as well, e.g. "200, 204, 30x, 404, 5xx")
added Obsolete property; used to mark a feature as obsolete and provide a hint for alternatives
DreamMessage
BREAKING CHANGE: removed extraneous constructors
BREAKING CHANGE: renamed 'UriReferrer' to 'Referrer'
BREAKING CHANGE: renamed 'HEADER_DREAM_LISTENER' to 'HEADER_DREAM_TRANSPORT'
BREAKING CHANGE: changed ContentType fromt string to MimeType
BREAKING CHANGE: changed ContentEncoding from Encoding to string
added class methods for creating DreamMessage instances
added 'Bytes as native data representation
added Forbidden as response type
added 'Text' property to read message body as a decoded string
added 'ContentLocation' property
added 'ETag' property
added 'IsSuccessful' property which checks if Status is in 2xx range
cookies are automatically parsed from header in to cookie collection
added constructor that takes XDoc and content-type
DreamMessageStatus
BREAKING CHANGE: renamed to 'DreamStatus'
all HTTP status codes have been added
DreamRequest
BREAKING CHANGE: class removed
DreamResponse
BREAKING CHANGE: class removed
DreamScheduler
BREAKING CHANGE: renamed to 'TimerQueue' and moved to 'System.Timers' namespace
DreamServiceAttribute
added "SID" property (SID = service identifier)
DreamServiceBase
BREAKING CHANGE: renamed to 'DreamService'
BREAKING CHANGE: removed 'CreatePlug()' (it was marked as obsolete in Beryl)
BREAKING CHANGE: removed 'ServiceUri' property; use 'Self.Uri' instead
BREAKING CHANGE: '/@inspect' renamed to '/@about' (verbs are reserved for action features)
BREAKING CHANGE: moved 'DreamMessage.CONTENT_TYPE_XYZ' constants to 'ContenType.XYZ'
BREAKING CHANGE: blueprint <verb>, <path>, and <signature> feature elements have been combined into a single <pattern> element
added support for synchronous and iterator-based feature implementations
refactored processing pipline to allow concurrent execution of feature stages
services can now be instantiated by using the classname independent SID attribute
added support for form encoded XML documents
added support for 'X-HTTP-Method-Override' header on HTTP transport
MountService
BREAKING CHANGE: supplied path must be absolute
New classes/interfaces
CueYield
CueYield<T>
IAssociativeTask
ITask
PlugYield<T>
Task
TaskBehavior
DreamInternalErrorException: new exception type added (derived from DreamAbortException)
DreamBadRequestException: new exception type added (derived from DreamAbortException)
MimeType
Tuple: generic tuple classes added (support enumeration and comparison)
Plug
BREAKING CHANGE: replaced all ...AsCue() methods with ...Yield()
BREAKING CHANGE: replaced 'QueryValues' with 'Params'
plugs are built by plug factories
all regular methods that send or retrieve data now return a DreamMessage instance
headers can now be preset in plug (but may be overridden by messages)
centralized all error handling for requests from factories into Plug
now throws DreamRequestException when an error occurs before a message is sent
when used within a service, plugs now automatically manage cookies
added parameter less cue methods
response stream is now automatically closed on HEAD requests causing .Text, .Bytes, etc. to throw exceptions; this avoids issues where ContentLength would not be in synch otherwise
added implicit cast to XUri
PlugCue
BREAKING CHANGE: class has been replaced with PlugYield