Author: solomax
Date: Wed Apr 19 04:59:55 2017
New Revision: 1791855

URL: http://svn.apache.org/viewvc?rev=1791855&view=rev
Log:
[OPENMEETINGS-1632] wicket AjaxDownload is used

Removed:
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/AjaxDownload.java
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/ajax-download.js
Modified:
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/StartSharingButton.java
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java

Modified: 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java?rev=1791855&r1=1791854&r2=1791855&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java
 Wed Apr 19 04:59:55 2017
@@ -20,8 +20,10 @@ package org.apache.openmeetings.web.admi
 
 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.Cale
 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.for
 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 AdminPa
                        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 AdminPa
                                        timer.stop(target);
                                        
target.add(progressBar.setVisible(false));
 
-                                       
download.setFileName(backupFile.getName());
-                                       download.setResourceStream(new 
FileResourceStream(backupFile));
                                        download.initiate(target);
                                }
                        
}).setVisible(false).setOutputMarkupPlaceholderTag(true));

Modified: 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java?rev=1791855&r1=1791854&r2=1791855&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
 Wed Apr 19 04:59:55 2017
@@ -38,20 +38,23 @@ import org.apache.openmeetings.web.commo
 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 AdminPane
                });
 
                // 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 AdminPane
                                                        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

Modified: 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java?rev=1791855&r1=1791854&r2=1791855&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java
 Wed Apr 19 04:59:55 2017
@@ -30,7 +30,6 @@ import org.apache.openmeetings.db.entity
 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 Me
                                        f = ff[0];
                                }
                        }
-                       tree.downloader.setFileName(f.getName());
-                       tree.downloader.setResourceStream(new 
FileResourceStream(f));
+                       tree.dwnldFile = f;
                        tree.downloader.initiate(target);
                }
        }

Modified: 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java?rev=1791855&r1=1791854&r2=1791855&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
 Wed Apr 19 04:59:55 2017
@@ -23,7 +23,10 @@ import static org.apache.openmeetings.ut
 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
 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 exte
        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));

Modified: 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/StartSharingButton.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/StartSharingButton.java?rev=1791855&r1=1791854&r2=1791855&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/StartSharingButton.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/StartSharingButton.java
 Wed Apr 19 04:59:55 2017
@@ -27,6 +27,7 @@ import static org.apache.openmeetings.ut
 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.A
 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
        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
                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
                                        .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);

Modified: 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java?rev=1791855&r1=1791854&r2=1791855&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java
 Wed Apr 19 04:59:55 2017
@@ -22,8 +22,10 @@ import static org.apache.openmeetings.ut
 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
 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);
                        }
                });


Reply via email to