org.apache.felix.http.whiteboard.internal.manager
Class DefaultHttpContext

java.lang.Object
  extended by org.apache.felix.http.whiteboard.internal.manager.DefaultHttpContext
All Implemented Interfaces:
HttpContext

public final class DefaultHttpContext
extends Object
implements HttpContext


Field Summary
 
Fields inherited from interface org.osgi.service.http.HttpContext
AUTHENTICATION_TYPE, AUTHORIZATION, REMOTE_USER
 
Constructor Summary
DefaultHttpContext(Bundle bundle)
           
 
Method Summary
 String getMimeType(String name)
          Maps a name to a MIME type.
 URL getResource(String name)
          Maps a resource name to a URL.
 boolean handleSecurity(HttpServletRequest req, HttpServletResponse res)
          Handles security for the specified request.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DefaultHttpContext

public DefaultHttpContext(Bundle bundle)
Method Detail

getMimeType

public String getMimeType(String name)
Description copied from interface: HttpContext
Maps a name to a MIME type. Called by the Http Service to determine the MIME type for the name. For servlet registrations, the Http Service will call this method to support the ServletContext method getMimeType. For resource registrations, the Http Service will call this method to determine the MIME type for the Content-Type header in the response.

Specified by:
getMimeType in interface HttpContext
Parameters:
name - determine the MIME type for this name.
Returns:
MIME type (e.g. text/html) of the name or null to indicate that the Http Service should determine the MIME type itself.

getResource

public URL getResource(String name)
Description copied from interface: HttpContext
Maps a resource name to a URL.

Called by the Http Service to map a resource name to a URL. For servlet registrations, Http Service will call this method to support the ServletContext methods getResource and getResourceAsStream. For resource registrations, Http Service will call this method to locate the named resource. The context can control from where resources come. For example, the resource can be mapped to a file in the bundle's persistent storage area via bundleContext.getDataFile(name).toURL() or to a resource in the context's bundle via getClass().getResource(name)

Specified by:
getResource in interface HttpContext
Parameters:
name - the name of the requested resource
Returns:
URL that Http Service can use to read the resource or null if the resource does not exist.

handleSecurity

public boolean handleSecurity(HttpServletRequest req,
                              HttpServletResponse res)
Description copied from interface: HttpContext
Handles security for the specified request.

The Http Service calls this method prior to servicing the specified request. This method controls whether the request is processed in the normal manner or an error is returned.

If the request requires authentication and the Authorization header in the request is missing or not acceptable, then this method should set the WWW-Authenticate header in the response object, set the status in the response object to Unauthorized(401) and return false. See also RFC 2617: HTTP Authentication: Basic and Digest Access Authentication (available at http://www.ietf.org/rfc/rfc2617.txt).

If the request requires a secure connection and the getScheme method in the request does not return 'https' or some other acceptable secure protocol, then this method should set the status in the response object to Forbidden(403) and return false.

When this method returns false, the Http Service will send the response back to the client, thereby completing the request. When this method returns true, the Http Service will proceed with servicing the request.

If the specified request has been authenticated, this method must set the HttpContext.AUTHENTICATION_TYPE request attribute to the type of authentication used, and the HttpContext.REMOTE_USER request attribute to the remote user (request attributes are set using the setAttribute method on the request). If this method does not perform any authentication, it must not set these attributes.

If the authenticated user is also authorized to access certain resources, this method must set the HttpContext.AUTHORIZATION request attribute to the Authorization object obtained from the org.osgi.service.useradmin.UserAdmin service.

The servlet responsible for servicing the specified request determines the authentication type and remote user by calling the getAuthType and getRemoteUser methods, respectively, on the request.

Specified by:
handleSecurity in interface HttpContext
Parameters:
req - the HTTP request
res - the HTTP response
Returns:
true if the request should be serviced, false if the request should not be serviced and Http Service will send the response back to the client.


Copyright © 2011 Apache Software Foundation. All Rights Reserved.