Re: clean way to avoid DynamicWebResource to look for non existing file

2009-09-03 Thread Pedro Santos
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 ilde...@gmail.comwrote:

 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 [requestcy...@1ec3ffd thread=10193...@qtp-28693170-2]
 INFO  - DataRequestCycle   - Request ended
 [requestcy...@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



clean way to avoid DynamicWebResource to look for non existing file

2009-09-02 Thread Daniele Dellafiore
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 [requestcy...@1ec3ffd thread=10193...@qtp-28693170-2]
INFO  - DataRequestCycle   - Request ended
[requestcy...@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