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. 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.
 - 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;
MANIFEST_NAME 
  
 
static const std::string MANIFEST_NAME;