You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2017/04/19 04:59:55 UTC

svn commit: r1791855 - in /openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web: admin/backup/ admin/labels/ common/tree/ room/menu/ user/record/ util/

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);
 			}
 		});