Yep, zip file is valid Breakpoint at AjaxDownload.ResourceBehavior#onRequest() is not hit :( Will try to create quickstart
something extremely weird On Wed, Mar 29, 2017 at 2:22 AM, Martin Grigorov <[email protected]> wrote: > 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 >> -- WBR Maxim aka solomax
