com.bradmcevoy.http.http11
Class DefaultHttp11ResponseHandler

java.lang.Object
  extended by com.bradmcevoy.http.http11.DefaultHttp11ResponseHandler
All Implemented Interfaces:
ETagGenerator, Http11ResponseHandler

public class DefaultHttp11ResponseHandler
extends java.lang.Object
implements Http11ResponseHandler


Nested Class Summary
static class DefaultHttp11ResponseHandler.BUFFERING
           
 
Field Summary
static java.lang.String CONFLICT_HTML
           
static java.lang.String METHOD_NOT_ALLOWED_HTML
           
static java.lang.String METHOD_NOT_IMPLEMENTED_HTML
           
static java.lang.String NOT_AUTHORISED_HTML
           
static java.lang.String NOT_FOUND_HTML
           
static java.lang.String SERVER_ERROR_HTML
           
 
Constructor Summary
DefaultHttp11ResponseHandler(AuthenticationService authenticationService)
           
DefaultHttp11ResponseHandler(AuthenticationService authenticationService, ETagGenerator eTagGenerator)
           
 
Method Summary
 java.lang.String generateEtag(Resource r)
          ETag's serve to identify a particular version of a particular resource.
 AuthenticationService getAuthenticationService()
           
 DefaultHttp11ResponseHandler.BUFFERING getBuffering()
           
 CacheControlHelper getCacheControlHelper()
          Defaults to com.bradmcevoy.http.http11.DefaultCacheControlHelper
 int getMaxMemorySize()
          Maximum size of data to hold in memory per request when buffering output data.
protected  void output(Response response, java.lang.String s)
           
protected  java.io.OutputStream outputStreamForResponse(Request request, Response response, GetableResource resource)
           
 void respondBadRequest(Resource resource, Response response, Request request)
          Respond with a 400 status
 void respondConflict(Resource resource, Response response, Request request, java.lang.String message)
           
 void respondContent(Resource resource, Response response, Request request, java.util.Map<java.lang.String,java.lang.String> params)
           
 void respondCreated(Resource resource, Response response, Request request)
           
 void respondDeleteFailed(Request request, Response response, Resource resource, Response.Status status)
          Called when a delete has failed, including the failure status.
 void respondExpectationFailed(Response response, Request request)
          Response with a 417
 void respondForbidden(Resource resource, Response response, Request request)
          Respond with a 403 status - forbidden
 void respondHead(Resource resource, Response response, Request request)
          Generate a HEAD response
 void respondMethodNotAllowed(Resource res, Response response, Request request)
           
 void respondMethodNotImplemented(Resource resource, Response response, Request request)
           
 void respondNoContent(Resource resource, Response response, Request request)
          Invoked when an operation is successful, but there is no content, and there is nothing more specific to return (E.g.
 void respondNotFound(Response response, Request request)
           
 void respondNotModified(GetableResource resource, Response response, Request request)
           
 void respondPartialContent(GetableResource resource, Response response, Request request, java.util.Map<java.lang.String,java.lang.String> params, Range range)
           
 void respondRedirect(Response response, Request request, java.lang.String redirectUrl)
           
 void respondServerError(Request request, Response response, java.lang.String reason)
          Usually a 500 error.
 void respondUnauthorised(Resource resource, Response response, Request request)
           
 void respondWithOptions(Resource resource, Response response, Request request, java.util.List<java.lang.String> methodsAllowed)
           
protected  void sendContent(Request request, Response response, GetableResource resource, java.util.Map<java.lang.String,java.lang.String> params, Range range, java.lang.String contentType)
           
 void setBuffering(DefaultHttp11ResponseHandler.BUFFERING buffering)
           
 void setCacheControlHelper(CacheControlHelper cacheControlHelper)
           
 void setMaxMemorySize(int maxMemorySize)
           
static void setModifiedDate(Response response, Resource resource, Auth auth)
          The modified date response header is used by the client for content caching.
protected  void setRespondContentCommonHeaders(Response response, Resource resource, Auth auth)
           
protected  void setRespondContentCommonHeaders(Response response, Resource resource, Response.Status status, Auth auth)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

METHOD_NOT_ALLOWED_HTML

public static final java.lang.String METHOD_NOT_ALLOWED_HTML
See Also:
Constant Field Values

NOT_FOUND_HTML

public static final java.lang.String NOT_FOUND_HTML
See Also:
Constant Field Values

METHOD_NOT_IMPLEMENTED_HTML

public static final java.lang.String METHOD_NOT_IMPLEMENTED_HTML
See Also:
Constant Field Values

CONFLICT_HTML

public static final java.lang.String CONFLICT_HTML
See Also:
Constant Field Values

SERVER_ERROR_HTML

public static final java.lang.String SERVER_ERROR_HTML
See Also:
Constant Field Values

NOT_AUTHORISED_HTML

public static final java.lang.String NOT_AUTHORISED_HTML
See Also:
Constant Field Values
Constructor Detail

DefaultHttp11ResponseHandler

public DefaultHttp11ResponseHandler(AuthenticationService authenticationService)

DefaultHttp11ResponseHandler

public DefaultHttp11ResponseHandler(AuthenticationService authenticationService,
                                    ETagGenerator eTagGenerator)
Method Detail

getCacheControlHelper

public CacheControlHelper getCacheControlHelper()
Defaults to com.bradmcevoy.http.http11.DefaultCacheControlHelper

Returns:

setCacheControlHelper

public void setCacheControlHelper(CacheControlHelper cacheControlHelper)

generateEtag

public java.lang.String generateEtag(Resource r)
Description copied from interface: ETagGenerator
ETag's serve to identify a particular version of a particular resource. If the resource changes, or is replaced, then this value should change

Specified by:
generateEtag in interface ETagGenerator
Parameters:
r - - the resource to generate the ETag for
Returns:
- an ETag which uniquely identifies this version of this resource

respondWithOptions

public void respondWithOptions(Resource resource,
                               Response response,
                               Request request,
                               java.util.List<java.lang.String> methodsAllowed)
Specified by:
respondWithOptions in interface Http11ResponseHandler

respondNotFound

public void respondNotFound(Response response,
                            Request request)
Specified by:
respondNotFound in interface Http11ResponseHandler

respondUnauthorised

public void respondUnauthorised(Resource resource,
                                Response response,
                                Request request)
Specified by:
respondUnauthorised in interface Http11ResponseHandler

respondMethodNotImplemented

public void respondMethodNotImplemented(Resource resource,
                                        Response response,
                                        Request request)
Specified by:
respondMethodNotImplemented in interface Http11ResponseHandler

respondMethodNotAllowed

public void respondMethodNotAllowed(Resource res,
                                    Response response,
                                    Request request)
Specified by:
respondMethodNotAllowed in interface Http11ResponseHandler

respondConflict

public void respondConflict(Resource resource,
                            Response response,
                            Request request,
                            java.lang.String message)
Specified by:
respondConflict in interface Http11ResponseHandler
Parameters:
resource -
response -
message - - optional message to output in the body content

respondRedirect

public void respondRedirect(Response response,
                            Request request,
                            java.lang.String redirectUrl)
Specified by:
respondRedirect in interface Http11ResponseHandler

respondExpectationFailed

public void respondExpectationFailed(Response response,
                                     Request request)
Description copied from interface: Http11ResponseHandler
Response with a 417

Specified by:
respondExpectationFailed in interface Http11ResponseHandler

respondCreated

public void respondCreated(Resource resource,
                           Response response,
                           Request request)
Specified by:
respondCreated in interface Http11ResponseHandler

respondNoContent

public void respondNoContent(Resource resource,
                             Response response,
                             Request request)
Description copied from interface: Http11ResponseHandler
Invoked when an operation is successful, but there is no content, and there is nothing more specific to return (E.g. created) For example, as a result of a PUT when a resouce has been updated)

Specified by:
respondNoContent in interface Http11ResponseHandler

respondPartialContent

public void respondPartialContent(GetableResource resource,
                                  Response response,
                                  Request request,
                                  java.util.Map<java.lang.String,java.lang.String> params,
                                  Range range)
                           throws NotAuthorizedException,
                                  BadRequestException
Specified by:
respondPartialContent in interface Http11ResponseHandler
Throws:
NotAuthorizedException
BadRequestException

respondHead

public void respondHead(Resource resource,
                        Response response,
                        Request request)
Description copied from interface: Http11ResponseHandler
Generate a HEAD response

Specified by:
respondHead in interface Http11ResponseHandler

respondContent

public void respondContent(Resource resource,
                           Response response,
                           Request request,
                           java.util.Map<java.lang.String,java.lang.String> params)
                    throws NotAuthorizedException,
                           BadRequestException
Specified by:
respondContent in interface Http11ResponseHandler
Throws:
NotAuthorizedException
BadRequestException

respondNotModified

public void respondNotModified(GetableResource resource,
                               Response response,
                               Request request)
Specified by:
respondNotModified in interface Http11ResponseHandler

sendContent

protected void sendContent(Request request,
                           Response response,
                           GetableResource resource,
                           java.util.Map<java.lang.String,java.lang.String> params,
                           Range range,
                           java.lang.String contentType)
                    throws NotAuthorizedException,
                           BadRequestException
Throws:
NotAuthorizedException
BadRequestException

outputStreamForResponse

protected java.io.OutputStream outputStreamForResponse(Request request,
                                                       Response response,
                                                       GetableResource resource)

output

protected void output(Response response,
                      java.lang.String s)

setRespondContentCommonHeaders

protected void setRespondContentCommonHeaders(Response response,
                                              Resource resource,
                                              Auth auth)

setRespondContentCommonHeaders

protected void setRespondContentCommonHeaders(Response response,
                                              Resource resource,
                                              Response.Status status,
                                              Auth auth)

setModifiedDate

public static void setModifiedDate(Response response,
                                   Resource resource,
                                   Auth auth)
The modified date response header is used by the client for content caching. It seems obvious that if we have a modified date on the resource we should set it. BUT, because of the interaction with max-age we should always set it to the current date if we have max-age The problem, is that if we find that a condition GET has an expired mod-date (based on maxAge) then we want to respond with content (even if our mod-date hasnt changed. But if we use the actual mod-date in that case, then the browser will continue to use the old mod-date, so will forever more respond with content. So we send a mod-date of now to ensure that future requests will be given a 304 not modified.*

Parameters:
response -
resource -
auth -

respondBadRequest

public void respondBadRequest(Resource resource,
                              Response response,
                              Request request)
Description copied from interface: Http11ResponseHandler
Respond with a 400 status

Specified by:
respondBadRequest in interface Http11ResponseHandler

respondForbidden

public void respondForbidden(Resource resource,
                             Response response,
                             Request request)
Description copied from interface: Http11ResponseHandler
Respond with a 403 status - forbidden

Specified by:
respondForbidden in interface Http11ResponseHandler

respondDeleteFailed

public void respondDeleteFailed(Request request,
                                Response response,
                                Resource resource,
                                Response.Status status)
Description copied from interface: Http11ResponseHandler
Called when a delete has failed, including the failure status. Note that webdav implementations will respond with a multisttus, while http 1.1 implementations will simply set the response status

Specified by:
respondDeleteFailed in interface Http11ResponseHandler
resource - - the resource which could not be deleted
status - - the status which has caused the delete to fail.

getAuthenticationService

public AuthenticationService getAuthenticationService()

respondServerError

public void respondServerError(Request request,
                               Response response,
                               java.lang.String reason)
Description copied from interface: Http11ResponseHandler
Usually a 500 error. Some error occured processing the request. Note that you might not be able to assume that this will generate all 500 errors since a runtime exception might result in code outside of milton's control generating the 500 response.

Specified by:
respondServerError in interface Http11ResponseHandler

getMaxMemorySize

public int getMaxMemorySize()
Maximum size of data to hold in memory per request when buffering output data.

Returns:

setMaxMemorySize

public void setMaxMemorySize(int maxMemorySize)

getBuffering

public DefaultHttp11ResponseHandler.BUFFERING getBuffering()

setBuffering

public void setBuffering(DefaultHttp11ResponseHandler.BUFFERING buffering)


Copyright © 2011. All Rights Reserved.