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 2018/03/11 14:15:26 UTC

[openmeetings] branch master updated: [OPENMEETINGS-1836] another attempt to fix drop file URL

This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git


The following commit(s) were added to refs/heads/master by this push:
     new cdcf9b2  [OPENMEETINGS-1836] another attempt to fix drop file URL
cdcf9b2 is described below

commit cdcf9b2b958db54de99397ab0990fa75fca055cd
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Sun Mar 11 21:15:16 2018 +0700

    [OPENMEETINGS-1836] another attempt to fix drop file URL
---
 .../openmeetings/core/util/WebSocketHelper.java    |  8 ----
 .../openmeetings/db/dto/room/Whiteboard.java       | 11 +++--
 .../openmeetings/backup/converter/WbConverter.java |  3 +-
 .../openmeetings/util/OpenmeetingsVariables.java   |  2 +
 .../apache/openmeetings/web/common/ImagePanel.java |  3 +-
 .../web/room/wb/WbWebSocketHelper.java             | 52 ++++++++++++++++++----
 6 files changed, 56 insertions(+), 23 deletions(-)

diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/WebSocketHelper.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/WebSocketHelper.java
index 1a4579c..5e2b568 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/WebSocketHelper.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/WebSocketHelper.java
@@ -46,13 +46,11 @@ import org.apache.openmeetings.db.util.ws.RoomMessage;
 import org.apache.openmeetings.db.util.ws.TextRoomMessage;
 import org.apache.openmeetings.util.ws.IClusterWsMessage;
 import org.apache.wicket.Application;
-import org.apache.wicket.ThreadContext;
 import org.apache.wicket.protocol.ws.WebSocketSettings;
 import org.apache.wicket.protocol.ws.api.IWebSocketConnection;
 import org.apache.wicket.protocol.ws.api.registry.IWebSocketConnectionRegistry;
 import org.apache.wicket.protocol.ws.api.registry.PageIdKey;
 import org.apache.wicket.protocol.ws.concurrent.Executor;
-import org.apache.wicket.request.cycle.RequestCycle;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -213,11 +211,8 @@ public class WebSocketHelper {
 		if (publish) {
 			publish(new WsMessageAll(m));
 		}
-		final RequestCycle requestCycle = ThreadContext.getRequestCycle();
 		new Thread(() -> {
 			Application app = (Application)getApp();
-			ThreadContext.setRequestCycle(requestCycle);
-			ThreadContext.setApplication(app);
 			WebSocketSettings settings = WebSocketSettings.Holder.get(app);
 			IWebSocketConnectionRegistry reg = settings.getConnectionRegistry();
 			Executor executor = settings.getWebSocketPushMessageExecutor();
@@ -257,11 +252,8 @@ public class WebSocketHelper {
 			, BiConsumer<IWebSocketConnection, Client> consumer
 			, Predicate<Client> check)
 	{
-		final RequestCycle requestCycle = ThreadContext.getRequestCycle();
 		new Thread(() -> {
 			Application app = (Application)getApp();
-			ThreadContext.setRequestCycle(requestCycle);
-			ThreadContext.setApplication(app);
 			WebSocketSettings settings = WebSocketSettings.Holder.get(app);
 			IWebSocketConnectionRegistry reg = settings.getConnectionRegistry();
 			Executor executor = settings.getWebSocketPushMessageExecutor();
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java
index c85fd58..229cb1e 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java
@@ -18,6 +18,9 @@
  */
 package org.apache.openmeetings.db.dto.room;
 
+import static org.apache.openmeetings.util.OpenmeetingsVariables.PARAM_SRC;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.PARAM__SRC;
+
 import java.io.BufferedWriter;
 import java.io.IOException;
 import java.io.Serializable;
@@ -197,13 +200,13 @@ public class Whiteboard implements Serializable {
 			JSONObject o = new JSONObject(e.getValue());
 			//filtering
 			if ("Clipart".equals(o.opt("omType"))) {
-				if (o.has("_src")) {
-					o.put("src", o.get("_src"));
+				if (o.has(PARAM__SRC)) {
+					o.put(PARAM_SRC, o.get(PARAM__SRC));
 				}
 			} else {
-				o.remove("src");
+				o.remove(PARAM_SRC);
 			}
-			o.remove("_src");
+			o.remove(PARAM__SRC);
 			items.put(e.getKey(), o);
 		}
 		json.put(ITEMS_KEY, items);
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/WbConverter.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/WbConverter.java
index d4d6eff..4a1d589 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/WbConverter.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/WbConverter.java
@@ -25,6 +25,7 @@ import static org.apache.openmeetings.db.dto.room.Whiteboard.ATTR_FILE_TYPE;
 import static org.apache.openmeetings.db.dto.room.Whiteboard.ATTR_SLIDE;
 import static org.apache.openmeetings.db.dto.room.Whiteboard.ATTR_TYPE;
 import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_WML;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.PARAM__SRC;
 
 import java.io.BufferedReader;
 import java.io.File;
@@ -198,7 +199,7 @@ public class WbConverter {
 		add(wb, init(wb, props)
 			.put(ATTR_TYPE, TYPE_IMAGE)
 			.put("omType", "Clipart")
-			.put("_src", src)
+			.put(PARAM__SRC, src)
 			.put("angle", props.get(3)));
 	}
 
diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java
index d7643f8..5e58994 100644
--- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java
+++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java
@@ -25,6 +25,8 @@ public class OpenmeetingsVariables {
 	public static final String ATTR_TITLE = "title";
 	public static final String PARAM_USER_ID = "userId";
 	public static final String PARAM_STATUS = "status";
+	public static final String PARAM_SRC = "src";
+	public static final String PARAM__SRC = "_src";
 	public static final String CONFIG_CRYPT = "crypt.class.name";
 	public static final String CONFIG_DASHBOARD_SHOW_CHAT = "dashboard.show.chat";
 	public static final String CONFIG_DASHBOARD_SHOW_MYROOMS = "dashboard.show.myrooms";
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/ImagePanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/ImagePanel.java
index dc07b37..487c59a 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/ImagePanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/ImagePanel.java
@@ -19,6 +19,7 @@
 package org.apache.openmeetings.web.common;
 
 import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_TITLE;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.PARAM_SRC;
 
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.markup.html.TransparentWebMarkupContainer;
@@ -50,6 +51,6 @@ public abstract class ImagePanel extends Panel {
 		profile.addOrReplace(new WebMarkupContainer("img").add(
 				AttributeModifier.append("alt", getTitle())
 				, AttributeModifier.append(ATTR_TITLE, getTitle())
-				, AttributeModifier.append("src", getImageUrl())));
+				, AttributeModifier.append(PARAM_SRC, getImageUrl())));
 	}
 }
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java
index 7d0f2e3..d75b7b6 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java
@@ -18,6 +18,9 @@
  */
 package org.apache.openmeetings.web.room.wb;
 
+import static org.apache.openmeetings.util.OpenmeetingsVariables.PARAM_SRC;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.PARAM__SRC;
+
 import java.util.function.Predicate;
 
 import org.apache.openmeetings.core.util.WebSocketHelper;
@@ -38,6 +41,7 @@ import com.github.openjson.JSONObject;
 
 public class WbWebSocketHelper extends WebSocketHelper {
 	public static final String PARAM_OBJ = "obj";
+	private static final String PARAM__POSTER = "_poster";
 
 	public static void send(IClusterWsMessage _m) {
 		if (_m instanceof WsMessageWb) {
@@ -93,27 +97,31 @@ public class WbWebSocketHelper extends WebSocketHelper {
 		JSONObject file = new JSONObject(_file.toString(new NullStringer()));
 		final FileSystemResourceReference ref;
 		final PageParameters pp = new PageParameters()
-				.add("id", fi.getId()).add("uid", c.getUid())
-				.add("ruid", ruid).add("wuid", _file.optString("uid"));
+				.add("id", fi.getId())
+				.add("ruid", ruid)
+				.add("wuid", _file.optString("uid"));
+		if (c != null) {
+			pp.add("uid", c.getUid());
+		}
 		file.put("deleted", !fi.exists());
 		switch (fi.getType()) {
 			case Video:
 				ref = new RoomResourceReference();
-				file.put("_src", urlFor(ref, pp));
-				file.put("_poster", urlFor(new RoomPreviewResourceReference(), pp));
+				file.put(PARAM__SRC, urlFor(ref, pp));
+				file.put(PARAM__POSTER, urlFor(new RoomPreviewResourceReference(), pp));
 				break;
 			case Recording:
 				ref = new Mp4RecordingResourceReference();
-				file.put("_src", urlFor(ref, pp));
-				file.put("_poster", urlFor(new PngRecordingResourceReference(), pp));
+				file.put(PARAM__SRC, urlFor(ref, pp));
+				file.put(PARAM__POSTER, urlFor(new PngRecordingResourceReference(), pp));
 				break;
 			case Presentation:
 				ref = new RoomResourceReference();
-				file.put("_src", urlFor(ref, pp));
+				file.put(PARAM__SRC, urlFor(ref, pp));
 				break;
 			default:
 				ref = new RoomResourceReference();
-				file.put("src", urlFor(ref, pp));
+				file.put(PARAM_SRC, urlFor(ref, pp));
 				break;
 		}
 		return file;
@@ -123,16 +131,42 @@ public class WbWebSocketHelper extends WebSocketHelper {
 		sendWbFile(roomId, wbId, ruid, file, fi, true);
 	}
 
+	//This is required cause WebSocketHelper will send message async
+	private static String patchUrl(String url, Client c) {
+		return String.format("%s&uid=%s", url, c.getUid());
+	}
+
+	private static JSONObject patchUrls(BaseFileItem fi, Client c, JSONObject f) {
+		switch (fi.getType()) {
+			case Video:
+				f.put(PARAM__SRC, patchUrl(f.getString(PARAM__SRC), c));
+				f.put(PARAM__POSTER, patchUrl(f.getString(PARAM__POSTER), c));
+				break;
+			case Recording:
+				f.put(PARAM__SRC, patchUrl(f.getString(PARAM__SRC), c));
+				f.put(PARAM__POSTER, patchUrl(f.getString(PARAM__POSTER), c));
+				break;
+			case Presentation:
+				f.put(PARAM__SRC, patchUrl(f.getString(PARAM__SRC), c));
+				break;
+			default:
+				f.put(PARAM_SRC, patchUrl(f.getString(PARAM_SRC), c));
+				break;
+		}
+		return f;
+	}
+
 	private static void sendWbFile(Long roomId, long wbId, String ruid, JSONObject file, BaseFileItem fi, boolean publish) {
 		if (publish) {
 			publish(new WsMessageWbFile(roomId, wbId, ruid, file, fi));
 		}
+		final JSONObject _f = addFileUrl(ruid, file, fi, null);
 		WebSocketHelper.sendRoom(
 				roomId
 				, new JSONObject().put("type", "wb")
 				, null
 				, (o, c) -> o.put("func", WbAction.createObj.name())
-							.put("param", getObjWbJson(wbId, addFileUrl(ruid, file, fi, c))).toString(new NullStringer()));
+							.put("param", getObjWbJson(wbId, patchUrls(fi, c, _f))).toString(new NullStringer()));
 	}
 
 	private static void sendWb(Long roomId, WbAction meth, JSONObject obj, Predicate<Client> check) {

-- 
To stop receiving notification emails like this one, please contact
solomax@apache.org.