Table of contents
No headers
  • ActionOutCue<T>
    • 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: removed 'Async()' (use 'Task.Async()' instead)
    • all services now have an event service at '/@log' for logging
    • added 'LogWarning()', 'LogError()', and 'LogInfo()' methods
    • added 'Context' property that fetches 'DreamContext.Current'
    • added 'GetParams', 'GetParam', etc. to make access to feature parameters easier
    • added 'CreateServiceBlueprint()' method
    • update /@about to generate service configuration information as well
  • DreamServiceConfigAttribute
    • added attribute to describe configuration parameters
  • DreamStatus
    • BREAKING CHANGE: renamed 'Redirect' to 'Found'
    • BREAKING CHANGE: renamed 'AccessDenied' to 'Unauthorized'
    • BREAKING CHANGE: renamed 'NotAllowed' to 'MethodNotAllowed'
    • augmented status codes to contain the full list of HTTP status codes
  • DreamUtil
    • BREAKING CHANGE: removed 'Async()' (use 'Task.Async()' instead)
    • BREAKING CHANGE: moved non-dream helper methods into System.StreamUtil, System.HttpUtil, and ArrayUtil
    • added 'AllKeyValues' method to properly iterate over NameValueCollection instances
    • ParseUriQueryString: method moved to XUri
    • fixed life lock condition in CopyStream
  • HostService
    • BREAKING CHANGE: "POST:register/" no longer allows for registering an entire assembly (use "POST:load/" instead)
    • adding check to see if class to be started is instantiatable
    • host will attempt to stop services that fail during start-up
    • timer features have been moved into host service
    • 'PUT:@config' is now used to initialize a service
    • 'DELETE:@config' is now used to deinitialize a service
    • child services are now shutdown if their owner service failed to shut them down
  • HttpOutCue
    • moved into 'MindTouch.Dream.Http' namespace
    • 'Set-Cookie' headers are now being sent back
  • HttpPlug
    • BREAKING CHANGE: class removed
  • HttpTransport
    • moved into 'MindTouch.Dream.Http' namespace
    • added support for an 'apikey' that can be configured to limit access to all dream services
    • simplified transport to only create one http listener
    • added support for 'X-HTTP-Method-Override' header
  • IDreamEnvironment
    • BREAKING CHANGE: renamed 'LocalhostUri' to 'RootUri'
    • BREAKING CHANGE: renamed 'Host' to 'HostUri' and changed type to XUri
  • IDreamService
    • added 'Cookies' property to interface
  • IInCue<T>
    • BREAKING CHANGE: replaced "IList<T> WaitMany(int, int, out CueState)" with "CueState WaitMany(int, int, out IList<T>)"
    • BREAKING CHANGE: replaced "bool WaitAll(int)" with "CueState WaitAll(int, out IList<T>)"
    • BREAKING CHANGE: replaced "bool WaitAll(int, Action<T>)" with "CueState WaitAll(int, Action<T>)"
    • BREAKING CHANGE: removed "T this[int index]"
    • BREAKING CHANGE: removed "int Count"
    • BREAKING CHANGE: removed "IList<T> Items"
    • BREAKING CHANGE: moved into "MindTouch.Tasking" namespace
    • added methods for iterator-based async execution (see CueYield and YieldTask)
    • added OnAsyncException and OnCompletion event handlers
    • all wait operations now time out immediately if millisecondsTimeout is 0 or less
  • IOutCue<T>
    • BREAKING CHANGE: changed synchronous WaitAll() to take Predicate<T> instead of Action<T>
    • BREAKING CHANGE: changed asynchronous WaitAll() to take CueHandlerPredicate<T> instead of CueHandler<T>
  • IPlugFactory
    • BREAKING CHANGE: new interface design
  • Misc
    • BREAKING CHANGE: all services classes have been moved to the 'MindTouch.Dream.Services' namespace
    • BREAKING CHANGE: removed old processing query argument names (select, output, callback, etc.)
    • 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
  • PHP
    • new Plug implementation for PHP
  • ProxyPlugFactory
  • RendezVousEvent
    • class added (simple two-phase coordination)
  • ResourcePlugFactory
  • SingletonCueReceiver<T>
    • BREAKING CHANGE: moved into "MindTouch.Tasking" namespace
    • BREAKING CHANGE: renamed to 'SingletonCue<T>'
    • fixed inconsistent CueState results
  • StatisticsService
    • BREAKING CHANGE: made interface REST-compliant
    • stats are now automatically saved & restored
  • StorageService
    • BREAKING CHANGE: supplied path must be absolute
  • SuffixFormat
    • BREAKING CHANGE: renamed to UriPathFormat
  • TaskYieldBase
    • class added (abstract base class for returning results from iterative methods)
    • added 'PinToThread()' to synchronize continuation with current SynchronizationContext
    • added 'PinTo()' to synchronize continuation with arbitrary SynchronizationContext
  • TaskYield
    • class added (used to return results from void iterative methods)
    • added 'Wait()' for synchronous waiting (i.e. blocking)
    • added 'Wait(...)' for asynchronous waiting
  • TaskYield<T>
    • class added (used to return results from iterative methods with return type T)
    • added 'Wait()' for synchronous waiting (i.e. blocking)
    • added 'Wait(...)' for asynchronous waiting
  • TimeSchedule:
    • BREAKING CHANGE: renamed 'Invoke' method to 'Execute'
  • Toolbox
    • added mindtouch.apitest GUI application to test services
    • added mintouch.blueprints console application to generate blueprint documents form assemblies
  • XDoc
    • BREAKING CHANGE: replaced 'GetContents()' with 'AsText' (use '??' operator to provide default value)
    • BREAKING CHANGE: replaced 'GetContentsAsBool()' with 'AsBool' (use '??' operator to provide default value)
    • BREAKING CHANGE: replaced 'GetContentsAsDate()' with 'AsDate' (use '??' operator to provide default value)
    • BREAKING CHANGE: replaced 'GetContentsAsDouble()' with 'AsDouble' (use '??' operator to provide default value)
    • BREAKING CHANGE: replaced 'GetContentsAsInt()' with 'AsInt' (use '??' operator to provide default value)
    • BREAKING CHANGE: replaced 'GetContentsAsLong()' with 'AsLong' (use '??' operator to provide default value)
    • BREAKING CHANGE: replaced 'GetContentsAsUri()' with 'AsUri' (use '??' operator to provide default value)
    • BREAKING CHANGE: renamed 'With(NameValueCollection)' to 'WithQueryValues(NameValueCollection)'
    • fixed DateTime format for attributes
    • fixed DateTime converstion from XML to Versit, and back
    • added 'Value(byte[])' which added base64 encoded byte array
    • added 'FromData()' methods to create xdocs from a data source (columns beginning with '@' are returned as attributes)
    • changed XmlCachedResolver to bypass a mono bug (all relative uris are considered equal)
    • added 'Elements' property to loop over nested elements in current XDoc
    • 'ReplaceValue()' now works for text nodes too
    • added 'RemoveAttr()' method
  • XMessage
    • BREAKING CHANGE: constructor no longer requires the 'readBody' parameter
  • XUri
    • BREAKING CHANGE: removed 'NormalizedSegments'; use 'GetSegments(UriPathFormat.Normalized)' instead
    • BREAKING CHANGE: renamed methods/properties to match those of Plug
    • BREAKING CHANGE: made generic version 'GetParam<>()'
    • uri parsing is now RFC3986 compliant for absolute paths with a host (parsing is strict and will throw exceptions when input is invalid)
    • added support for segments parameters (e.g. /foo;bar/)
    • added support for trailing slash in uri (http://localhost/foo/)
    • added 'TryParse' method that does not return the parsed result (useful for checking if something parses like a URI)
Tag page
You must login to post a comment.