Library: OSP/Web
Package: Web
Header: Poco/OSP/Web/WebServerExtensionPoint.h
Description
WebServerExtension handles two extensions points. To register a directory in the Webserver:
<extension point="osp.web.server.directory" path="URI" resource="dir inside bundle" allowSpecialization="none|owner|all" index="index.html"/>
To register a RequestHandlerFactory for a given server uri/set of uris:
<extension point="osp.web.server.requesthandler" path="URI" class="MyRequestHandlerFactory" library="MyLib"/>
Note that the extension points are automatically removed if a bundle is stopped.
The following attributes can be specified for both extension points:
- path: The URI on the server to which the resource or handler is mapped.
- description: User-readable description of resource or handler.
- secure: If "true", require a secure (HTTPS) connection to access the resource.
- realm: Specify authentication realm (together with permission).
- permission: Specify the necessary access permission for this resource. Unless a session name is specified, HTTP Basic Authentication is used to obtain the user's user name and password, which are then checked against the specified permission using the authorization service.
- session: Specify the name of the session used for session-based authentication instead of HTTP Basic Authentication. If specified together with a permission, the session with the specified name is obtained from the WebSessionService, and the current users's name is obtained from the session's "username" attribute, which must be a std::string.
- hidden: If "true", path is not included by WebServerDispatcher::listVirtualPaths().
The following attributes can be specified for "osp.web.server.directory":
- resource: Specify a directory within the bundle where the HTML, image and other files are located.
- index: Specify the name of the default document (defaults to "index.html").
- cache: If "true", files in this directory can be cached. Defaults to "true". Set to "false" to disable caching.
- allowSpecialization: Using the allowSpecialization attribute, a bundle can specify whether other bundles can register themselves for subdirectories of the directory specified in path. The following values are supported: none: it is impossible to map resources or request handlers to subdirectories; owner: only this bundle can map resources or request handlers to subdirectories; all: any bundle can map resources or request handlers to subdirectories.
The following attributes can be specified for "osp.web.server.requesthandler":
- pattern: A regular expression for matching requests to the handler. If specified, no path attribute should be specified. If both the pattern and path attributes are given, path is ignored. Paths containing a pattern are not included by WebServerDispatcher::listVirtualPaths().
- methods: A comma-separated list of HTTP request methods ("GET", "POST", etc.") supported by the handler. If not specified, all methods are passed to the handler.
- class: The class name of the request handler factory.
- library: The name of the shared library containing the request handler factory.
Inheritance
Direct Base Classes: Poco::OSP::ExtensionPoint
All Base Classes: Poco::OSP::ExtensionPoint, Poco::RefCountedObject
Member Summary
Member Functions: handleCommon, handleDirectory, handleExtension, handleRequestHandler, onBundleStopped
Inherited Functions: duplicate, handleExtension, referenceCount, release, removeExtension
Constructors
WebServerExtensionPoint
WebServerExtensionPoint(
BundleContext::Ptr pContext,
WebServerDispatcher * pDispatcher
);
Creates the WebServerExtension. Expects a not null pointer to the Web which must be valid during the whole life-time of the extension object
Destructor
~WebServerExtensionPoint
Destroys the WebServerExtension.
Member Functions
handleExtension
void handleExtension(
Bundle::ConstPtr pBundle,
Poco::XML::Element * pExtensionElem
);
handleCommon
void handleCommon(
Bundle::ConstPtr pBundle,
Poco::XML::Element * pExtensionElem,
WebServerDispatcher::VirtualPath & vPath
);
handleDirectory
void handleDirectory(
Bundle::ConstPtr pBundle,
Poco::XML::Element * pExtensionElem
);
handleRequestHandler
void handleRequestHandler(
Bundle::ConstPtr pBundle,
Poco::XML::Element * pExtensionElem
);
onBundleStopped
void onBundleStopped(
const void * pSender,
BundleEvent & ev
);
When a bundle is stopped, all of its request handlers and mappings are automatically disabled.
Variables
EXTPOINT_DIRECTORY
static const std::string EXTPOINT_DIRECTORY;
EXTPOINT_HANDLER
static const std::string EXTPOINT_HANDLER;
ATTR_ALLOWSPECIALIZATION
static const std::string ATTR_ALLOWSPECIALIZATION;
ATTR_CACHE
static const std::string ATTR_CACHE;
ATTR_CLASS
static const std::string ATTR_CLASS;
ATTR_DESCRIPTION
static const std::string ATTR_DESCRIPTION;
ATTR_HIDDEN
static const std::string ATTR_HIDDEN;
ATTR_INDEX
static const std::string ATTR_INDEX;
ATTR_LIBRARY
static const std::string ATTR_LIBRARY;
ATTR_METHODS
static const std::string ATTR_METHODS;
ATTR_PATH
static const std::string ATTR_PATH;
ATTR_PATTERN
static const std::string ATTR_PATTERN;
ATTR_PERMISSION
static const std::string ATTR_PERMISSION;
ATTR_REALM
static const std::string ATTR_REALM;
ATTR_RESOURCE
static const std::string ATTR_RESOURCE;
ATTR_SECURE
static const std::string ATTR_SECURE;
ATTR_SESSION
static const std::string ATTR_SESSION;
MANIFEST_NAME
static const std::string MANIFEST_NAME;