I just saw that ResourceStreamerImpl.java checks modification time and does
...

  response.sendError(HttpServletResponse.SC_NOT_MODIFIED, "");

Is there a way for  me to achieve the same from my onActivate() method
below ...

I.e. how do I return a 304 when my image hasn't been changed according to
the
I*f-Modified-Since* header that I receive.

Or do I have to it in some other way .. I guess so!

2012/2/26 Howard Lewis Ship <hls...@gmail.com>

> Do the images ever change?  If not, you can use the same kind of
> approach Tapestry uses for assets: incorporate a version number (or
> SHA1 checksum) into the path, and set the headers that ensure caching
> on the client (I'd have to check the Tapestry code for the exact ones
> that work).
>
> On Sat, Feb 25, 2012 at 9:25 AM, Gunnar Eketrapp
> <gunnar.eketr...@gmail.com> wrote:
> > Hi!
> >
> > I currently store uploaded files in the db.
> >
> > I then retrieve those images with via an Image page.
> >
> > My problem now is that the client does not cache these images.
> >
> > Is there an easy way to fix my erreneous solution !?
> >
> >        public void prepareResponse(Response r) {
> >         r.setHeader("Cache-Control", "max-age=3600");
> >        }
> >
> > I have included the entire Image.java below ...
> >
> > Thanks in advance,
> > Gunnar
> >
> > ================================================================
> >
> > package utskicket.pages;
> >
> > import java.io.IOException;
> > import java.io.InputStream;
> >
> > import org.apache.tapestry5.StreamResponse;
> > import org.apache.tapestry5.ioc.annotations.Inject;
> > import org.apache.tapestry5.services.Response;
> > import org.slf4j.Logger;
> >
> > import utskicket.base.BasePage;
> > import utskicket.model.dao.UploadedFileDAO;
> > import utskicket.model.entity.UploadedFile;
> >
> >
> > public class Image extends BasePage {
> >
> >    private Long groupId;
> >    private Long imageId;
> >
> >    @Inject
> >    private UploadedFileDAO fileDAO;
> >
> >    @Inject
> >    private Logger log;
> >
> >    public class UploadedFileStreamResponse implements StreamResponse {
> >        private final UploadedFile file;
> >
> >        public UploadedFileStreamResponse(UploadedFile file) {
> >            this.file = file;
> >        }
> >
> >        public String getContentType() {
> >                return file.getContentType();
> >        }
> >
> >        public InputStream getStream() throws IOException {
> >            return file.getInputStream();
> >        }
> >
> >        // TODO: Find out how to get images cached by browser's. This does
> > not work!
> >        public void prepareResponse(Response r) {
> >        r.setHeader("Cache-Control", "max-age=3600");
> >        }
> >    }
> >
> >    //
> >
> ------------------------------------------------------------------------------
> >    // -- Tapestry event methods - Tapestry event methods - Tapestry event
> > methods --
> >    //
> >
> ------------------------------------------------------------------------------
> >
> >    StreamResponse onActivate(Long groupId, Long imageId) {
> >        this.groupId = groupId;
> >        this.imageId = imageId;
> >
> >        // UploadedFile file = cache.uploadedFileLookup(imageId);
> >        UploadedFile file = fileDAO.findById(imageId);
> >
> >        if (null == file) {
> >            log.warn("Failed to load image #" + imageId);
> >            return null;
> >        } else {
> >            log.debug("Loaded file #" + imageId + " with a size of " +
> > file.getContent().length + " bytes");
> >            return new UploadedFileStreamResponse(file);
> >        }
> >    }
> >
> >    Object[] onPassivate() {
> >        return new Object [] {groupId, imageId};
> >    }
> > }
>
>
>
> --
> Howard M. Lewis Ship
>
> Creator of Apache Tapestry
>
> The source for Tapestry training, mentoring and support. Contact me to
> learn how I can get you up and productive in Tapestry fast!
>
> (971) 678-5210
> http://howardlewisship.com
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> For additional commands, e-mail: users-h...@tapestry.apache.org
>
>


-- 
[Hem: 08-715 59 57, Mobil: 0708-52 62 90]
Allévägen 2A, 132 42 Saltsjö-Boo

Reply via email to