wicket-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Pedro Santos <pedros...@gmail.com>
Subject Re: clean way to avoid DynamicWebResource to look for non existing file
Date Thu, 03 Sep 2009 11:32:55 GMT
Hi Daniele, just an idea:
     @Override
     protected byte[] getImageData() {
        String basePath = "upload/images/";
        Object name = logoModel.getObject();
        File file = new File(".", basePath + name);
        LoggerFactory.getLogger(getClass()).info("serving file: " + file);
        try {
           return IOUtils.toByteArray(new FileInputStream(file));
        } catch (FileNotFoundException e) {
           e.printStackTrace();
        } catch (IOException e) {
           e.printStackTrace();
        }

                DefaultButtonImageResource img = new
DefaultButtonImageResource("Image not found");
                InputStream defautImg =
img.getResourceStream().getInputStream();
                byte[] bytes = new byte[defautImg.available()];
                defautImg.read(bytes);
        return bytes;
     }
You can show an image with this message while not found an solution for the
null pointer exception.



On Wed, Sep 2, 2009 at 6:36 PM, Daniele Dellafiore <ildella@gmail.com>wrote:

> Hi all, I use a DynamicWebResource to display images previously uploaded by
> user ion the context of my application. I have this DWR subclass:
>
>   class LogoResource extends DynamicImageResource {
>
>      private final IModel logoModel;
>
>      public LogoResource(IModel model) {
>         this.logoModel = model;
>      }
>
>      @Override
>      protected byte[] getImageData() {
>         String basePath = "upload/images/";
>         Object name = logoModel.getObject();
>         File file = new File(".", basePath + name);
>         LoggerFactory.getLogger(getClass()).info("serving file: " + file);
>         try {
>            return IOUtils.toByteArray(new FileInputStream(file));
>         } catch (FileNotFoundException e) {
>            e.printStackTrace();
>         } catch (IOException e) {
>            e.printStackTrace();
>         }
>         return null;
>      }
>   }
>
> now, when the file is found, everything is ok.
> When it is not, I receive a NullPo9nterException, this is the output when
> you can see my log and then the begin of the trace:
>
> INFO  - LogoResource - serving file: ./upload/images/null
> ERROR - RequestCycle               -
> java.lang.NullPointerException
>    at java.io.ByteArrayInputStream.<init>(ByteArrayInputStream.java:89)
>    at
>
> org.apache.wicket.markup.html.DynamicWebResource$1.getInputStream(DynamicWebResource.java:221)
>
>    at
>
> org.apache.wicket.request.target.resource.ResourceStreamRequestTarget.respond(ResourceStreamRequestTarget.java:160)
>
>    at
>
> org.apache.wicket.request.AbstractRequestCycleProcessor.respond(AbstractRequestCycleProcessor.java:105)
>
>    at org.apache.wicket.RequestCycle.respond(RequestCycle.java:1267)
>
> This is annoying and, more important, it seems to cause the page not to
> reload properly. In fact when after a submit I call a setResponse on the
> same page, the page is not reloaded.
>
> At the end of all the exceptions, I get:
>
> WARN  - DataRequestCycle           - Completed exception handling for
> request [RequestCycle@1ec3ffd thread=10193106@qtp-28693170-2]
> INFO  - DataRequestCycle           - Request ended
> [RequestCycle@1ec3ffdthread=10193106@qtp-28693170-2](time:
> 33
>
> And the page has the same URL as before, correclty, but not the new
> rendering: If I reload the page, I get the new stuff.
>
> In the same page I have other forms, with the same setResponse onSubmit,
> that work perfectly.
> Do you think that these exceptions could be the problem for the undone
> refresh? Or maybe is better to look elsewhere?
>
> And, in any case, there is a clean way to avoid the getImageData to be
> called if I do not have a file for the image?
>
> Thanks.
>
> --
> Daniele Dellafiore
> http://blog.ildella.net
> http://twitter.com/ildella
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message