Will try to migrate all my use cases on a SNAPSHOT first Then will do Thanks Martin!
On Wed, Mar 29, 2017 at 9:28 PM, Martin Grigorov <[email protected]> wrote: > Maxim, you can use Location.IFrame or Location.SameWindow too in -M5 (to be > released!). > > Martin Grigorov > Wicket Training and Consulting > https://twitter.com/mtgrigorov > > On Wed, Mar 29, 2017 at 4:26 PM, Sven Meier <[email protected]> wrote: > >> In a minute :P >> >> Sven >> >> >> >> On 29.03.2017 16:15, Andrea Del Bene wrote: >> >>> Right when we will return to "success" :-) >>> >>> https://ci.apache.org/builders/wicket-master >>> >>> On Wed, Mar 29, 2017 at 4:07 PM, Maxim Solodovnik <[email protected]> >>> wrote: >>> >>> Wow, Thanks a lot! >>>> Could you please let me know when SNAPSHOT with the fix will be >>>> available? >>>> >>>> On Wed, Mar 29, 2017 at 8:50 PM, Sven Meier <[email protected]> wrote: >>>> >>>>> Hi, >>>>> >>>>> so we have to change the Location.Blob to use XMLHttpRequest directly, >>>>> because jQuery does not support blob downloads :/. >>>>> >>>>> I've change the JavaScript and now downloading of the zip works fine. >>>>> >>>>> FileSystemResource might not be the best candidate (because it's not >>>>> serializable), but you can use an indirection to prevent it being >>>>> >>>> serialized >>>> >>>>> along with AjaxDownload: >>>>> >>>>> final AjaxDownload download = new AjaxDownload( >>>>> new IResource() >>>>> { >>>>> @Override >>>>> public void respond(Attributes attributes) >>>>> { >>>>> new >>>>> FileSystemResource(zipFile.toPath()).respond(attributes); >>>>> } >>>>> } >>>>> ); >>>>> >>>>> Have fun >>>>> Sven >>>>> >>>>> >>>>> >>>>> On 29.03.2017 15:12, Maxim Solodovnik wrote: >>>>> >>>>>> Filename is minor issue .... >>>>>> Main problem is invalid file :( >>>>>> >>>>>> How can I serve the file from file system? I thought >>>>>> filesystemreference >>>>>> if >>>>>> the best candidate ..... >>>>>> >>>>>> WBR, Maxim >>>>>> (from mobile, sorry for the typos) >>>>>> >>>>>> On Mar 29, 2017 8:08 PM, "Sven Meier" <[email protected]> wrote: >>>>>> >>>>>> Hi Maxim, >>>>>>> >>>>>>> three things: >>>>>>> >>>>>>> - filename ... no one sets the file name :P >>>>>>> >>>>>>> - serializable error ... FileSystemResource holds a reference to the >>>>>>> path, >>>>>>> which is not serializable >>>>>>> >>>>>>> - corruct zip ... my bad, it seems that Location.Blob mangles the file >>>>>>> >>>>>> on >>>> >>>>> the client side >>>>>>> >>>>>>> I'll see what I can do about Location.Blob - it might be an encoding >>>>>>> issue. >>>>>>> >>>>>>> Have fun >>>>>>> Sven >>>>>>> >>>>>>> >>>>>>> On 29.03.2017 14:15, Maxim Solodovnik wrote: >>>>>>> >>>>>>> here you are: https://github.com/solomax/ajax-download >>>>>>>> Absolutely don't understand what is going on :( >>>>>>>> >>>>>>>> On Wed, Mar 29, 2017 at 6:30 PM, Maxim Solodovnik < >>>>>>>> >>>>>>> [email protected]> >>>> >>>>> wrote: >>>>>>>> >>>>>>>> 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 >>>>>>>>> >>>>>>>>> >>>>>>>> >>>> >>>> -- >>>> WBR >>>> Maxim aka solomax >>>> >>>> >> -- WBR Maxim aka solomax
