Package io.milton.resource
Interface GetableResource
- All Superinterfaces:
Resource
- All Known Subinterfaces:
BufferingControlResource,FileResource,FolderResource,PostableResource
webDAV GET and HEAD
-
Method Summary
Modifier and TypeMethodDescriptionThe length of the content in this resource.getContentType(String accepts) Given a comma separated listed of preferred content types acceptable for a client, return one content type which is the best.getMaxAgeSeconds(Auth auth) How many seconds to allow the content to be cached for, or null if caching is not allowed The provided auth object allows this method to determine an appropriate caching time depending on authenticated context.voidsendContent(OutputStream out, Range range, Map<String, String> params, String contentType) Send the resource's content using the given output stream.Methods inherited from interface io.milton.resource.Resource
authenticate, authorise, checkRedirect, getModifiedDate, getName, getRealm, getUniqueId
-
Method Details
-
sendContent
void sendContent(OutputStream out, Range range, Map<String, String> params, String contentType) throws IOException, io.milton.http.exceptions.NotAuthorizedException, io.milton.http.exceptions.BadRequestException, io.milton.http.exceptions.NotFoundExceptionSend the resource's content using the given output stream. Implementations should assume that bytes are being physically transmitted and that headers have already been committed, although this might not be the case with all web containers. This method will be used to serve GET requests, and also to generate content following POST requests (if they have not redirected) The Range argument is not-null for partial content requests. In this case implementations should (but are not required) to only send the data range requested. The contentType argument is that which was resolved by negotiation in the getContentType method. HTTP allows a given resource to have multiple representations on the same URL. For example, a data series could be retrieved as a chart as SVG, PNG, JPEG, or as text as CSV or XML. When the user agent requests the resource is specified what content types it can accept. These are matched against those that can be provided by the server and a preferred representation is selected. That contentType is set in the response header and is provided here so that the resource implementation can render itself appropriately.- Parameters:
out- - the output stream to send the content torange- - null for normal GET's, not null for partial GET's. May be ignoredparams- - request parameterscontentType- - the contentType selected by negotiation- Throws:
IOException- - if there is an exception writing content to the output stream. This indicates that the client has disconnected (as frequently occurs with http transfers). DO NOT throw an IOException if there was an internal error generating the response (eg if reading from a database)com.bradmcevoy.http.exceptions.NotAuthorizedExceptionio.milton.http.exceptions.NotAuthorizedExceptionio.milton.http.exceptions.BadRequestExceptionio.milton.http.exceptions.NotFoundException
-
getMaxAgeSeconds
How many seconds to allow the content to be cached for, or null if caching is not allowed The provided auth object allows this method to determine an appropriate caching time depending on authenticated context. For example, in a CMS in might be appropriate to have a short expiry time for logged in users who might be editing content, as opposed to non-logged in users who are just viewing the site. -
getContentType
Given a comma separated listed of preferred content types acceptable for a client, return one content type which is the best. Returns the most preferred MIME type. E.g. text/html, image/jpeg, etc Must be IANA registered accepts is the accepts header. Eg: Accept: text/*, text/html, text/html;level=1 See - http://www.iana.org/assignments/media-types/ for a list of content types See - http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html for details about the accept header See here for a fun discussion of using content type and accepts for XHTML - http://stackoverflow.com/questions/348736/is-writing-self-closing-tags-for-elements-not-traditionally-empty-bad-practice If you can't handle accepts interpretation, just return a single content type - E.g. text/html But typically you should do something like this:String mime = ContentTypeUtils.findContentTypes( this.file ); return ContentTypeUtils.findAcceptableContentType( mime, preferredList );
- See Also:
-
com.bradmcevoy.common.ContentTypeUtils
-
getContentLength
Long getContentLength()The length of the content in this resource. If unknown return NULL
-