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
>>>
>>>
>

Reply via email to