[OPENMEETINGS-1632] wicket AjaxDownload is used

Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/7b108d94
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/7b108d94
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/7b108d94

Branch: refs/heads/master
Commit: 7b108d9458e278e73b5a5cebf00f0053b20a4e1e
Parents: ccca6bd
Author: Maxim Solodovnik <[email protected]>
Authored: Wed Apr 19 04:59:55 2017 +0000
Committer: Maxim Solodovnik <[email protected]>
Committed: Wed Apr 19 04:59:55 2017 +0000

----------------------------------------------------------------------
 .../web/admin/backup/BackupPanel.java           |  27 +++-
 .../web/admin/labels/LangPanel.java             |  31 +++--
 .../web/common/tree/DownloadMenuItem.java       |   4 +-
 .../web/common/tree/FileTreePanel.java          |  26 +++-
 .../web/room/menu/StartSharingButton.java       |  26 ++--
 .../openmeetings/web/user/record/VideoInfo.java |  29 ++++-
 .../openmeetings/web/util/AjaxDownload.java     | 128 -------------------
 .../openmeetings/web/util/ajax-download.js      |  23 ----
 8 files changed, 108 insertions(+), 186 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7b108d94/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java
index f804ba6..ff19b04 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java
@@ -20,8 +20,10 @@ package org.apache.openmeetings.web.admin.backup;
 
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.wicket.util.time.Duration.NONE;
 
 import java.io.File;
+import java.nio.file.Path;
 import java.text.DecimalFormat;
 import java.util.Date;
 
@@ -33,11 +35,11 @@ import org.apache.openmeetings.util.CalendarPatterns;
 import org.apache.openmeetings.util.OmFileHelper;
 import org.apache.openmeetings.web.admin.AdminPanel;
 import org.apache.openmeetings.web.app.Application;
-import org.apache.openmeetings.web.util.AjaxDownload;
 import org.apache.openmeetings.web.util.upload.BootstrapFileUploadBehavior;
 import org.apache.wicket.ajax.AbstractAjaxTimerBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior;
+import org.apache.wicket.extensions.ajax.AjaxDownload;
 import 
org.apache.wicket.extensions.ajax.markup.html.form.upload.UploadProgressBar;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.form.CheckBox;
@@ -45,8 +47,9 @@ import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.upload.FileUpload;
 import org.apache.wicket.markup.html.form.upload.FileUploadField;
 import org.apache.wicket.model.Model;
+import org.apache.wicket.request.resource.IResource;
+import org.apache.wicket.resource.FileSystemResource;
 import org.apache.wicket.util.lang.Bytes;
-import org.apache.wicket.util.resource.FileResourceStream;
 import org.apache.wicket.util.time.Duration;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
@@ -106,7 +109,23 @@ public class BackupPanel extends AdminPanel {
                        setMaxSize(Bytes.bytes(maxBytes));
 
                        // Add a component to download a file without page 
refresh
-                       final AjaxDownload download = new AjaxDownload();
+                       final AjaxDownload download = new AjaxDownload(new 
IResource() {
+                               private static final long serialVersionUID = 1L;
+
+                               @Override
+                               public void respond(Attributes attributes) {
+                                       new 
FileSystemResource(backupFile.toPath()) {
+                                               private static final long 
serialVersionUID = 1L;
+
+                                               @Override
+                                               protected ResourceResponse 
createResourceResponse(Attributes attr, Path path) {
+                                                       ResourceResponse 
response = super.createResourceResponse(attr, path);
+                                                       
response.setCacheDuration(NONE);
+                                                       return response;
+                                               }
+                                       }.respond(attributes);
+                               }
+                       });
                        add(download);
                        // add an download button
                        add(new AjaxButton("download", this) {
@@ -164,8 +183,6 @@ public class BackupPanel extends AdminPanel {
                                        timer.stop(target);
                                        
target.add(progressBar.setVisible(false));
 
-                                       
download.setFileName(backupFile.getName());
-                                       download.setResourceStream(new 
FileResourceStream(backupFile));
                                        download.initiate(target);
                                }
                        
}).setVisible(false).setOutputMarkupPlaceholderTag(true));

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7b108d94/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
index afef420..b280d8a 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
@@ -38,20 +38,23 @@ import 
org.apache.openmeetings.web.common.PagedEntityListPanel;
 import org.apache.openmeetings.web.data.DataViewContainer;
 import org.apache.openmeetings.web.data.OmOrderByBorder;
 import org.apache.openmeetings.web.data.SearchableDataProvider;
-import org.apache.openmeetings.web.util.AjaxDownload;
 import org.apache.openmeetings.web.util.upload.BootstrapFileUploadBehavior;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.ajax.AjaxEventBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior;
 import org.apache.wicket.ajax.markup.html.AjaxLink;
+import org.apache.wicket.extensions.ajax.AjaxDownload;
 import 
org.apache.wicket.extensions.ajax.markup.html.form.upload.UploadProgressBar;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.form.upload.FileUpload;
 import org.apache.wicket.markup.html.form.upload.FileUploadField;
 import org.apache.wicket.markup.repeater.Item;
+import org.apache.wicket.request.resource.ContentDisposition;
+import org.apache.wicket.request.resource.ResourceStreamResource;
 import org.apache.wicket.util.resource.AbstractResourceStream;
+import org.apache.wicket.util.resource.IResourceStream;
 import org.apache.wicket.util.resource.ResourceStreamNotFoundException;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
@@ -172,17 +175,18 @@ public class LangPanel extends AdminPanel {
                });
 
                // Add a component to download a file without page refresh
-               final AjaxDownload download = new AjaxDownload();
-               langForm.add(download);
-
-               langForm.add(new AjaxButton("export"){
+               final AjaxDownload download = new AjaxDownload(new 
ResourceStreamResource() {
                        private static final long serialVersionUID = 1L;
 
+                       {
+                               
setContentDisposition(ContentDisposition.ATTACHMENT);
+                       }
+
                        @Override
-                       protected void onSubmit(AjaxRequestTarget target) {
+                       protected IResourceStream getResourceStream(Attributes 
attributes) {
                                final String name = 
LabelDao.getLabelFileName(language.getValue());
-                               download.setFileName(name);
-                               download.setResourceStream(new 
AbstractResourceStream() {
+                               setFileName(name);
+                               return new AbstractResourceStream() {
                                        private static final long 
serialVersionUID = 1L;
                                        private transient InputStream is;
 
@@ -203,7 +207,16 @@ public class LangPanel extends AdminPanel {
                                                        is = null;
                                                }
                                        }
-                               });
+                               };
+                       }
+               });
+               langForm.add(download);
+
+               langForm.add(new AjaxButton("export"){
+                       private static final long serialVersionUID = 1L;
+
+                       @Override
+                       protected void onSubmit(AjaxRequestTarget target) {
                                download.initiate(target);
 
                                // repaint the feedback panel so that it is 
hidden

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7b108d94/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java
index e1c55f7..d94e86d 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java
@@ -30,7 +30,6 @@ import org.apache.openmeetings.db.entity.file.FileItem;
 import org.apache.openmeetings.db.entity.file.FileItem.Type;
 import org.apache.openmeetings.util.OmFileHelper;
 import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.util.resource.FileResourceStream;
 
 import com.googlecode.wicket.jquery.ui.JQueryIcon;
 import com.googlecode.wicket.jquery.ui.widget.menu.MenuItem;
@@ -66,8 +65,7 @@ public class DownloadMenuItem extends MenuItem {
                                        f = ff[0];
                                }
                        }
-                       tree.downloader.setFileName(f.getName());
-                       tree.downloader.setResourceStream(new 
FileResourceStream(f));
+                       tree.dwnldFile = f;
                        tree.downloader.initiate(target);
                }
        }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7b108d94/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
index 37552d2..df9d056 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
@@ -23,7 +23,10 @@ import static 
org.apache.openmeetings.util.OmFileHelper.EXTENSION_JPG;
 import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_PDF;
 import static org.apache.openmeetings.web.app.Application.getBean;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.apache.wicket.util.time.Duration.NONE;
 
+import java.io.File;
+import java.nio.file.Path;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
@@ -41,19 +44,21 @@ import org.apache.openmeetings.db.entity.record.Recording;
 import org.apache.openmeetings.web.common.ConfirmableAjaxBorder;
 import 
org.apache.openmeetings.web.common.ConfirmableAjaxBorder.ConfirmableBorderDialog;
 import org.apache.openmeetings.web.common.NameDialog;
-import org.apache.openmeetings.web.util.AjaxDownload;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AjaxEventBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.attributes.CallbackParameter;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
+import org.apache.wicket.extensions.ajax.AjaxDownload;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
+import org.apache.wicket.request.resource.IResource;
+import org.apache.wicket.resource.FileSystemResource;
 
 import com.googlecode.wicket.jquery.core.JQueryBehavior;
 import com.googlecode.wicket.jquery.core.Options;
@@ -77,7 +82,24 @@ public abstract class FileTreePanel extends Panel {
        private final WebMarkupContainer sizes = new 
WebMarkupContainer("sizes");
        private FileItem lastSelected = null;
        private Map<String, FileItem> selected = new HashMap<>();
-       final AjaxDownload downloader = new AjaxDownload();
+       File dwnldFile;
+       final AjaxDownload downloader = new AjaxDownload(new IResource() {
+               private static final long serialVersionUID = 1L;
+
+               @Override
+               public void respond(Attributes attributes) {
+                       new FileSystemResource(dwnldFile.toPath()) {
+                               private static final long serialVersionUID = 1L;
+
+                               @Override
+                               protected ResourceResponse 
createResourceResponse(Attributes attr, Path path) {
+                                       ResourceResponse response = 
super.createResourceResponse(attr, path);
+                                       response.setCacheDuration(NONE);
+                                       return response;
+                               }
+                       }.respond(attributes);
+               }
+       });
        protected final IModel<String> homeSize = Model.of((String)null);
        protected final IModel<String> publicSize = Model.of((String)null);
        final ConvertingErrorsDialog errorsDialog = new 
ConvertingErrorsDialog("errors", Model.of((Recording)null));

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7b108d94/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/StartSharingButton.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/StartSharingButton.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/StartSharingButton.java
index 64801fa..1250eb5 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/StartSharingButton.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/StartSharingButton.java
@@ -27,6 +27,7 @@ import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SCREENSH
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 import static org.apache.openmeetings.web.app.Application.getBean;
 import static org.apache.openmeetings.web.app.WebSession.getLanguage;
+import static org.apache.wicket.util.time.Duration.NONE;
 
 import java.io.InputStream;
 
@@ -41,9 +42,11 @@ import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.common.OmButton;
 import org.apache.openmeetings.web.room.VideoSettings;
-import org.apache.openmeetings.web.util.AjaxDownload;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.behavior.AttributeAppender;
+import org.apache.wicket.extensions.ajax.AjaxDownload;
+import org.apache.wicket.request.resource.ResourceStreamResource;
+import org.apache.wicket.util.resource.IResourceStream;
 import org.apache.wicket.util.resource.StringResourceStream;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
@@ -57,6 +60,7 @@ public class StartSharingButton extends OmButton {
        private static final String CDATA_END = "]]>";
        private final AjaxDownload download;
        private final Client c;
+       private String app = "";
 
        public StartSharingButton(String id, Client c) {
                super(id);
@@ -64,20 +68,26 @@ public class StartSharingButton extends OmButton {
                setOutputMarkupPlaceholderTag(true);
                setVisible(false);
                add(new AttributeAppender("title", 
Application.getString(1480)));
-               add(download = new AjaxDownload(true) {
+               add(download = new AjaxDownload(new ResourceStreamResource() {
                        private static final long serialVersionUID = 1L;
 
+                       {
+                               setFileName(String.format("public_%s.jnlp", 
StartSharingButton.this.c.getRoomId()));
+                               setCacheDuration(NONE);
+                       }
+
                        @Override
-                       protected String getFileName() {
-                               return String.format("public_%s.jnlp", 
StartSharingButton.this.c.getRoomId());
+                       protected IResourceStream getResourceStream(Attributes 
attributes) {
+                               StringResourceStream srs = new 
StringResourceStream(app, "application/x-java-jnlp-file");
+                               srs.setCharset(UTF_8);
+                               return srs;
                        }
-               });
+               }));
        }
 
        @Override
        public void onClick(AjaxRequestTarget target) {
                //TODO deny download in case other screen sharing is in progress
-               String app = "";
                try (InputStream jnlp = 
getClass().getClassLoader().getResourceAsStream("APPLICATION.jnlp")) {
                        ConfigurationDao cfgDao = 
getBean(ConfigurationDao.class);
                        app = IOUtils.toString(jnlp, UTF_8);
@@ -108,10 +118,6 @@ public class StartSharingButton extends OmButton {
                                        .replace("$allowRecording", "" + 
(room.isAllowRecording() && (0 == sessionManager.getRecordingCount(roomId))))
                                        .replace("$allowPublishing", "" + (0 == 
sessionManager.getPublishingCount(roomId)))
                                        ;
-
-                       StringResourceStream srs = new 
StringResourceStream(app, "application/x-java-jnlp-file");
-                       srs.setCharset(UTF_8);
-                       download.setResourceStream(srs);
                        download.initiate(target);
                } catch (Exception e) {
                        log.error("Unexpected error while creating jnlp file", 
e);

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7b108d94/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java
index a5a6285..792269a 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java
@@ -22,8 +22,10 @@ import static 
org.apache.openmeetings.util.OmFileHelper.EXTENSION_MP4;
 import static org.apache.openmeetings.util.OmFileHelper.getRecordingMetaData;
 import static org.apache.openmeetings.web.app.Application.getBean;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.apache.wicket.util.time.Duration.NONE;
 
 import java.io.File;
+import java.nio.file.Path;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -38,15 +40,16 @@ import 
org.apache.openmeetings.db.entity.record.Recording.Status;
 import org.apache.openmeetings.db.entity.record.RecordingMetaData;
 import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.web.common.InvitationDialog;
-import org.apache.openmeetings.web.util.AjaxDownload;
 import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.extensions.ajax.AjaxDownload;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.model.CompoundPropertyModel;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
-import org.apache.wicket.util.resource.FileResourceStream;
+import org.apache.wicket.request.resource.IResource;
+import org.apache.wicket.resource.FileSystemResource;
 
 import com.googlecode.wicket.jquery.ui.JQueryIcon;
 import com.googlecode.wicket.jquery.ui.form.button.AjaxButton;
@@ -77,7 +80,24 @@ public class VideoInfo extends Panel {
                        }.start();
                }
        };
-       private final AjaxDownload download = new AjaxDownload();
+       private final AjaxDownload download = new AjaxDownload(new IResource() {
+               private static final long serialVersionUID = 1L;
+
+               @Override
+               public void respond(Attributes attributes) {
+                       File f = rm.getObject().getFile(EXTENSION_MP4);
+                       new FileSystemResource(f.toPath()) {
+                               private static final long serialVersionUID = 1L;
+
+                               @Override
+                               protected ResourceResponse 
createResourceResponse(Attributes attr, Path path) {
+                                       ResourceResponse response = 
super.createResourceResponse(attr, path);
+                                       response.setCacheDuration(NONE);
+                                       return response;
+                               }
+                       }.respond(attributes);
+               }
+       });
        private final IModel<Recording> rm = new CompoundPropertyModel<>(new 
Recording());
        private final IModel<String> roomName = Model.of((String)null);
        private boolean isInterview = false;
@@ -184,9 +204,6 @@ public class VideoInfo extends Panel {
 
                        @Override
                        public void onClick(AjaxRequestTarget target) {
-                               File f = rm.getObject().getFile(EXTENSION_MP4);
-                               download.setFileName(f.getName());
-                               download.setResourceStream(new 
FileResourceStream(f));
                                download.initiate(target);
                        }
                });

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7b108d94/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/AjaxDownload.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/AjaxDownload.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/AjaxDownload.java
deleted file mode 100644
index c61c7d7..0000000
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/AjaxDownload.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License") +  you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.openmeetings.web.util;
-
-import java.util.UUID;
-
-import org.apache.wicket.Component;
-import org.apache.wicket.Page;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.behavior.AbstractAjaxBehavior;
-import org.apache.wicket.markup.head.IHeaderResponse;
-import org.apache.wicket.markup.head.JavaScriptHeaderItem;
-import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
-import org.apache.wicket.markup.head.PriorityHeaderItem;
-import org.apache.wicket.request.handler.resource.ResourceStreamRequestHandler;
-import org.apache.wicket.request.resource.ContentDisposition;
-import org.apache.wicket.request.resource.JavaScriptResourceReference;
-import org.apache.wicket.request.resource.ResourceReference;
-import org.apache.wicket.util.resource.IResourceStream;
-
-/**
- * see: <a 
href="https://cwiki.apache.org/confluence/display/WICKET/AJAX+update+and+file+download+in+one+blow";>
- * 
https://cwiki.apache.org/confluence/display/WICKET/AJAX+update+and+file+download+in+one+blow</href>
- * 
- */
-public class AjaxDownload extends AbstractAjaxBehavior {
-       private static final long serialVersionUID = 1L;
-       private boolean addAntiCache;
-       private String fileName;
-       private IResourceStream resourceStream;
-       private final String iframeId;
-
-       public AjaxDownload() {
-               this(true);
-       }
-
-       public AjaxDownload(boolean addAntiCache) {
-               super();
-               this.addAntiCache = addAntiCache;
-               iframeId = String.format("download-iframe-%s", 
UUID.randomUUID().toString());
-       }
-
-       /**
-        * Call this method to initiate the download.
-        */
-       public void initiate(AjaxRequestTarget target) {
-               StringBuilder url = new StringBuilder(getCallbackUrl());
-
-               if (addAntiCache) {
-                       url.append(url.indexOf("?") > -1 ? "&" : "?")
-                               
.append("antiCache=").append(System.currentTimeMillis());
-               }
-               target.appendJavaScript(String.format("$('#%s').attr('src', 
'%s');", iframeId, url.toString()));
-       }
-
-       @Override
-       protected void onBind() {
-               super.onBind();
-               // it is impossible to get page by id anyway
-               if (!(getComponent() instanceof Page)) {
-                       getComponent().setOutputMarkupId(true);
-               }
-       }
-
-       private static ResourceReference newResourceReference() {
-               return new JavaScriptResourceReference(AjaxDownload.class, 
"ajax-download.js");
-       }
-
-       @Override
-       public void renderHead(Component component, IHeaderResponse response) {
-               super.renderHead(component, response);
-               response.render(new 
PriorityHeaderItem(JavaScriptHeaderItem.forReference(newResourceReference())));
-               
response.render(OnDomReadyHeaderItem.forScript(String.format("addDwnldIframe('%s',
 '%s');", component instanceof Page ? "" : component.getMarkupId(), iframeId)));
-       }
-
-       @Override
-       public void onRequest() {
-               ResourceStreamRequestHandler handler = new 
ResourceStreamRequestHandler(getResourceStream(), getFileName());
-               handler.setContentDisposition(getContentDisposition());
-               
getComponent().getRequestCycle().scheduleRequestHandlerAfterCurrent(handler);
-       }
-
-       protected ContentDisposition getContentDisposition() {
-               return ContentDisposition.ATTACHMENT;
-       }
-       /**
-        * Override this method for a file name which will let the browser 
prompt
-        * with a save/open dialog.
-        * 
-        * @see ResourceStreamRequestTarget#getFileName()
-        */
-       protected String getFileName() {
-               return this.fileName;
-       }
-
-       public void setFileName(String fileName) {
-               this.fileName = fileName;
-       }
-
-       /**
-        * Hook method providing the actual resource stream.
-        */
-       protected IResourceStream getResourceStream() {
-               return resourceStream;
-
-       }
-
-       public void setResourceStream(IResourceStream resourceStream) {
-               this.resourceStream = resourceStream;
-       }
-
-}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7b108d94/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/ajax-download.js
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/ajax-download.js
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/ajax-download.js
deleted file mode 100644
index ee23529..0000000
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/ajax-download.js
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License") +  you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-function addDwnldIframe(compId, id) {
-       compId = !!compId ? '#' + compId : 'body';
-       $(compId).append('<iframe id="' + id + '" style="display:none" 
src="about:blank"></iframe>');
-}

Reply via email to