View Javadoc

1   package com.bradmcevoy.http.http11;
2   
3   import com.bradmcevoy.http.GetableResource;
4   import com.bradmcevoy.http.Range;
5   import com.bradmcevoy.http.Request;
6   import com.bradmcevoy.http.Resource;
7   import com.bradmcevoy.http.Response;
8   import com.bradmcevoy.http.Response.Status;
9   import com.bradmcevoy.http.exceptions.BadRequestException;
10  import com.bradmcevoy.http.exceptions.NotAuthorizedException;
11  import java.util.List;
12  import java.util.Map;
13  
14  /**
15   *  The ResponseHandler should handle all responses back to the client.
16   *
17   *  Methods are provided for each significant response circumstance with respect
18   *  to Milton.
19   *
20   *  The intention is that implementations may be provided or customised to support
21   *  per implementation requirements for client compatibility.
22   *
23   *  In other words, hacks to support particular client programs should be implemented
24   *  here
25   *
26   *  Extends ETagGenerator to facillitate wrapping, although generatlly it will
27   *  contain an instance and delegate to it.
28   */
29  public interface Http11ResponseHandler extends ETagGenerator {
30      /**
31       * Invoked when an operation is successful, but there is no content, and
32       * there is nothing more specific to return (E.g. created)
33       *
34       * For example, as a result of a PUT when a resouce has been updated)
35       *
36       * @param resource
37       * @param response
38       * @param request
39       */
40      void respondNoContent(Resource resource, Response response,Request request);
41      void respondContent(Resource resource, Response response, Request request, Map<String,String> params) throws NotAuthorizedException, BadRequestException;
42      void respondPartialContent(GetableResource resource, Response response, Request request, Map<String,String> params, Range range) throws NotAuthorizedException, BadRequestException;
43      void respondCreated(Resource resource, Response response, Request request);
44      void respondUnauthorised(Resource resource, Response response, Request request);
45      void respondMethodNotImplemented(Resource resource, Response response, Request request);
46      void respondMethodNotAllowed(Resource res, Response response, Request request);
47      void respondConflict(Resource resource, Response response, Request request, String message);
48      void respondRedirect(Response response, Request request, String redirectUrl);
49      void respondNotModified(GetableResource resource, Response response, Request request);
50      void respondNotFound(Response response, Request request);
51      void respondWithOptions(Resource resource, Response response,Request request, List<String> methodsAllowed);
52  
53      /**
54       * Generate a HEAD response
55       *
56       * @param resource
57       * @param response
58       * @param request
59       */
60      void respondHead( Resource resource, Response response, Request request );
61  
62      /**
63       * Response with a 417
64       */
65      void respondExpectationFailed(Response response, Request request);
66  
67      /**
68       * Respond with a 400 status
69       *
70       * @param resource
71       * @param response
72       * @param request
73       * @param params
74       */
75      void respondBadRequest( Resource resource, Response response, Request request);
76  
77  
78      /**
79       * Respond with a 403 status - forbidden
80       *
81       * @param resource
82       * @param response
83       * @param request
84       * @param params
85       */
86      void respondForbidden( Resource resource, Response response, Request request);
87  
88  
89      /**
90       * Called when a delete has failed, including the failure status.
91       *
92       * Note that webdav implementations will respond with a multisttus, while
93       * http 1.1 implementations will simply set the response status
94       *
95       * @param request
96       * @param response
97       * @param resource - the resource which could not be deleted
98       * @param status - the status which has caused the delete to fail.
99       */
100     void respondDeleteFailed( Request request, Response response, Resource resource, Status status );
101 
102     /**
103      * Usually a 500 error. Some error occured processing the request. Note
104      * that you might not be able to assume that this will generate all 500
105      * errors since a runtime exception might result in code outside of milton's
106      * control generating the 500 response.
107      * 
108      * @param request
109      * @param response
110      * @param reason
111      */
112     void respondServerError( Request request, Response response, String reason);
113 
114 
115     
116 }