[ 
https://issues.apache.org/jira/browse/WICKET-4718?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13437745#comment-13437745
 ] 

Martin Grigorov commented on WICKET-4718:
-----------------------------------------

The default impl of 
org.apache.wicket.request.resource.ResourceStreamResource#getResourceStream() 
is:

/**
         * Lazy or dynamic initialization of the wrapped IResourceStream(Writer)
         * @return the underlying IResourceStream
         */
        protected IResourceStream getResourceStream()
        {
                return stream;
        }

Since you override it then it will do whatever you do in your implementation.

I see two solutions for your case:

1) Use 
org.apache.wicket.request.resource.ResourceStreamResource#ResourceStreamResource(IResourceStream)
 constructor and thus the 'stream' will be created just once and reused many 
times later.

2) Cache the created value of the 'stream' in your #getResourceStream() impl 
and reuse it. This will make the instantiation of 'stream' lazy.
                
> ResourceStreamResource#getResourceStream() is called multiple times
> -------------------------------------------------------------------
>
>                 Key: WICKET-4718
>                 URL: https://issues.apache.org/jira/browse/WICKET-4718
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket
>    Affects Versions: 6.0.0-beta3
>         Environment: Mac OS X 10.7.4 Lion, Java 6, IntelliJ Idea 11.1, Tomcat 
> 7 & Jetty 7.5.0
>            Reporter: Carsten Dräger
>
> When a ResourceStreamResource is implemented to return a IResourceStream 
> dynamically, by returning a new instance of an extended 
> AbstractResourceStream, that ResourceStream is instantiated multiple times 
> when a ResourceLink is clicked.
> In my case, that ResourceStream returns an AttachmentInputStream from the 
> Ektorp library (for CouchDB interaction). This behavior results in multiple 
> queries (currently up to four) when I click once on a ResourceLink to that 
> resource.
> Code Examples
> Extended ResourceStreamResource: http://pastebin.com/9BB7LEiV
> Extended IResouceStream: http://pastebin.com/Z7GvzGja

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira


Reply via email to