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