Daraja HTTP Framework 3.4.0-SNAPSHOT
HTTP server framework for Object Pascal
Loading...
Searching...
No Matches
TdjWebAppContext Class Reference

The context handler class used by applications. More...

Inheritance diagram for TdjWebAppContext:
TdjWebComponentContextHandler TdjContextHandler TdjHandlerWrapper TdjAbstractHandlerContainer

Public Member Functions

TdjWebComponentHolder Add (TdjWebComponentClass ComponentClass, const string UrlPattern)
 Add a Web Component.
TdjWebFilterHolder Add (TdjWebFilterClass FilterClass, const string UrlPattern)
 Add a Web Filter, specifying a WebFilter class.
 AddHandler (const IHandler Handler)
 Add a handler to the container.
TdjWebComponentHolder AddWebComponent (TdjWebComponentClass ComponentClass, const string UrlPattern)
 Add a Web Component.
TdjWebFilterHolder AddWebFilter (TdjWebFilterClass FilterClass, const string UrlPattern)
 Add a Web Filter, specifying a WebFilter class.
IContext GetCurrentContext ()
 The internal IContext field.
 RemoveHandler (const IHandler Handler)
 SetInitParameter (const string Key, const string Value)
 Set initialization parameter.

Public Attributes

TStrings ConnectorNames
string ContextPath
IHandler ErrorHandler
 Optional handler invoked, in place of the framework's default generic 500 response, when a Web Component or Web Filter registered in this context raises an unhandled exception.
IHandler Handler

Protected Member Functions

Boolean ContextMatches (const string ConnectorName, const string Target)
 Check if the Document matches this context.
 DoHandle (const string Target, TdjServerContext Context, TdjRequest Request, TdjResponse Response)
 DoStart ()
 Start the handler.
 DoStop ()
 Stop the handler.
TIdHTTPSession GetSession (TdjServerContext Context, TdjRequest Request, TdjResponse Response, const Boolean Create)
 Get a HTTP session.
 Handle (const string Target, TdjServerContext Context, TdjRequest Request, TdjResponse Response)
 SetStrictStart (const Boolean Value)
string ToConnectorName (TdjServerContext Context)
 Creates connector name in the form 'host:port'.

Detailed Description

The context handler class used by applications.

It is currently a straight alias of TdjWebComponentContextHandler, kept as the documented public name and an extension point for web-application specific behaviour.

Member Function Documentation

◆ Add() [1/2]

TdjWebComponentHolder TdjWebComponentContextHandler::Add ( TdjWebComponentClass ComponentClass,
const string UrlPattern )
inherited

Add a Web Component.

Parameters
ComponentClassWebComponent class
UrlPatternpath specification
Returns
the Web Component holder, which can be used for further configuration.
Exceptions
EDarajaMappingExceptionif the Web Component can not be added

References TdjWebComponentContextHandler().

Referenced by TdjWebComponentContextHandler(), ~TdjWebComponentContextHandler(), and AddWebComponent().

◆ Add() [2/2]

TdjWebFilterHolder TdjWebComponentContextHandler::Add ( TdjWebFilterClass FilterClass,
const string UrlPattern )
inherited

Add a Web Filter, specifying a WebFilter class.

Parameters
FilterClassWebFilter class
UrlPatternpath specification
Returns
the Web Filter holder, which can be used for further configuration.
Exceptions
Exceptionif the WebFilter can not be added

References TdjWebComponentContextHandler().

◆ AddHandler()

TdjHandlerWrapper::AddHandler ( const IHandler Handler)
inherited

Add a handler to the container.

This implementation of AddHandler calls SetHandler with the passed handler. If this HandlerWrapper had a previous wrapped handler, then it is passed to a call to AddHandler on the passed handler.

Parameters
Handlerthe handler to be added

Referenced by TdjServer::Add(), TdjWebComponentContextHandler::AddWebFilter(), and GetSession().

◆ AddWebComponent()

TdjWebComponentHolder TdjWebComponentContextHandler::AddWebComponent ( TdjWebComponentClass ComponentClass,
const string UrlPattern )
inherited

Add a Web Component.

Ownership: the returned holder belongs to the context. Use it only for further configuration (init parameters etc.); do not free it or keep it past the lifetime of the context.

Parameters
ComponentClassWebComponent class
UrlPatternpath specification
Returns
the Web Component holder, which can be used for further configuration.
Exceptions
EDarajaMappingExceptionif the Web Component can not be added

References Add().

◆ AddWebFilter()

TdjWebFilterHolder TdjWebComponentContextHandler::AddWebFilter ( TdjWebFilterClass FilterClass,
const string UrlPattern )
inherited

Add a Web Filter, specifying a WebFilter class.

Ownership: the returned holder belongs to the context. Use it only for further configuration; do not free it or keep it past the lifetime of the context. If the filter cannot be added the holder is freed before the exception propagates.

Parameters
FilterClassWebFilter class
UrlPatternpath specification
Returns
the Web Filter holder, which can be used for further configuration.
Exceptions
Exceptionif the WebFilter can not be added

References TdjHandlerWrapper::AddHandler().

◆ ContextMatches()

Boolean TdjContextHandler::ContextMatches ( const string ConnectorName,
const string Target )
protectedinherited

Check if the Document matches this context.

A named context matches both its bare path (no trailing slash, e.g. "/app" for a context registered as "app") and any path below it ("/app/...") – the same exact-match-or-prefix-plus-slash rule used by the Servlet spec for request path matching, and already mirrored by TdjPathMap for "/foo/*" patterns matching bare "/foo". See #544.

Parameters
ConnectorNamethe connector name (like 'host:port'
Targetthe target URL document
Returns
True if the context matches the connector name and target URL document

◆ DoHandle()

TdjWebComponentContextHandler::DoHandle ( const string Target,
TdjServerContext Context,
TdjRequest Request,
TdjResponse Response )
protectedinherited
Parameters
TargetRequest target
ContextHTTP server context
RequestHTTP request
ResponseHTTP response

◆ DoStart()

TdjContextHandler::DoStart ( )
protectedinherited

Start the handler.

See also
TdjLifeCycle

◆ DoStop()

TdjContextHandler::DoStop ( )
protectedinherited

Stop the handler.

See also
TdjLifeCycle

◆ GetCurrentContext()

IContext TdjContextHandler::GetCurrentContext ( )
inherited

The internal IContext field.

◆ GetSession()

TIdHTTPSession TdjHandlerWrapper::GetSession ( TdjServerContext Context,
TdjRequest Request,
TdjResponse Response,
const Boolean Create )
protectedinherited

Get a HTTP session.

References AddHandler(), and Handler.

◆ Handle()

TdjWebComponentContextHandler::Handle ( const string Target,
TdjServerContext Context,
TdjRequest Request,
TdjResponse Response )
protectedinherited

◆ RemoveHandler()

TdjHandlerWrapper::RemoveHandler ( const IHandler Handler)
inherited

◆ SetInitParameter()

TdjContextHandler::SetInitParameter ( const string Key,
const string Value )
inherited

Set initialization parameter.

Parameters
Keyinit parameter name (case-sensitive)
Valueinit parameter value
Exceptions
EDarajaConfigExceptionif the key is already set

◆ SetStrictStart()

TdjWebComponentContextHandler::SetStrictStart ( const Boolean Value)
protectedinherited

◆ ToConnectorName()

string TdjContextHandler::ToConnectorName ( TdjServerContext Context)
protectedinherited

Creates connector name in the form 'host:port'.

Returns
connector name

Member Data Documentation

◆ ConnectorNames

TStrings TdjContextHandler::ConnectorNames
inherited

◆ ContextPath

string TdjContextHandler::ContextPath
inherited

◆ ErrorHandler

IHandler TdjContextHandler::ErrorHandler
inherited

Optional handler invoked, in place of the framework's default generic 500 response, when a Web Component or Web Filter registered in this context raises an unhandled exception.

The handler receives the same (Target, Context, Request, Response) as any other IHandler; before it is called, Context (a TdjServerContext) carries LastErrorStatusCode/LastErrorExceptionClass/ LastErrorExceptionMessage describing the failure, so the handler can tailor its response. It is fully responsible for the response – Response.ResponseNo already defaults to 500, but the handler may change it.

If the handler itself raises, or none is set, the framework's default generic 500 response (introduced in #520/#523) is used instead.

See also
TdjServerContext.LastErrorStatusCode

◆ Handler

IHandler TdjHandlerWrapper::Handler
inherited

Referenced by DoStart(), and GetSession().