Hi Maxim,

On Tue, Mar 28, 2017 at 11:06 AM, Maxim Solodovnik <[email protected]>
wrote:

> Thanks a lot Martin for detailed explanation
> I do have this functionality working with old version of AjaxDownload
>
> And here is my first try to migrate to the new internal wicket
> AjaxDownload:
> https://github.com/apache/openmeetings/commit/
> 5fa2c87f212e4eecdd1368f2ae7fa8762832838f
>
> I would appreciate if you can take a look at this tiny commit.
>
> Something really doesn't work as expected ....
>
> Commited version behaves wrong:
> 1) file downloaded has wrong name
>

You do not set file name anywhere!
Keep a reference to the constructed ResourceResponse and call its
#setFileName(...)


> 2) is not valid zip file (cannot be opened)
>

Is the backupPath representing a ZIP file ?


> 3) for some reason I'm not able to get to breakpoint at line 115 [1]
>

Put a breakpoint at AjaxDownload.ResourceBehavior#onResourceRequested() and
see what happens


>
> Additionally I got NotSerializable exception in case I made "download"
> class final variable
>

java.nio.file.Path is not Serializable!


>
> What am I doing wrong?
>
> [1] https://github.com/apache/openmeetings/commit/
> 5fa2c87f212e4eecdd1368f2ae7fa8762832838f#diff-
> 0a499c88998a93ceb51c347836aa6195R115
>
> On Thu, Mar 23, 2017 at 3:16 AM, Martin Grigorov <[email protected]>
> wrote:
> > On Wed, Mar 22, 2017 at 12:59 PM, Maxim Solodovnik <[email protected]
> >
> > wrote:
> >
> >> Actually I have 2 example use cases:
> >>
> >> 1) user selects files on file tree
> >> 2) as soon as file is selected and download is enabled for it, used can
> >> press ajax download button and get the file
> >>
> >> Another case:
> >> User requests system backup
> >> As soon as backup is created (Progress complete)
> >> Download of newly created file should be initiated
> >>
> >> I can't create ResourceReference and override getResourceStream of it
> since
> >> I only have resource just before download
> >>
> >
> > Wicket IResource is an abstraction over the real resource.
> > In my case i also create the response on the fly. It is either a single
> > File or a Zip file with several entries.
> > The ResourceReference is more or less just an endpoint with almost no
> logic
> > at all. It just creates the IResource.
> > The IResource uses the information from the request parameters / session
> /
> > somewhere else to create the actual response (the files).
> >
> > AjaxDownload is an Ajax behavior that you can use to trigger the creation
> > of the files and by using its callback methods you can show feedback to
> the
> > user. To show progress bar you will need to employ ProgressBar from
> > wicket-extentions or use WebSockets.
> >
> >
> >>
> >> On Wed, Mar 22, 2017 at 6:53 PM, Martin Grigorov <[email protected]>
> >> wrote:
> >>
> >> > Hi Maxim,
> >> >
> >> > I use the new AjaxDownload with a ResourceReference, i.e.
> >> > AjaxDownload#AjaxDownload(org.apache.wicket.request.
> >> > resource.ResourceReference,
> >> > org.apache.wicket.request.mapper.parameter.PageParameters)
> >> > The ResourceReference has
> >> >
> >> > public IResource getResource() {
> >> >     return new StatementDownloadResource();
> >> > }
> >> >
> >> > StatementDownloadResource extends ResourceStreamResource and provides
> >> > implementation of #getResourceStream(). There I have a logic that
> returns
> >> > either FileResourceStream or ZipResourceStream.
> >> >
> >> > Martin Grigorov
> >> > Wicket Training and Consulting
> >> > https://twitter.com/mtgrigorov
> >> >
> >> > On Wed, Mar 22, 2017 at 12:30 PM, Maxim Solodovnik <
> [email protected]
> >> >
> >> > wrote:
> >> >
> >> > > Just have tried to switch to this AjaxDownload component
> >> > > And it seems I cannot find proper way to use it with dynamic file,
> i.e.
> >> > >
> >> > > previously
> >> > > I created AjaxDownload,
> >> > > added it to the page
> >> > > then at the moment I know what file should be served, I set the
> stream
> >> > and
> >> > > initiate the download
> >> > > (for example one of use cases: I need to create zip file
> >> > >
> >> > > right now this seems to be impossible :(
> >> > > Can you give me a hint how this dynamic nature can be implemented?
> >> > >
> >> > >
> >> > > --
> >> > > WBR
> >> > > Maxim aka solomax
> >> > >
> >> >
> >>
> >>
> >>
> >> --
> >> WBR
> >> Maxim aka solomax
> >>
>
>
>
> --
> WBR
> Maxim aka solomax
>

Reply via email to