Hi Maxim, Put a breakpoint at ResourceResponse.setFileName(String) and see how many times it is called and with what values.
Martin Grigorov Wicket Training and Consulting https://twitter.com/mtgrigorov On Wed, Apr 12, 2017 at 11:07 AM, Maxim Solodovnik <[email protected]> wrote: > Hello All, > > I have updated my project > https://github.com/solomax/ajax-download/commit/ > 453663a55f390e54354381ab0f009d194e37e87c > To set filename > But file being downloaded has random UUID as file name, what am I doing > wrong? > > On Wed, Mar 29, 2017 at 9:31 PM, Maxim Solodovnik <[email protected]> > wrote: > > > 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 > > > > > > -- > WBR > Maxim aka solomax >
