You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Bertrand Guay-Paquet <be...@step.polymtl.ca> on 2011/12/14 18:59:17 UTC
Mapped resource reference and urlFor()
Hi,
I am using resource references for the first time to implement fetching
images from a DB. The URLs will be of the following form:
"/resources/dbImages/DB_ID.png" where DB_ID is an identifier to retrieve
the image from the DB.
I'm using the article at
http://wicketinaction.com/2011/07/wicket-1-5-mounting-resources/ as a
guide and have a couple of questions.
1. What is the purpose of the equals() override in the class
ImageResource? I don't understand the explanation given in the
article... Also, I put a breakpoint in my own resource class' equals()
method and it never hits!
2. Can I use part of the "resources" namespace or is that asking for
trouble since Wicket can use it however it likes?
3. When using getRequestCycle().urlFor(new MyResourceReference(),
imageParameters), the following happens:
at line 216 in ResourceMapper#addCachingDecoration(Url, PageParameters) :
final IResource resource = resourceReference.getResource();
with a comment right above that says "// TODO is calling getResource() a
potential performance bottleneck?"
I am concerned that each time a url to my image resource reference is
created, the DB will be hit, simply for getting the Url! It will then
maybe be hit a second time afterwards if the client doesn't have the
image in cache. Am I completely off-base here? Is there another way to
manage resources so this doesn't happen?
Thanks,
Bertrand
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org
Re: Mapped resource reference and urlFor()
Posted by Bertrand Guay-Paquet <be...@step.polymtl.ca>.
@Peter: This is actually what I was doing already via the
ByteArrayResource class! I just didn't notice that only the constructor
was called... Thanks for opening my eyes!
@Martin: In 1.5.3, I think the code you referenced is :
// see if request handler addresses the resource we serve
if (resourceReference.equals(handler.getResourceReference()) ==
false &&
resourceReference.getResource().equals(handler.getResource()) == false)
{
return null;
}
Indeed, it suffices for the ResourceReference to implement equals which
it already does by default using its key. Thanks for explaining!
Regards,
Bertrand
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org
Re: Mapped resource reference and urlFor()
Posted by Peter Ertl <pe...@gmx.org>.
Try to do the real work in the IResource#respond() (accessing the database and retrieving the image) and make calling the constructor cheap, then you should not have any bottlenecks at all.
Am 14.12.2011 um 18:59 schrieb Bertrand Guay-Paquet:
> Hi,
>
> I am using resource references for the first time to implement fetching images from a DB. The URLs will be of the following form:
> "/resources/dbImages/DB_ID.png" where DB_ID is an identifier to retrieve the image from the DB.
>
> I'm using the article at http://wicketinaction.com/2011/07/wicket-1-5-mounting-resources/ as a guide and have a couple of questions.
>
> 1. What is the purpose of the equals() override in the class ImageResource? I don't understand the explanation given in the article... Also, I put a breakpoint in my own resource class' equals() method and it never hits!
>
> 2. Can I use part of the "resources" namespace or is that asking for trouble since Wicket can use it however it likes?
>
> 3. When using getRequestCycle().urlFor(new MyResourceReference(), imageParameters), the following happens:
> at line 216 in ResourceMapper#addCachingDecoration(Url, PageParameters) :
> final IResource resource = resourceReference.getResource();
>
> with a comment right above that says "// TODO is calling getResource() a potential performance bottleneck?"
>
> I am concerned that each time a url to my image resource reference is created, the DB will be hit, simply for getting the Url! It will then maybe be hit a second time afterwards if the client doesn't have the image in cache. Am I completely off-base here? Is there another way to manage resources so this doesn't happen?
>
> Thanks,
> Bertrand
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org
Re: Mapped resource reference and urlFor()
Posted by Martin Grigorov <mg...@apache.org>.
HI,
On Wed, Dec 14, 2011 at 7:59 PM, Bertrand Guay-Paquet
<be...@step.polymtl.ca> wrote:
> Hi,
>
> I am using resource references for the first time to implement fetching
> images from a DB. The URLs will be of the following form:
> "/resources/dbImages/DB_ID.png" where DB_ID is an identifier to retrieve the
> image from the DB.
>
> I'm using the article at
> http://wicketinaction.com/2011/07/wicket-1-5-mounting-resources/ as a guide
> and have a couple of questions.
>
> 1. What is the purpose of the equals() override in the class ImageResource?
> I don't understand the explanation given in the article... Also, I put a
> breakpoint in my own resource class' equals() method and it never hits!
Until recently both ResRef's #equals() and IResource#equals() were
needed to find the mapped ResRef.
This was improved recently (1.5.3 or trunk, not sure) and now only
ResRef#equals() is used. See ResourceMapper#mapRequest().
>
> 2. Can I use part of the "resources" namespace or is that asking for trouble
> since Wicket can use it however it likes?
Use it. /resources/... is for 1.4.x
In 1.5 the special one is /wicket/resource/... See IMapperContext
>
> 3. When using getRequestCycle().urlFor(new MyResourceReference(),
> imageParameters), the following happens:
> at line 216 in ResourceMapper#addCachingDecoration(Url, PageParameters) :
> final IResource resource = resourceReference.getResource();
>
> with a comment right above that says "// TODO is calling getResource() a
> potential performance bottleneck?"
>
> I am concerned that each time a url to my image resource reference is
> created, the DB will be hit, simply for getting the Url! It will then maybe
> be hit a second time afterwards if the client doesn't have the image in
> cache. Am I completely off-base here? Is there another way to manage
> resources so this doesn't happen?
>
> Thanks,
> Bertrand
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
--
Martin Grigorov
jWeekend
Training, Consulting, Development
http://jWeekend.com
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org