You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zeppelin.apache.org by jo...@apache.org on 2018/08/26 04:43:56 UTC
[13/49] zeppelin git commit: [ZEPPELIN-3740] Adopt
`google-java-format` and `fmt-maven-plugin`
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/55f6c91c/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java
----------------------------------------------------------------------
diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java b/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java
index a3fce8f..8606a74 100644
--- a/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java
+++ b/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java
@@ -20,6 +20,26 @@ import com.google.common.base.Strings;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
+import java.io.IOException;
+import java.lang.reflect.Type;
+import java.net.URISyntaxException;
+import java.net.UnknownHostException;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.apache.zeppelin.conf.ZeppelinConfiguration;
@@ -73,41 +93,16 @@ import org.quartz.SchedulerException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.servlet.http.HttpServletRequest;
-import java.io.IOException;
-import java.lang.reflect.Type;
-import java.net.URISyntaxException;
-import java.net.UnknownHostException;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * Zeppelin websocket service.
- */
+/** Zeppelin websocket service. */
public class NotebookServer extends WebSocketServlet
implements NotebookSocketListener,
- AngularObjectRegistryListener,
- RemoteInterpreterProcessListener,
- ApplicationEventListener,
- ParagraphJobListener,
- NotebookServerMBean {
+ AngularObjectRegistryListener,
+ RemoteInterpreterProcessListener,
+ ApplicationEventListener,
+ ParagraphJobListener,
+ NotebookServerMBean {
- /**
- * Job manager service type.
- */
+ /** Job manager service type. */
protected enum JobManagerServiceType {
JOB_MANAGER_PAGE("JOB_MANAGER_PAGE");
private String serviceTypeKey;
@@ -121,17 +116,17 @@ public class NotebookServer extends WebSocketServlet
}
}
-
// private HashSet<String> collaborativeModeList = new HashSet<>();
- private Boolean collaborativeModeEnable = ZeppelinConfiguration
- .create()
- .isZeppelinNotebookCollaborativeModeEnable();
+ private Boolean collaborativeModeEnable =
+ ZeppelinConfiguration.create().isZeppelinNotebookCollaborativeModeEnable();
private static final Logger LOG = LoggerFactory.getLogger(NotebookServer.class);
- private static Gson gson = new GsonBuilder()
- .setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ")
- .registerTypeAdapter(Date.class, new NotebookImportDeserializer())
- .setPrettyPrinting()
- .registerTypeAdapterFactory(Input.TypeAdapterFactory).create();
+ private static Gson gson =
+ new GsonBuilder()
+ .setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ")
+ .registerTypeAdapter(Date.class, new NotebookImportDeserializer())
+ .setPrettyPrinting()
+ .registerTypeAdapterFactory(Input.TypeAdapterFactory)
+ .create();
private ConnectionManager connectionManager;
private NotebookService notebookService;
@@ -140,7 +135,6 @@ public class NotebookServer extends WebSocketServlet
private ExecutorService executorService = Executors.newFixedThreadPool(10);
-
public NotebookServer() {
this.connectionManager = new ConnectionManager();
}
@@ -196,28 +190,41 @@ public class NotebookServer extends WebSocketServlet
try {
Message messagereceived = deserializeMessage(msg);
if (messagereceived.op != OP.PING) {
- LOG.debug("RECEIVE: " + messagereceived.op +
- ", RECEIVE PRINCIPAL: " + messagereceived.principal +
- ", RECEIVE TICKET: " + messagereceived.ticket +
- ", RECEIVE ROLES: " + messagereceived.roles +
- ", RECEIVE DATA: " + messagereceived.data);
+ LOG.debug(
+ "RECEIVE: "
+ + messagereceived.op
+ + ", RECEIVE PRINCIPAL: "
+ + messagereceived.principal
+ + ", RECEIVE TICKET: "
+ + messagereceived.ticket
+ + ", RECEIVE ROLES: "
+ + messagereceived.roles
+ + ", RECEIVE DATA: "
+ + messagereceived.data);
}
if (LOG.isTraceEnabled()) {
LOG.trace("RECEIVE MSG = " + messagereceived);
}
String ticket = TicketContainer.instance.getTicket(messagereceived.principal);
- if (ticket != null &&
- (messagereceived.ticket == null || !ticket.equals(messagereceived.ticket))) {
+ if (ticket != null
+ && (messagereceived.ticket == null || !ticket.equals(messagereceived.ticket))) {
/* not to pollute logs, log instead of exception */
if (StringUtils.isEmpty(messagereceived.ticket)) {
- LOG.debug("{} message: invalid ticket {} != {}", messagereceived.op,
- messagereceived.ticket, ticket);
+ LOG.debug(
+ "{} message: invalid ticket {} != {}",
+ messagereceived.op,
+ messagereceived.ticket,
+ ticket);
} else {
if (!messagereceived.op.equals(OP.PING)) {
- conn.send(serializeMessage(new Message(OP.SESSION_LOGOUT).put("info",
- "Your ticket is invalid possibly due to server restart. "
- + "Please login again.")));
+ conn.send(
+ serializeMessage(
+ new Message(OP.SESSION_LOGOUT)
+ .put(
+ "info",
+ "Your ticket is invalid possibly due to server restart. "
+ + "Please login again.")));
}
}
return;
@@ -233,8 +240,7 @@ public class NotebookServer extends WebSocketServlet
userAndRoles.add(messagereceived.principal);
if (!messagereceived.roles.equals("")) {
HashSet<String> roles =
- gson.fromJson(messagereceived.roles, new TypeToken<HashSet<String>>() {
- }.getType());
+ gson.fromJson(messagereceived.roles, new TypeToken<HashSet<String>>() {}.getType());
if (roles != null) {
userAndRoles.addAll(roles);
}
@@ -243,8 +249,8 @@ public class NotebookServer extends WebSocketServlet
connectionManager.addUserConnection(messagereceived.principal, conn);
}
AuthenticationInfo subject =
- new AuthenticationInfo(messagereceived.principal, messagereceived.roles,
- messagereceived.ticket);
+ new AuthenticationInfo(
+ messagereceived.principal, messagereceived.roles, messagereceived.ticket);
// Lets be elegant here
switch (messagereceived.op) {
@@ -342,7 +348,7 @@ public class NotebookServer extends WebSocketServlet
completion(conn, messagereceived);
break;
case PING:
- break; //do nothing
+ break; // do nothing
case ANGULAR_OBJECT_UPDATED:
angularObjectUpdated(conn, userAndRoles, notebook, messagereceived);
break;
@@ -432,44 +438,54 @@ public class NotebookServer extends WebSocketServlet
public void unicastNoteJobInfo(NotebookSocket conn, Message fromMessage) throws IOException {
connectionManager.addNoteConnection(JobManagerServiceType.JOB_MANAGER_PAGE.getKey(), conn);
- getJobManagerService().getNoteJobInfoByUnixTime(0, getServiceContext(fromMessage),
- new WebSocketServiceCallback<List<JobManagerService.NoteJobInfo>>(conn) {
- @Override
- public void onSuccess(List<JobManagerService.NoteJobInfo> notesJobInfo,
- ServiceContext context) throws IOException {
- super.onSuccess(notesJobInfo, context);
- Map<String, Object> response = new HashMap<>();
- response.put("lastResponseUnixTime", System.currentTimeMillis());
- response.put("jobs", notesJobInfo);
- conn.send(serializeMessage(new Message(OP.LIST_NOTE_JOBS).put("noteJobs", response)));
- }
+ getJobManagerService()
+ .getNoteJobInfoByUnixTime(
+ 0,
+ getServiceContext(fromMessage),
+ new WebSocketServiceCallback<List<JobManagerService.NoteJobInfo>>(conn) {
+ @Override
+ public void onSuccess(
+ List<JobManagerService.NoteJobInfo> notesJobInfo, ServiceContext context)
+ throws IOException {
+ super.onSuccess(notesJobInfo, context);
+ Map<String, Object> response = new HashMap<>();
+ response.put("lastResponseUnixTime", System.currentTimeMillis());
+ response.put("jobs", notesJobInfo);
+ conn.send(
+ serializeMessage(new Message(OP.LIST_NOTE_JOBS).put("noteJobs", response)));
+ }
- @Override
- public void onFailure(Exception ex, ServiceContext context) throws IOException {
- LOG.warn(ex.getMessage());
- }
- });
+ @Override
+ public void onFailure(Exception ex, ServiceContext context) throws IOException {
+ LOG.warn(ex.getMessage());
+ }
+ });
}
public void broadcastUpdateNoteJobInfo(long lastUpdateUnixTime) throws IOException {
- getJobManagerService().getNoteJobInfoByUnixTime(lastUpdateUnixTime, null,
- new WebSocketServiceCallback<List<JobManagerService.NoteJobInfo>>(null) {
- @Override
- public void onSuccess(List<JobManagerService.NoteJobInfo> notesJobInfo,
- ServiceContext context) throws IOException {
- super.onSuccess(notesJobInfo, context);
- Map<String, Object> response = new HashMap<>();
- response.put("lastResponseUnixTime", System.currentTimeMillis());
- response.put("jobs", notesJobInfo);
- connectionManager.broadcast(JobManagerServiceType.JOB_MANAGER_PAGE.getKey(),
- new Message(OP.LIST_UPDATE_NOTE_JOBS).put("noteRunningJobs", response));
- }
+ getJobManagerService()
+ .getNoteJobInfoByUnixTime(
+ lastUpdateUnixTime,
+ null,
+ new WebSocketServiceCallback<List<JobManagerService.NoteJobInfo>>(null) {
+ @Override
+ public void onSuccess(
+ List<JobManagerService.NoteJobInfo> notesJobInfo, ServiceContext context)
+ throws IOException {
+ super.onSuccess(notesJobInfo, context);
+ Map<String, Object> response = new HashMap<>();
+ response.put("lastResponseUnixTime", System.currentTimeMillis());
+ response.put("jobs", notesJobInfo);
+ connectionManager.broadcast(
+ JobManagerServiceType.JOB_MANAGER_PAGE.getKey(),
+ new Message(OP.LIST_UPDATE_NOTE_JOBS).put("noteRunningJobs", response));
+ }
- @Override
- public void onFailure(Exception ex, ServiceContext context) throws IOException {
- LOG.warn(ex.getMessage());
- }
- });
+ @Override
+ public void onFailure(Exception ex, ServiceContext context) throws IOException {
+ LOG.warn(ex.getMessage());
+ }
+ });
}
public void unsubscribeNoteJobInfo(NotebookSocket conn) {
@@ -480,13 +496,13 @@ public class NotebookServer extends WebSocketServlet
String noteId = (String) fromMessage.data.get("noteId");
List<InterpreterSettingsList> settingList =
InterpreterBindingUtils.getInterpreterBindings(notebook(), noteId);
- conn.send(serializeMessage(
- new Message(OP.INTERPRETER_BINDINGS).put("interpreterBindings", settingList)));
+ conn.send(
+ serializeMessage(
+ new Message(OP.INTERPRETER_BINDINGS).put("interpreterBindings", settingList)));
}
- public List<Map<String, String>> generateNotesInfo(boolean needsReload,
- AuthenticationInfo subject,
- Set<String> userAndRoles) {
+ public List<Map<String, String>> generateNotesInfo(
+ boolean needsReload, AuthenticationInfo subject, Set<String> userAndRoles) {
Notebook notebook = notebook();
ZeppelinConfiguration conf = notebook.getConf();
@@ -529,17 +545,18 @@ public class NotebookServer extends WebSocketServlet
if (note.isPersonalizedMode()) {
broadcastParagraphs(p.getUserParagraphMap(), p);
} else {
- connectionManager.broadcast(note.getId(),
+ connectionManager.broadcast(
+ note.getId(),
new Message(OP.PARAGRAPH).put("paragraph", new ParagraphWithRuntimeInfo(p)));
}
}
- public void broadcastParagraphs(Map<String, Paragraph> userParagraphMap,
- Paragraph defaultParagraph) {
+ public void broadcastParagraphs(
+ Map<String, Paragraph> userParagraphMap, Paragraph defaultParagraph) {
if (null != userParagraphMap) {
for (String user : userParagraphMap.keySet()) {
- connectionManager.multicastToUser(user,
- new Message(OP.PARAGRAPH).put("paragraph", userParagraphMap.get(user)));
+ connectionManager.multicastToUser(
+ user, new Message(OP.PARAGRAPH).put("paragraph", userParagraphMap.get(user)));
}
}
}
@@ -547,7 +564,8 @@ public class NotebookServer extends WebSocketServlet
private void broadcastNewParagraph(Note note, Paragraph para) {
LOG.info("Broadcasting paragraph on run call instead of note.");
int paraIndex = note.getParagraphs().indexOf(para);
- connectionManager.broadcast(note.getId(),
+ connectionManager.broadcast(
+ note.getId(),
new Message(OP.PARAGRAPH_ADDED).put("paragraph", para).put("index", paraIndex));
}
@@ -555,125 +573,152 @@ public class NotebookServer extends WebSocketServlet
if (subject == null) {
subject = new AuthenticationInfo(StringUtils.EMPTY);
}
- //send first to requesting user
+ // send first to requesting user
List<Map<String, String>> notesInfo = generateNotesInfo(false, subject, userAndRoles);
- connectionManager.multicastToUser(subject.getUser(),
- new Message(OP.NOTES_INFO).put("notes", notesInfo));
- //to others afterwards
+ connectionManager.multicastToUser(
+ subject.getUser(), new Message(OP.NOTES_INFO).put("notes", notesInfo));
+ // to others afterwards
connectionManager.broadcastNoteListExcept(notesInfo, subject);
}
public void listNotes(NotebookSocket conn, Message message) throws IOException {
- getNotebookService().listNotes(false, getServiceContext(message),
- new WebSocketServiceCallback<List<Map<String, String>>>(conn) {
- @Override
- public void onSuccess(List<Map<String, String>> notesInfo,
- ServiceContext context) throws IOException {
- super.onSuccess(notesInfo, context);
- connectionManager.unicast(new Message(OP.NOTES_INFO).put("notes", notesInfo), conn);
- }
- });
+ getNotebookService()
+ .listNotes(
+ false,
+ getServiceContext(message),
+ new WebSocketServiceCallback<List<Map<String, String>>>(conn) {
+ @Override
+ public void onSuccess(List<Map<String, String>> notesInfo, ServiceContext context)
+ throws IOException {
+ super.onSuccess(notesInfo, context);
+ connectionManager.unicast(new Message(OP.NOTES_INFO).put("notes", notesInfo), conn);
+ }
+ });
}
public void broadcastReloadedNoteList(NotebookSocket conn, ServiceContext context)
throws IOException {
- getNotebookService().listNotes(false, context,
- new WebSocketServiceCallback<List<Map<String, String>>>(conn) {
- @Override
- public void onSuccess(List<Map<String, String>> notesInfo,
- ServiceContext context) throws IOException {
- super.onSuccess(notesInfo, context);
- connectionManager.multicastToUser(context.getAutheInfo().getUser(),
- new Message(OP.NOTES_INFO).put("notes", notesInfo));
- //to others afterwards
- connectionManager.broadcastNoteListExcept(notesInfo, context.getAutheInfo());
- }
- });
+ getNotebookService()
+ .listNotes(
+ false,
+ context,
+ new WebSocketServiceCallback<List<Map<String, String>>>(conn) {
+ @Override
+ public void onSuccess(List<Map<String, String>> notesInfo, ServiceContext context)
+ throws IOException {
+ super.onSuccess(notesInfo, context);
+ connectionManager.multicastToUser(
+ context.getAutheInfo().getUser(),
+ new Message(OP.NOTES_INFO).put("notes", notesInfo));
+ // to others afterwards
+ connectionManager.broadcastNoteListExcept(notesInfo, context.getAutheInfo());
+ }
+ });
}
- void permissionError(NotebookSocket conn, String op, String userName, Set<String> userAndRoles,
- Set<String> allowed) throws IOException {
+ void permissionError(
+ NotebookSocket conn,
+ String op,
+ String userName,
+ Set<String> userAndRoles,
+ Set<String> allowed)
+ throws IOException {
LOG.info("Cannot {}. Connection readers {}. Allowed readers {}", op, userAndRoles, allowed);
- conn.send(serializeMessage(new Message(OP.AUTH_INFO).put("info",
- "Insufficient privileges to " + op + " note.\n\n" + "Allowed users or roles: " + allowed
- .toString() + "\n\n" + "But the user " + userName + " belongs to: " + userAndRoles
- .toString())));
- }
-
-
- /**
- * @return false if user doesn't have writer permission for this paragraph
- */
- private boolean hasParagraphWriterPermission(NotebookSocket conn, Notebook notebook,
- String noteId, HashSet<String> userAndRoles,
- String principal, String op)
+ conn.send(
+ serializeMessage(
+ new Message(OP.AUTH_INFO)
+ .put(
+ "info",
+ "Insufficient privileges to "
+ + op
+ + " note.\n\n"
+ + "Allowed users or roles: "
+ + allowed.toString()
+ + "\n\n"
+ + "But the user "
+ + userName
+ + " belongs to: "
+ + userAndRoles.toString())));
+ }
+
+ /** @return false if user doesn't have writer permission for this paragraph */
+ private boolean hasParagraphWriterPermission(
+ NotebookSocket conn,
+ Notebook notebook,
+ String noteId,
+ HashSet<String> userAndRoles,
+ String principal,
+ String op)
throws IOException {
NotebookAuthorization notebookAuthorization = notebook.getNotebookAuthorization();
if (!notebookAuthorization.isWriter(noteId, userAndRoles)) {
- permissionError(conn, op, principal, userAndRoles,
- notebookAuthorization.getOwners(noteId));
+ permissionError(conn, op, principal, userAndRoles, notebookAuthorization.getOwners(noteId));
return false;
}
return true;
}
- /**
- * @return false if user doesn't have owner permission for this paragraph
- */
- private boolean hasParagraphOwnerPermission(NotebookSocket conn, Notebook notebook, String noteId,
- HashSet<String> userAndRoles, String principal,
- String op) throws IOException {
+ /** @return false if user doesn't have owner permission for this paragraph */
+ private boolean hasParagraphOwnerPermission(
+ NotebookSocket conn,
+ Notebook notebook,
+ String noteId,
+ HashSet<String> userAndRoles,
+ String principal,
+ String op)
+ throws IOException {
NotebookAuthorization notebookAuthorization = notebook.getNotebookAuthorization();
if (!notebookAuthorization.isOwner(noteId, userAndRoles)) {
- permissionError(conn, op, principal, userAndRoles,
- notebookAuthorization.getOwners(noteId));
+ permissionError(conn, op, principal, userAndRoles, notebookAuthorization.getOwners(noteId));
return false;
}
return true;
}
- private void getNote(NotebookSocket conn,
- Message fromMessage) throws IOException {
+ private void getNote(NotebookSocket conn, Message fromMessage) throws IOException {
String noteId = (String) fromMessage.get("id");
if (noteId == null) {
return;
}
- getNotebookService().getNote(noteId, getServiceContext(fromMessage),
- new WebSocketServiceCallback<Note>(conn) {
- @Override
- public void onSuccess(Note note, ServiceContext context) throws IOException {
- connectionManager.addNoteConnection(note.getId(), conn);
- conn.send(serializeMessage(new Message(OP.NOTE).put("note", note)));
- sendAllAngularObjects(note, context.getAutheInfo().getUser(), conn);
- }
- });
- }
-
- private void getHomeNote(NotebookSocket conn,
- Message fromMessage) throws IOException {
-
- getNotebookService().getHomeNote(getServiceContext(fromMessage),
- new WebSocketServiceCallback<Note>(conn) {
- @Override
- public void onSuccess(Note note, ServiceContext context) throws IOException {
- super.onSuccess(note, context);
- if (note != null) {
- connectionManager.addNoteConnection(note.getId(), conn);
- conn.send(serializeMessage(new Message(OP.NOTE).put("note", note)));
- sendAllAngularObjects(note, context.getAutheInfo().getUser(), conn);
- } else {
- connectionManager.removeConnectionFromAllNote(conn);
- conn.send(serializeMessage(new Message(OP.NOTE).put("note", null)));
- }
- }
- });
+ getNotebookService()
+ .getNote(
+ noteId,
+ getServiceContext(fromMessage),
+ new WebSocketServiceCallback<Note>(conn) {
+ @Override
+ public void onSuccess(Note note, ServiceContext context) throws IOException {
+ connectionManager.addNoteConnection(note.getId(), conn);
+ conn.send(serializeMessage(new Message(OP.NOTE).put("note", note)));
+ sendAllAngularObjects(note, context.getAutheInfo().getUser(), conn);
+ }
+ });
+ }
+
+ private void getHomeNote(NotebookSocket conn, Message fromMessage) throws IOException {
+
+ getNotebookService()
+ .getHomeNote(
+ getServiceContext(fromMessage),
+ new WebSocketServiceCallback<Note>(conn) {
+ @Override
+ public void onSuccess(Note note, ServiceContext context) throws IOException {
+ super.onSuccess(note, context);
+ if (note != null) {
+ connectionManager.addNoteConnection(note.getId(), conn);
+ conn.send(serializeMessage(new Message(OP.NOTE).put("note", note)));
+ sendAllAngularObjects(note, context.getAutheInfo().getUser(), conn);
+ } else {
+ connectionManager.removeConnectionFromAllNote(conn);
+ conn.send(serializeMessage(new Message(OP.NOTE).put("note", null)));
+ }
+ }
+ });
}
- private void updateNote(NotebookSocket conn,
- Message fromMessage) throws IOException {
+ private void updateNote(NotebookSocket conn, Message fromMessage) throws IOException {
String noteId = (String) fromMessage.get("id");
String name = (String) fromMessage.get("name");
Map<String, Object> config = (Map<String, Object>) fromMessage.get("config");
@@ -684,20 +729,29 @@ public class NotebookServer extends WebSocketServlet
return;
}
- getNotebookService().updateNote(noteId, name, config, getServiceContext(fromMessage),
- new WebSocketServiceCallback<Note>(conn) {
- @Override
- public void onSuccess(Note note, ServiceContext context) throws IOException {
- connectionManager.broadcast(note.getId(), new Message(OP.NOTE_UPDATED).put("name", name)
- .put("config", config)
- .put("info", note.getInfo()));
- broadcastNoteList(context.getAutheInfo(), context.getUserAndRoles());
- }
- });
+ getNotebookService()
+ .updateNote(
+ noteId,
+ name,
+ config,
+ getServiceContext(fromMessage),
+ new WebSocketServiceCallback<Note>(conn) {
+ @Override
+ public void onSuccess(Note note, ServiceContext context) throws IOException {
+ connectionManager.broadcast(
+ note.getId(),
+ new Message(OP.NOTE_UPDATED)
+ .put("name", name)
+ .put("config", config)
+ .put("info", note.getInfo()));
+ broadcastNoteList(context.getAutheInfo(), context.getUserAndRoles());
+ }
+ });
}
- private void updatePersonalizedMode(NotebookSocket conn, HashSet<String> userAndRoles,
- Notebook notebook, Message fromMessage) throws IOException {
+ private void updatePersonalizedMode(
+ NotebookSocket conn, HashSet<String> userAndRoles, Notebook notebook, Message fromMessage)
+ throws IOException {
String noteId = (String) fromMessage.get("id");
String personalized = (String) fromMessage.get("personalized");
boolean isPersonalized = personalized.equals("true") ? true : false;
@@ -706,8 +760,8 @@ public class NotebookServer extends WebSocketServlet
return;
}
- if (!hasParagraphOwnerPermission(conn, notebook, noteId,
- userAndRoles, fromMessage.principal, "persoanlized")) {
+ if (!hasParagraphOwnerPermission(
+ conn, notebook, noteId, userAndRoles, fromMessage.principal, "persoanlized")) {
return;
}
@@ -720,31 +774,40 @@ public class NotebookServer extends WebSocketServlet
}
}
- private void renameNote(NotebookSocket conn,
- Message fromMessage) throws IOException {
+ private void renameNote(NotebookSocket conn, Message fromMessage) throws IOException {
String noteId = (String) fromMessage.get("id");
String name = (String) fromMessage.get("name");
if (noteId == null) {
return;
}
- getNotebookService().renameNote(noteId, name, getServiceContext(fromMessage),
- new WebSocketServiceCallback<Note>(conn) {
- @Override
- public void onSuccess(Note note, ServiceContext context) throws IOException {
- super.onSuccess(note, context);
- broadcastNote(note);
- broadcastNoteList(context.getAutheInfo(), context.getUserAndRoles());
- }
- });
+ getNotebookService()
+ .renameNote(
+ noteId,
+ name,
+ getServiceContext(fromMessage),
+ new WebSocketServiceCallback<Note>(conn) {
+ @Override
+ public void onSuccess(Note note, ServiceContext context) throws IOException {
+ super.onSuccess(note, context);
+ broadcastNote(note);
+ broadcastNoteList(context.getAutheInfo(), context.getUserAndRoles());
+ }
+ });
}
- private void renameFolder(NotebookSocket conn, HashSet<String> userAndRoles, Notebook notebook,
- Message fromMessage) throws IOException {
+ private void renameFolder(
+ NotebookSocket conn, HashSet<String> userAndRoles, Notebook notebook, Message fromMessage)
+ throws IOException {
renameFolder(conn, userAndRoles, notebook, fromMessage, "rename");
}
- private void renameFolder(NotebookSocket conn, HashSet<String> userAndRoles, Notebook notebook,
- Message fromMessage, String op) throws IOException {
+ private void renameFolder(
+ NotebookSocket conn,
+ HashSet<String> userAndRoles,
+ Notebook notebook,
+ Message fromMessage,
+ String op)
+ throws IOException {
String oldFolderId = (String) fromMessage.get("id");
String newFolderId = (String) fromMessage.get("name");
@@ -754,8 +817,13 @@ public class NotebookServer extends WebSocketServlet
for (Note note : notebook.getNotesUnderFolder(oldFolderId)) {
String noteId = note.getId();
- if (!hasParagraphOwnerPermission(conn, notebook, noteId,
- userAndRoles, fromMessage.principal, op + " folder of '" + note.getName() + "'")) {
+ if (!hasParagraphOwnerPermission(
+ conn,
+ notebook,
+ noteId,
+ userAndRoles,
+ fromMessage.principal,
+ op + " folder of '" + note.getName() + "'")) {
return;
}
}
@@ -775,47 +843,57 @@ public class NotebookServer extends WebSocketServlet
}
}
- private void createNote(NotebookSocket conn,
- Message message) throws IOException {
+ private void createNote(NotebookSocket conn, Message message) throws IOException {
String noteName = (String) message.get("name");
String defaultInterpreterGroup = (String) message.get("defaultInterpreterGroup");
- getNotebookService().createNote(noteName, defaultInterpreterGroup, getServiceContext(message),
- new WebSocketServiceCallback<Note>(conn) {
- @Override
- public void onSuccess(Note note, ServiceContext context) throws IOException {
- super.onSuccess(note, context);
- connectionManager.addNoteConnection(note.getId(), conn);
- conn.send(serializeMessage(new Message(OP.NEW_NOTE).put("note", note)));
- broadcastNoteList(context.getAutheInfo(), context.getUserAndRoles());
- }
+ getNotebookService()
+ .createNote(
+ noteName,
+ defaultInterpreterGroup,
+ getServiceContext(message),
+ new WebSocketServiceCallback<Note>(conn) {
+ @Override
+ public void onSuccess(Note note, ServiceContext context) throws IOException {
+ super.onSuccess(note, context);
+ connectionManager.addNoteConnection(note.getId(), conn);
+ conn.send(serializeMessage(new Message(OP.NEW_NOTE).put("note", note)));
+ broadcastNoteList(context.getAutheInfo(), context.getUserAndRoles());
+ }
- @Override
- public void onFailure(Exception ex, ServiceContext context) throws IOException {
- super.onFailure(ex, context);
- conn.send(serializeMessage(new Message(OP.ERROR_INFO).put("info",
- "Failed to create note.\n" + ExceptionUtils.getMessage(ex))));
- }
- });
+ @Override
+ public void onFailure(Exception ex, ServiceContext context) throws IOException {
+ super.onFailure(ex, context);
+ conn.send(
+ serializeMessage(
+ new Message(OP.ERROR_INFO)
+ .put(
+ "info",
+ "Failed to create note.\n" + ExceptionUtils.getMessage(ex))));
+ }
+ });
}
- private void deleteNote(NotebookSocket conn,
- Message fromMessage) throws IOException {
+ private void deleteNote(NotebookSocket conn, Message fromMessage) throws IOException {
String noteId = (String) fromMessage.get("id");
- getNotebookService().removeNote(noteId, getServiceContext(fromMessage),
- new WebSocketServiceCallback<String>(conn) {
- @Override
- public void onSuccess(String message, ServiceContext context) throws IOException {
- super.onSuccess(message, context);
- connectionManager.removeNoteConnection(noteId);
- broadcastNoteList(context.getAutheInfo(), context.getUserAndRoles());
- }
- });
+ getNotebookService()
+ .removeNote(
+ noteId,
+ getServiceContext(fromMessage),
+ new WebSocketServiceCallback<String>(conn) {
+ @Override
+ public void onSuccess(String message, ServiceContext context) throws IOException {
+ super.onSuccess(message, context);
+ connectionManager.removeNoteConnection(noteId);
+ broadcastNoteList(context.getAutheInfo(), context.getUserAndRoles());
+ }
+ });
}
- private void removeFolder(NotebookSocket conn, HashSet<String> userAndRoles, Notebook notebook,
- Message fromMessage) throws IOException {
+ private void removeFolder(
+ NotebookSocket conn, HashSet<String> userAndRoles, Notebook notebook, Message fromMessage)
+ throws IOException {
String folderId = (String) fromMessage.get("id");
if (folderId == null) {
return;
@@ -825,8 +903,13 @@ public class NotebookServer extends WebSocketServlet
for (Note note : notes) {
String noteId = note.getId();
- if (!hasParagraphOwnerPermission(conn, notebook, noteId,
- userAndRoles, fromMessage.principal, "remove folder of '" + note.getName() + "'")) {
+ if (!hasParagraphOwnerPermission(
+ conn,
+ notebook,
+ noteId,
+ userAndRoles,
+ fromMessage.principal,
+ "remove folder of '" + note.getName() + "'")) {
return;
}
}
@@ -839,8 +922,9 @@ public class NotebookServer extends WebSocketServlet
broadcastNoteList(subject, userAndRoles);
}
- private void moveNoteToTrash(NotebookSocket conn, HashSet<String> userAndRoles, Notebook notebook,
- Message fromMessage) throws SchedulerException, IOException {
+ private void moveNoteToTrash(
+ NotebookSocket conn, HashSet<String> userAndRoles, Notebook notebook, Message fromMessage)
+ throws SchedulerException, IOException {
String noteId = (String) fromMessage.get("id");
if (noteId == null) {
return;
@@ -861,8 +945,8 @@ public class NotebookServer extends WebSocketServlet
}
}
- private void moveFolderToTrash(NotebookSocket conn, HashSet<String> userAndRoles,
- Notebook notebook, Message fromMessage)
+ private void moveFolderToTrash(
+ NotebookSocket conn, HashSet<String> userAndRoles, Notebook notebook, Message fromMessage)
throws SchedulerException, IOException {
String folderId = (String) fromMessage.get("id");
if (folderId == null) {
@@ -891,16 +975,15 @@ public class NotebookServer extends WebSocketServlet
}
}
- private void restoreNote(NotebookSocket conn,
- Message fromMessage) throws IOException {
+ private void restoreNote(NotebookSocket conn, Message fromMessage) throws IOException {
String noteId = (String) fromMessage.get("id");
- getNotebookService().restoreNote(noteId, getServiceContext(fromMessage),
- new WebSocketServiceCallback(conn));
-
+ getNotebookService()
+ .restoreNote(noteId, getServiceContext(fromMessage), new WebSocketServiceCallback(conn));
}
- private void restoreFolder(NotebookSocket conn, HashSet<String> userAndRoles, Notebook notebook,
- Message fromMessage) throws IOException {
+ private void restoreFolder(
+ NotebookSocket conn, HashSet<String> userAndRoles, Notebook notebook, Message fromMessage)
+ throws IOException {
String folderId = (String) fromMessage.get("id");
if (folderId == null) {
@@ -911,7 +994,7 @@ public class NotebookServer extends WebSocketServlet
if (folder != null && folder.isTrash()) {
String restoreName = folder.getId().replaceFirst(Folder.TRASH_FOLDER_ID + "/", "").trim();
- //restore cron for each paragraph
+ // restore cron for each paragraph
List<Note> noteList = folder.getNotesRecursively();
for (Note note : noteList) {
Map<String, Object> config = note.getConfig();
@@ -930,8 +1013,9 @@ public class NotebookServer extends WebSocketServlet
}
}
- private void restoreAll(NotebookSocket conn, HashSet<String> userAndRoles, Notebook notebook,
- Message fromMessage) throws IOException {
+ private void restoreAll(
+ NotebookSocket conn, HashSet<String> userAndRoles, Notebook notebook, Message fromMessage)
+ throws IOException {
Folder trashFolder = notebook.getFolder(Folder.TRASH_FOLDER_ID);
if (trashFolder != null) {
fromMessage.data = new HashMap<>();
@@ -941,15 +1025,15 @@ public class NotebookServer extends WebSocketServlet
}
}
- private void emptyTrash(NotebookSocket conn, HashSet<String> userAndRoles, Notebook notebook,
- Message fromMessage) throws SchedulerException, IOException {
+ private void emptyTrash(
+ NotebookSocket conn, HashSet<String> userAndRoles, Notebook notebook, Message fromMessage)
+ throws SchedulerException, IOException {
fromMessage.data = new HashMap<>();
fromMessage.put("id", Folder.TRASH_FOLDER_ID);
removeFolder(conn, userAndRoles, notebook, fromMessage);
}
- private void updateParagraph(NotebookSocket conn,
- Message fromMessage) throws IOException {
+ private void updateParagraph(NotebookSocket conn, Message fromMessage) throws IOException {
String paragraphId = (String) fromMessage.get("id");
String noteId = connectionManager.getAssociatedNoteId(conn);
if (noteId == null) {
@@ -960,25 +1044,33 @@ public class NotebookServer extends WebSocketServlet
Map<String, Object> params = (Map<String, Object>) fromMessage.get("params");
Map<String, Object> config = (Map<String, Object>) fromMessage.get("config");
- getNotebookService().updateParagraph(noteId, paragraphId, title, text, params, config,
- getServiceContext(fromMessage),
- new WebSocketServiceCallback<Paragraph>(conn) {
- @Override
- public void onSuccess(Paragraph p, ServiceContext context) throws IOException {
- super.onSuccess(p, context);
- if (p.getNote().isPersonalizedMode()) {
- Map<String, Paragraph> userParagraphMap =
- p.getNote().getParagraph(paragraphId).getUserParagraphMap();
- broadcastParagraphs(userParagraphMap, p);
- } else {
- broadcastParagraph(p.getNote(), p);
- }
- }
- });
+ getNotebookService()
+ .updateParagraph(
+ noteId,
+ paragraphId,
+ title,
+ text,
+ params,
+ config,
+ getServiceContext(fromMessage),
+ new WebSocketServiceCallback<Paragraph>(conn) {
+ @Override
+ public void onSuccess(Paragraph p, ServiceContext context) throws IOException {
+ super.onSuccess(p, context);
+ if (p.getNote().isPersonalizedMode()) {
+ Map<String, Paragraph> userParagraphMap =
+ p.getNote().getParagraph(paragraphId).getUserParagraphMap();
+ broadcastParagraphs(userParagraphMap, p);
+ } else {
+ broadcastParagraph(p.getNote(), p);
+ }
+ }
+ });
}
- private void patchParagraph(NotebookSocket conn, HashSet<String> userAndRoles,
- Notebook notebook, Message fromMessage) throws IOException {
+ private void patchParagraph(
+ NotebookSocket conn, HashSet<String> userAndRoles, Notebook notebook, Message fromMessage)
+ throws IOException {
if (!collaborativeModeEnable) {
return;
}
@@ -995,8 +1087,8 @@ public class NotebookServer extends WebSocketServlet
}
}
- if (!hasParagraphWriterPermission(conn, notebook, noteId,
- userAndRoles, fromMessage.principal, "write")) {
+ if (!hasParagraphWriterPermission(
+ conn, notebook, noteId, userAndRoles, fromMessage.principal, "write")) {
return;
}
@@ -1028,131 +1120,153 @@ public class NotebookServer extends WebSocketServlet
String paragraphText = p.getText() == null ? "" : p.getText();
paragraphText = (String) dmp.patchApply(patches, paragraphText)[0];
p.setText(paragraphText);
- Message message = new Message(OP.PATCH_PARAGRAPH).put("patch", patchText)
- .put("paragraphId", p.getId());
+ Message message =
+ new Message(OP.PATCH_PARAGRAPH).put("patch", patchText).put("paragraphId", p.getId());
connectionManager.broadcastExcept(note.getId(), message, conn);
}
- private void cloneNote(NotebookSocket conn,
- Message fromMessage) throws IOException {
+ private void cloneNote(NotebookSocket conn, Message fromMessage) throws IOException {
String noteId = connectionManager.getAssociatedNoteId(conn);
String name = (String) fromMessage.get("name");
- getNotebookService().cloneNote(noteId, name, getServiceContext(fromMessage),
- new WebSocketServiceCallback<Note>(conn) {
- @Override
- public void onSuccess(Note newNote, ServiceContext context) throws IOException {
- super.onSuccess(newNote, context);
- connectionManager.addNoteConnection(newNote.getId(), conn);
- conn.send(serializeMessage(new Message(OP.NEW_NOTE).put("note", newNote)));
- broadcastNoteList(context.getAutheInfo(), context.getUserAndRoles());
- }
- });
+ getNotebookService()
+ .cloneNote(
+ noteId,
+ name,
+ getServiceContext(fromMessage),
+ new WebSocketServiceCallback<Note>(conn) {
+ @Override
+ public void onSuccess(Note newNote, ServiceContext context) throws IOException {
+ super.onSuccess(newNote, context);
+ connectionManager.addNoteConnection(newNote.getId(), conn);
+ conn.send(serializeMessage(new Message(OP.NEW_NOTE).put("note", newNote)));
+ broadcastNoteList(context.getAutheInfo(), context.getUserAndRoles());
+ }
+ });
}
- private void clearAllParagraphOutput(NotebookSocket conn,
- Message fromMessage) throws IOException {
+ private void clearAllParagraphOutput(NotebookSocket conn, Message fromMessage)
+ throws IOException {
final String noteId = (String) fromMessage.get("id");
- getNotebookService().clearAllParagraphOutput(noteId, getServiceContext(fromMessage),
- new WebSocketServiceCallback<Note>(conn) {
- @Override
- public void onSuccess(Note note, ServiceContext context) throws IOException {
- super.onSuccess(note, context);
- broadcastNote(note);
- }
- });
+ getNotebookService()
+ .clearAllParagraphOutput(
+ noteId,
+ getServiceContext(fromMessage),
+ new WebSocketServiceCallback<Note>(conn) {
+ @Override
+ public void onSuccess(Note note, ServiceContext context) throws IOException {
+ super.onSuccess(note, context);
+ broadcastNote(note);
+ }
+ });
}
protected Note importNote(NotebookSocket conn, Message fromMessage) throws IOException {
String noteName = (String) ((Map) fromMessage.get("note")).get("name");
String noteJson = gson.toJson(fromMessage.get("note"));
- Note note = getNotebookService().importNote(noteName, noteJson, getServiceContext(fromMessage),
- new WebSocketServiceCallback<Note>(conn) {
- @Override
- public void onSuccess(Note note, ServiceContext context) throws IOException {
- super.onSuccess(note, context);
- try {
- broadcastNote(note);
- broadcastNoteList(context.getAutheInfo(), context.getUserAndRoles());
- } catch (NullPointerException e) {
- // TODO(zjffdu) remove this try catch. This is only for test of
- // NotebookServerTest#testImportNotebook
- }
- }
- });
+ Note note =
+ getNotebookService()
+ .importNote(
+ noteName,
+ noteJson,
+ getServiceContext(fromMessage),
+ new WebSocketServiceCallback<Note>(conn) {
+ @Override
+ public void onSuccess(Note note, ServiceContext context) throws IOException {
+ super.onSuccess(note, context);
+ try {
+ broadcastNote(note);
+ broadcastNoteList(context.getAutheInfo(), context.getUserAndRoles());
+ } catch (NullPointerException e) {
+ // TODO(zjffdu) remove this try catch. This is only for test of
+ // NotebookServerTest#testImportNotebook
+ }
+ }
+ });
return note;
}
- private void removeParagraph(NotebookSocket conn,
- Message fromMessage) throws IOException {
+ private void removeParagraph(NotebookSocket conn, Message fromMessage) throws IOException {
final String paragraphId = (String) fromMessage.get("id");
String noteId = connectionManager.getAssociatedNoteId(conn);
- getNotebookService().removeParagraph(noteId, paragraphId,
- getServiceContext(fromMessage), new WebSocketServiceCallback<Paragraph>(conn){
- @Override
- public void onSuccess(Paragraph p, ServiceContext context) throws IOException {
- super.onSuccess(p, context);
- connectionManager.broadcast(p.getNote().getId(), new Message(OP.PARAGRAPH_REMOVED).
- put("id", p.getId()));
- }
- });
+ getNotebookService()
+ .removeParagraph(
+ noteId,
+ paragraphId,
+ getServiceContext(fromMessage),
+ new WebSocketServiceCallback<Paragraph>(conn) {
+ @Override
+ public void onSuccess(Paragraph p, ServiceContext context) throws IOException {
+ super.onSuccess(p, context);
+ connectionManager.broadcast(
+ p.getNote().getId(), new Message(OP.PARAGRAPH_REMOVED).put("id", p.getId()));
+ }
+ });
}
- private void clearParagraphOutput(NotebookSocket conn,
- Message fromMessage) throws IOException {
+ private void clearParagraphOutput(NotebookSocket conn, Message fromMessage) throws IOException {
final String paragraphId = (String) fromMessage.get("id");
String noteId = connectionManager.getAssociatedNoteId(conn);
- getNotebookService().clearParagraphOutput(noteId, paragraphId, getServiceContext(fromMessage),
- new WebSocketServiceCallback<Paragraph>(conn) {
- @Override
- public void onSuccess(Paragraph p, ServiceContext context) throws IOException {
- super.onSuccess(p, context);
- if (p.getNote().isPersonalizedMode()) {
- connectionManager.unicastParagraph(p.getNote(), p, context.getAutheInfo().getUser());
- } else {
- broadcastParagraph(p.getNote(), p);
- }
- }
- });
+ getNotebookService()
+ .clearParagraphOutput(
+ noteId,
+ paragraphId,
+ getServiceContext(fromMessage),
+ new WebSocketServiceCallback<Paragraph>(conn) {
+ @Override
+ public void onSuccess(Paragraph p, ServiceContext context) throws IOException {
+ super.onSuccess(p, context);
+ if (p.getNote().isPersonalizedMode()) {
+ connectionManager.unicastParagraph(
+ p.getNote(), p, context.getAutheInfo().getUser());
+ } else {
+ broadcastParagraph(p.getNote(), p);
+ }
+ }
+ });
}
- private void completion(NotebookSocket conn,
- Message fromMessage) throws IOException {
+ private void completion(NotebookSocket conn, Message fromMessage) throws IOException {
String noteId = connectionManager.getAssociatedNoteId(conn);
String paragraphId = (String) fromMessage.get("id");
String buffer = (String) fromMessage.get("buf");
int cursor = (int) Double.parseDouble(fromMessage.get("cursor").toString());
- getNotebookService().completion(noteId, paragraphId, buffer, cursor,
- getServiceContext(fromMessage),
- new WebSocketServiceCallback<List<InterpreterCompletion>>(conn) {
- @Override
- public void onSuccess(List<InterpreterCompletion> completions, ServiceContext context)
- throws IOException {
- super.onSuccess(completions, context);
- Message resp = new Message(OP.COMPLETION_LIST).put("id", paragraphId);
- resp.put("completions", completions);
- conn.send(serializeMessage(resp));
- }
+ getNotebookService()
+ .completion(
+ noteId,
+ paragraphId,
+ buffer,
+ cursor,
+ getServiceContext(fromMessage),
+ new WebSocketServiceCallback<List<InterpreterCompletion>>(conn) {
+ @Override
+ public void onSuccess(List<InterpreterCompletion> completions, ServiceContext context)
+ throws IOException {
+ super.onSuccess(completions, context);
+ Message resp = new Message(OP.COMPLETION_LIST).put("id", paragraphId);
+ resp.put("completions", completions);
+ conn.send(serializeMessage(resp));
+ }
- @Override
- public void onFailure(Exception ex, ServiceContext context) throws IOException {
- super.onFailure(ex, context);
- Message resp = new Message(OP.COMPLETION_LIST).put("id", paragraphId);
- resp.put("completions", new ArrayList<>());
- conn.send(serializeMessage(resp));
- }
- });
+ @Override
+ public void onFailure(Exception ex, ServiceContext context) throws IOException {
+ super.onFailure(ex, context);
+ Message resp = new Message(OP.COMPLETION_LIST).put("id", paragraphId);
+ resp.put("completions", new ArrayList<>());
+ conn.send(serializeMessage(resp));
+ }
+ });
}
/**
* When angular object updated from client.
*
- * @param conn the web socket.
- * @param notebook the notebook.
+ * @param conn the web socket.
+ * @param notebook the notebook.
* @param fromMessage the message.
*/
- private void angularObjectUpdated(NotebookSocket conn, HashSet<String> userAndRoles,
- Notebook notebook, Message fromMessage) {
+ private void angularObjectUpdated(
+ NotebookSocket conn, HashSet<String> userAndRoles, Notebook notebook, Message fromMessage) {
String noteId = (String) fromMessage.get("noteId");
String paragraphId = (String) fromMessage.get("paragraphId");
String interpreterGroupId = (String) fromMessage.get("interpreterGroupId");
@@ -1170,8 +1284,7 @@ public class NotebookServer extends WebSocketServlet
if (setting.getInterpreterGroup(user, note.getId()) == null) {
continue;
}
- if (interpreterGroupId.equals(setting.getInterpreterGroup(user, note.getId())
- .getId())) {
+ if (interpreterGroupId.equals(setting.getInterpreterGroup(user, note.getId()).getId())) {
AngularObjectRegistry angularObjectRegistry =
setting.getInterpreterGroup(user, note.getId()).getAngularObjectRegistry();
@@ -1213,31 +1326,39 @@ public class NotebookServer extends WebSocketServlet
if (setting.getInterpreterGroup(user, n.getId()) == null) {
continue;
}
- if (interpreterGroupId.equals(setting.getInterpreterGroup(user, n.getId())
- .getId())) {
+ if (interpreterGroupId.equals(setting.getInterpreterGroup(user, n.getId()).getId())) {
AngularObjectRegistry angularObjectRegistry =
setting.getInterpreterGroup(user, n.getId()).getAngularObjectRegistry();
- connectionManager.broadcastExcept(n.getId(),
- new Message(OP.ANGULAR_OBJECT_UPDATE).put("angularObject", ao)
- .put("interpreterGroupId", interpreterGroupId).put("noteId", n.getId())
- .put("paragraphId", ao.getParagraphId()), conn);
+ connectionManager.broadcastExcept(
+ n.getId(),
+ new Message(OP.ANGULAR_OBJECT_UPDATE)
+ .put("angularObject", ao)
+ .put("interpreterGroupId", interpreterGroupId)
+ .put("noteId", n.getId())
+ .put("paragraphId", ao.getParagraphId()),
+ conn);
}
}
}
} else { // broadcast to all web session for the note
- connectionManager.broadcastExcept(note.getId(),
- new Message(OP.ANGULAR_OBJECT_UPDATE).put("angularObject", ao)
- .put("interpreterGroupId", interpreterGroupId).put("noteId", note.getId())
- .put("paragraphId", ao.getParagraphId()), conn);
+ connectionManager.broadcastExcept(
+ note.getId(),
+ new Message(OP.ANGULAR_OBJECT_UPDATE)
+ .put("angularObject", ao)
+ .put("interpreterGroupId", interpreterGroupId)
+ .put("noteId", note.getId())
+ .put("paragraphId", ao.getParagraphId()),
+ conn);
}
}
/**
- * Push the given Angular variable to the target interpreter angular registry given a noteId
- * and a paragraph id.
+ * Push the given Angular variable to the target interpreter angular registry given a noteId and a
+ * paragraph id.
*/
- protected void angularObjectClientBind(NotebookSocket conn, HashSet<String> userAndRoles,
- Notebook notebook, Message fromMessage) throws Exception {
+ protected void angularObjectClientBind(
+ NotebookSocket conn, HashSet<String> userAndRoles, Notebook notebook, Message fromMessage)
+ throws Exception {
String noteId = fromMessage.getType("noteId");
String varName = fromMessage.getType("name");
Object varValue = fromMessage.get("value");
@@ -1256,12 +1377,12 @@ public class NotebookServer extends WebSocketServlet
if (registry instanceof RemoteAngularObjectRegistry) {
RemoteAngularObjectRegistry remoteRegistry = (RemoteAngularObjectRegistry) registry;
- pushAngularObjectToRemoteRegistry(noteId, paragraphId, varName, varValue, remoteRegistry,
- interpreterGroup.getId(), conn);
+ pushAngularObjectToRemoteRegistry(
+ noteId, paragraphId, varName, varValue, remoteRegistry, interpreterGroup.getId(), conn);
} else {
- pushAngularObjectToLocalRepo(noteId, paragraphId, varName, varValue, registry,
- interpreterGroup.getId(), conn);
+ pushAngularObjectToLocalRepo(
+ noteId, paragraphId, varName, varValue, registry, interpreterGroup.getId(), conn);
}
}
}
@@ -1270,8 +1391,8 @@ public class NotebookServer extends WebSocketServlet
* Remove the given Angular variable to the target interpreter(s) angular registry given a noteId
* and an optional list of paragraph id(s).
*/
- protected void angularObjectClientUnbind(NotebookSocket conn, HashSet<String> userAndRoles,
- Notebook notebook, Message fromMessage)
+ protected void angularObjectClientUnbind(
+ NotebookSocket conn, HashSet<String> userAndRoles, Notebook notebook, Message fromMessage)
throws Exception {
String noteId = fromMessage.getType("noteId");
String varName = fromMessage.getType("name");
@@ -1290,11 +1411,11 @@ public class NotebookServer extends WebSocketServlet
if (registry instanceof RemoteAngularObjectRegistry) {
RemoteAngularObjectRegistry remoteRegistry = (RemoteAngularObjectRegistry) registry;
- removeAngularFromRemoteRegistry(noteId, paragraphId, varName, remoteRegistry,
- interpreterGroup.getId(), conn);
+ removeAngularFromRemoteRegistry(
+ noteId, paragraphId, varName, remoteRegistry, interpreterGroup.getId(), conn);
} else {
- removeAngularObjectFromLocalRepo(noteId, paragraphId, varName, registry,
- interpreterGroup.getId(), conn);
+ removeAngularObjectFromLocalRepo(
+ noteId, paragraphId, varName, registry, interpreterGroup.getId(), conn);
}
}
}
@@ -1308,36 +1429,54 @@ public class NotebookServer extends WebSocketServlet
return paragraph.getBindedInterpreter().getInterpreterGroup();
}
- private void pushAngularObjectToRemoteRegistry(String noteId, String paragraphId, String varName,
- Object varValue,
- RemoteAngularObjectRegistry remoteRegistry,
- String interpreterGroupId,
- NotebookSocket conn) {
+ private void pushAngularObjectToRemoteRegistry(
+ String noteId,
+ String paragraphId,
+ String varName,
+ Object varValue,
+ RemoteAngularObjectRegistry remoteRegistry,
+ String interpreterGroupId,
+ NotebookSocket conn) {
final AngularObject ao =
remoteRegistry.addAndNotifyRemoteProcess(varName, varValue, noteId, paragraphId);
- connectionManager.broadcastExcept(noteId, new Message(OP.ANGULAR_OBJECT_UPDATE)
- .put("angularObject", ao)
- .put("interpreterGroupId", interpreterGroupId).put("noteId", noteId)
- .put("paragraphId", paragraphId), conn);
- }
-
- private void removeAngularFromRemoteRegistry(String noteId, String paragraphId, String varName,
- RemoteAngularObjectRegistry remoteRegistry,
- String interpreterGroupId,
- NotebookSocket conn) {
+ connectionManager.broadcastExcept(
+ noteId,
+ new Message(OP.ANGULAR_OBJECT_UPDATE)
+ .put("angularObject", ao)
+ .put("interpreterGroupId", interpreterGroupId)
+ .put("noteId", noteId)
+ .put("paragraphId", paragraphId),
+ conn);
+ }
+
+ private void removeAngularFromRemoteRegistry(
+ String noteId,
+ String paragraphId,
+ String varName,
+ RemoteAngularObjectRegistry remoteRegistry,
+ String interpreterGroupId,
+ NotebookSocket conn) {
final AngularObject ao =
remoteRegistry.removeAndNotifyRemoteProcess(varName, noteId, paragraphId);
- connectionManager.broadcastExcept(noteId, new Message(OP.ANGULAR_OBJECT_REMOVE)
- .put("angularObject", ao)
- .put("interpreterGroupId", interpreterGroupId).put("noteId", noteId)
- .put("paragraphId", paragraphId), conn);
- }
-
- private void pushAngularObjectToLocalRepo(String noteId, String paragraphId, String varName,
- Object varValue, AngularObjectRegistry registry,
- String interpreterGroupId,
- NotebookSocket conn) {
+ connectionManager.broadcastExcept(
+ noteId,
+ new Message(OP.ANGULAR_OBJECT_REMOVE)
+ .put("angularObject", ao)
+ .put("interpreterGroupId", interpreterGroupId)
+ .put("noteId", noteId)
+ .put("paragraphId", paragraphId),
+ conn);
+ }
+
+ private void pushAngularObjectToLocalRepo(
+ String noteId,
+ String paragraphId,
+ String varName,
+ Object varValue,
+ AngularObjectRegistry registry,
+ String interpreterGroupId,
+ NotebookSocket conn) {
AngularObject angularObject = registry.get(varName, noteId, paragraphId);
if (angularObject == null) {
angularObject = registry.add(varName, varValue, noteId, paragraphId);
@@ -1345,43 +1484,58 @@ public class NotebookServer extends WebSocketServlet
angularObject.set(varValue, true);
}
- connectionManager.broadcastExcept(noteId,
- new Message(OP.ANGULAR_OBJECT_UPDATE).put("angularObject", angularObject)
- .put("interpreterGroupId", interpreterGroupId).put("noteId", noteId)
- .put("paragraphId", paragraphId), conn);
+ connectionManager.broadcastExcept(
+ noteId,
+ new Message(OP.ANGULAR_OBJECT_UPDATE)
+ .put("angularObject", angularObject)
+ .put("interpreterGroupId", interpreterGroupId)
+ .put("noteId", noteId)
+ .put("paragraphId", paragraphId),
+ conn);
}
- private void removeAngularObjectFromLocalRepo(String noteId, String paragraphId, String varName,
- AngularObjectRegistry registry,
- String interpreterGroupId, NotebookSocket conn) {
+ private void removeAngularObjectFromLocalRepo(
+ String noteId,
+ String paragraphId,
+ String varName,
+ AngularObjectRegistry registry,
+ String interpreterGroupId,
+ NotebookSocket conn) {
final AngularObject removed = registry.remove(varName, noteId, paragraphId);
if (removed != null) {
- connectionManager.broadcastExcept(noteId,
- new Message(OP.ANGULAR_OBJECT_REMOVE).put("angularObject", removed)
- .put("interpreterGroupId", interpreterGroupId).put("noteId", noteId)
- .put("paragraphId", paragraphId), conn);
+ connectionManager.broadcastExcept(
+ noteId,
+ new Message(OP.ANGULAR_OBJECT_REMOVE)
+ .put("angularObject", removed)
+ .put("interpreterGroupId", interpreterGroupId)
+ .put("noteId", noteId)
+ .put("paragraphId", paragraphId),
+ conn);
}
}
- private void moveParagraph(NotebookSocket conn,
- Message fromMessage) throws IOException {
+ private void moveParagraph(NotebookSocket conn, Message fromMessage) throws IOException {
final String paragraphId = (String) fromMessage.get("id");
final int newIndex = (int) Double.parseDouble(fromMessage.get("index").toString());
String noteId = connectionManager.getAssociatedNoteId(conn);
- getNotebookService().moveParagraph(noteId, paragraphId, newIndex,
- getServiceContext(fromMessage),
- new WebSocketServiceCallback<Paragraph>(conn) {
- @Override
- public void onSuccess(Paragraph result, ServiceContext context) throws IOException {
- super.onSuccess(result, context);
- connectionManager.broadcast(result.getNote().getId(),
- new Message(OP.PARAGRAPH_MOVED).put("id", paragraphId).put("index", newIndex));
- }
- });
+ getNotebookService()
+ .moveParagraph(
+ noteId,
+ paragraphId,
+ newIndex,
+ getServiceContext(fromMessage),
+ new WebSocketServiceCallback<Paragraph>(conn) {
+ @Override
+ public void onSuccess(Paragraph result, ServiceContext context) throws IOException {
+ super.onSuccess(result, context);
+ connectionManager.broadcast(
+ result.getNote().getId(),
+ new Message(OP.PARAGRAPH_MOVED).put("id", paragraphId).put("index", newIndex));
+ }
+ });
}
- private String insertParagraph(NotebookSocket conn,
- Message fromMessage) throws IOException {
+ private String insertParagraph(NotebookSocket conn, Message fromMessage) throws IOException {
final int index = (int) Double.parseDouble(fromMessage.get("index").toString());
String noteId = connectionManager.getAssociatedNoteId(conn);
Map<String, Object> config;
@@ -1391,21 +1545,25 @@ public class NotebookServer extends WebSocketServlet
config = new HashMap<>();
}
- Paragraph newPara = getNotebookService().insertParagraph(noteId, index, config,
- getServiceContext(fromMessage),
- new WebSocketServiceCallback<Paragraph>(conn) {
- @Override
- public void onSuccess(Paragraph p, ServiceContext context) throws IOException {
- super.onSuccess(p, context);
- broadcastNewParagraph(p.getNote(), p);
- }
- });
+ Paragraph newPara =
+ getNotebookService()
+ .insertParagraph(
+ noteId,
+ index,
+ config,
+ getServiceContext(fromMessage),
+ new WebSocketServiceCallback<Paragraph>(conn) {
+ @Override
+ public void onSuccess(Paragraph p, ServiceContext context) throws IOException {
+ super.onSuccess(p, context);
+ broadcastNewParagraph(p.getNote(), p);
+ }
+ });
return newPara.getId();
}
- private void copyParagraph(NotebookSocket conn,
- Message fromMessage) throws IOException {
+ private void copyParagraph(NotebookSocket conn, Message fromMessage) throws IOException {
String newParaId = insertParagraph(conn, fromMessage);
if (newParaId == null) {
@@ -1419,24 +1577,32 @@ public class NotebookServer extends WebSocketServlet
private void cancelParagraph(NotebookSocket conn, Message fromMessage) throws IOException {
final String paragraphId = (String) fromMessage.get("id");
String noteId = connectionManager.getAssociatedNoteId(conn);
- getNotebookService().cancelParagraph(noteId, paragraphId, getServiceContext(fromMessage),
- new WebSocketServiceCallback<>(conn));
+ getNotebookService()
+ .cancelParagraph(
+ noteId,
+ paragraphId,
+ getServiceContext(fromMessage),
+ new WebSocketServiceCallback<>(conn));
}
- private void runAllParagraphs(NotebookSocket conn,
- Message fromMessage) throws IOException {
+ private void runAllParagraphs(NotebookSocket conn, Message fromMessage) throws IOException {
final String noteId = (String) fromMessage.get("noteId");
List<Map<String, Object>> paragraphs =
- gson.fromJson(String.valueOf(fromMessage.data.get("paragraphs")),
- new TypeToken<List<Map<String, Object>>>() {
- }.getType());
+ gson.fromJson(
+ String.valueOf(fromMessage.data.get("paragraphs")),
+ new TypeToken<List<Map<String, Object>>>() {}.getType());
- getNotebookService().runAllParagraphs(noteId, paragraphs, getServiceContext(fromMessage),
- new WebSocketServiceCallback<Paragraph>(conn));
+ getNotebookService()
+ .runAllParagraphs(
+ noteId,
+ paragraphs,
+ getServiceContext(fromMessage),
+ new WebSocketServiceCallback<Paragraph>(conn));
}
- private void broadcastSpellExecution(NotebookSocket conn, HashSet<String> userAndRoles,
- Notebook notebook, Message fromMessage) throws IOException {
+ private void broadcastSpellExecution(
+ NotebookSocket conn, HashSet<String> userAndRoles, Notebook notebook, Message fromMessage)
+ throws IOException {
final String paragraphId = (String) fromMessage.get("id");
if (paragraphId == null) {
return;
@@ -1444,8 +1610,8 @@ public class NotebookServer extends WebSocketServlet
String noteId = connectionManager.getAssociatedNoteId(conn);
- if (!hasParagraphWriterPermission(conn, notebook, noteId,
- userAndRoles, fromMessage.principal, "write")) {
+ if (!hasParagraphWriterPermission(
+ conn, notebook, noteId, userAndRoles, fromMessage.principal, "write")) {
return;
}
@@ -1456,8 +1622,8 @@ public class NotebookServer extends WebSocketServlet
Map<String, Object> config = (Map<String, Object>) fromMessage.get("config");
final Note note = notebook.getNote(noteId);
- Paragraph p = setParagraphUsingMessage(note, fromMessage, paragraphId,
- text, title, params, config);
+ Paragraph p =
+ setParagraphUsingMessage(note, fromMessage, paragraphId, text, title, params, config);
p.setResult((InterpreterResult) fromMessage.get("results"));
p.setErrorMessage((String) fromMessage.get("errorMessage"));
p.setStatusWithoutNotification(status);
@@ -1485,56 +1651,64 @@ public class NotebookServer extends WebSocketServlet
}
// broadcast to other clients only
- connectionManager.broadcastExcept(note.getId(),
- new Message(OP.RUN_PARAGRAPH_USING_SPELL).put("paragraph", p), conn);
+ connectionManager.broadcastExcept(
+ note.getId(), new Message(OP.RUN_PARAGRAPH_USING_SPELL).put("paragraph", p), conn);
}
- private void runParagraph(NotebookSocket conn,
- Message fromMessage) throws IOException {
+ private void runParagraph(NotebookSocket conn, Message fromMessage) throws IOException {
String paragraphId = (String) fromMessage.get("id");
String noteId = connectionManager.getAssociatedNoteId(conn);
String text = (String) fromMessage.get("paragraph");
String title = (String) fromMessage.get("title");
Map<String, Object> params = (Map<String, Object>) fromMessage.get("params");
Map<String, Object> config = (Map<String, Object>) fromMessage.get("config");
- getNotebookService().runParagraph(noteId, paragraphId, title, text, params, config,
- false, false, getServiceContext(fromMessage),
- new WebSocketServiceCallback<Paragraph>(conn) {
- @Override
- public void onSuccess(Paragraph p, ServiceContext context) throws IOException {
- super.onSuccess(p, context);
- if (p.getNote().isPersonalizedMode()) {
- Paragraph p2 = p.getNote().clearPersonalizedParagraphOutput(paragraphId,
- context.getAutheInfo().getUser());
- connectionManager.unicastParagraph(p.getNote(), p2, context.getAutheInfo().getUser());
- }
-
- // if it's the last paragraph and not empty, let's add a new one
- boolean isTheLastParagraph = p.getNote().isLastParagraph(paragraphId);
- if (!(Strings.isNullOrEmpty(p.getText()) ||
- Strings.isNullOrEmpty(p.getScriptText())) &&
- isTheLastParagraph) {
- Paragraph newPara = p.getNote().addNewParagraph(p.getAuthenticationInfo());
- broadcastNewParagraph(p.getNote(), newPara);
- }
- }
- });
+ getNotebookService()
+ .runParagraph(
+ noteId,
+ paragraphId,
+ title,
+ text,
+ params,
+ config,
+ false,
+ false,
+ getServiceContext(fromMessage),
+ new WebSocketServiceCallback<Paragraph>(conn) {
+ @Override
+ public void onSuccess(Paragraph p, ServiceContext context) throws IOException {
+ super.onSuccess(p, context);
+ if (p.getNote().isPersonalizedMode()) {
+ Paragraph p2 =
+ p.getNote()
+ .clearPersonalizedParagraphOutput(
+ paragraphId, context.getAutheInfo().getUser());
+ connectionManager.unicastParagraph(
+ p.getNote(), p2, context.getAutheInfo().getUser());
+ }
+
+ // if it's the last paragraph and not empty, let's add a new one
+ boolean isTheLastParagraph = p.getNote().isLastParagraph(paragraphId);
+ if (!(Strings.isNullOrEmpty(p.getText())
+ || Strings.isNullOrEmpty(p.getScriptText()))
+ && isTheLastParagraph) {
+ Paragraph newPara = p.getNote().addNewParagraph(p.getAuthenticationInfo());
+ broadcastNewParagraph(p.getNote(), newPara);
+ }
+ }
+ });
}
private void addNewParagraphIfLastParagraphIsExecuted(Note note, Paragraph p) {
// if it's the last paragraph and not empty, let's add a new one
boolean isTheLastParagraph = note.isLastParagraph(p.getId());
- if (!(Strings.isNullOrEmpty(p.getText()) ||
- Strings.isNullOrEmpty(p.getScriptText())) &&
- isTheLastParagraph) {
+ if (!(Strings.isNullOrEmpty(p.getText()) || Strings.isNullOrEmpty(p.getScriptText()))
+ && isTheLastParagraph) {
Paragraph newPara = note.addNewParagraph(p.getAuthenticationInfo());
broadcastNewParagraph(note, newPara);
}
}
- /**
- * @return false if failed to save a note
- */
+ /** @return false if failed to save a note */
private boolean persistNoteWithAuthInfo(NotebookSocket conn, Note note, Paragraph p)
throws IOException {
try {
@@ -1542,17 +1716,26 @@ public class NotebookServer extends WebSocketServlet
return true;
} catch (IOException ex) {
LOG.error("Exception from run", ex);
- conn.send(serializeMessage(new Message(OP.ERROR_INFO).put("info",
- "Oops! There is something wrong with the notebook file system. "
- + "Please check the logs for more details.")));
+ conn.send(
+ serializeMessage(
+ new Message(OP.ERROR_INFO)
+ .put(
+ "info",
+ "Oops! There is something wrong with the notebook file system. "
+ + "Please check the logs for more details.")));
// don't run the paragraph when there is error on persisting the note information
return false;
}
}
- private Paragraph setParagraphUsingMessage(Note note, Message fromMessage, String paragraphId,
- String text, String title, Map<String, Object> params,
- Map<String, Object> config) {
+ private Paragraph setParagraphUsingMessage(
+ Note note,
+ Message fromMessage,
+ String paragraphId,
+ String text,
+ String title,
+ Map<String, Object> params,
+ Map<String, Object> config) {
Paragraph p = note.getParagraph(paragraphId);
p.setText(text);
p.setTitle(title);
@@ -1574,110 +1757,137 @@ public class NotebookServer extends WebSocketServlet
return p;
}
- private void sendAllConfigurations(NotebookSocket conn,
- Message message ) throws IOException {
+ private void sendAllConfigurations(NotebookSocket conn, Message message) throws IOException {
- configurationService.getAllProperties(getServiceContext(message),
+ configurationService.getAllProperties(
+ getServiceContext(message),
new WebSocketServiceCallback<Map<String, String>>(conn) {
@Override
- public void onSuccess(Map<String, String> properties,
- ServiceContext context) throws IOException {
+ public void onSuccess(Map<String, String> properties, ServiceContext context)
+ throws IOException {
super.onSuccess(properties, context);
properties.put("isRevisionSupported", String.valueOf(notebook().isRevisionSupported()));
- conn.send(serializeMessage(
- new Message(OP.CONFIGURATIONS_INFO).put("configurations", properties)));
+ conn.send(
+ serializeMessage(
+ new Message(OP.CONFIGURATIONS_INFO).put("configurations", properties)));
}
});
}
- private void checkpointNote(NotebookSocket conn, Message fromMessage)
- throws IOException {
+ private void checkpointNote(NotebookSocket conn, Message fromMessage) throws IOException {
String noteId = (String) fromMessage.get("noteId");
String commitMessage = (String) fromMessage.get("commitMessage");
- getNotebookService().checkpointNote(noteId, commitMessage, getServiceContext(fromMessage),
- new WebSocketServiceCallback<Revision>(conn) {
- @Override
- public void onSuccess(Revision revision, ServiceContext context) throws IOException {
- super.onSuccess(revision, context);
- if (!Revision.isEmpty(revision)) {
- List<Revision> revisions =
- notebook().listRevisionHistory(noteId, context.getAutheInfo());
- conn.send(
- serializeMessage(new Message(OP.LIST_REVISION_HISTORY).put("revisionList",
- revisions)));
- } else {
- conn.send(serializeMessage(new Message(OP.ERROR_INFO).put("info",
- "Couldn't checkpoint note revision: possibly storage doesn't support versioning. "
- + "Please check the logs for more details.")));
- }
- }
- });
+ getNotebookService()
+ .checkpointNote(
+ noteId,
+ commitMessage,
+ getServiceContext(fromMessage),
+ new WebSocketServiceCallback<Revision>(conn) {
+ @Override
+ public void onSuccess(Revision revision, ServiceContext context) throws IOException {
+ super.onSuccess(revision, context);
+ if (!Revision.isEmpty(revision)) {
+ List<Revision> revisions =
+ notebook().listRevisionHistory(noteId, context.getAutheInfo());
+ conn.send(
+ serializeMessage(
+ new Message(OP.LIST_REVISION_HISTORY).put("revisionList", revisions)));
+ } else {
+ conn.send(
+ serializeMessage(
+ new Message(OP.ERROR_INFO)
+ .put(
+ "info",
+ "Couldn't checkpoint note revision: possibly storage doesn't support versioning. "
+ + "Please check the logs for more details.")));
+ }
+ }
+ });
}
- private void listRevisionHistory(NotebookSocket conn, Message fromMessage)
- throws IOException {
+ private void listRevisionHistory(NotebookSocket conn, Message fromMessage) throws IOException {
String noteId = (String) fromMessage.get("noteId");
- getNotebookService().listRevisionHistory(noteId, getServiceContext(fromMessage),
- new WebSocketServiceCallback<List<Revision>>(conn) {
- @Override
- public void onSuccess(List<Revision> revisions, ServiceContext context)
- throws IOException {
- super.onSuccess(revisions, context);
- conn.send(serializeMessage(
- new Message(OP.LIST_REVISION_HISTORY).put("revisionList", revisions)));
- }
- });
+ getNotebookService()
+ .listRevisionHistory(
+ noteId,
+ getServiceContext(fromMessage),
+ new WebSocketServiceCallback<List<Revision>>(conn) {
+ @Override
+ public void onSuccess(List<Revision> revisions, ServiceContext context)
+ throws IOException {
+ super.onSuccess(revisions, context);
+ conn.send(
+ serializeMessage(
+ new Message(OP.LIST_REVISION_HISTORY).put("revisionList", revisions)));
+ }
+ });
}
- private void setNoteRevision(NotebookSocket conn,
- Message fromMessage) throws IOException {
+ private void setNoteRevision(NotebookSocket conn, Message fromMessage) throws IOException {
String noteId = (String) fromMessage.get("noteId");
String revisionId = (String) fromMessage.get("revisionId");
- getNotebookService().setNoteRevision(noteId, revisionId, getServiceContext(fromMessage),
- new WebSocketServiceCallback<Note>(conn) {
- @Override
- public void onSuccess(Note note, ServiceContext context) throws IOException {
- super.onSuccess(note, context);
- Note reloadedNote = notebook().loadNoteFromRepo(noteId, context.getAutheInfo());
- conn.send(serializeMessage(new Message(OP.SET_NOTE_REVISION).put("status", true)));
- broadcastNote(reloadedNote);
- }
- });
+ getNotebookService()
+ .setNoteRevision(
+ noteId,
+ revisionId,
+ getServiceContext(fromMessage),
+ new WebSocketServiceCallback<Note>(conn) {
+ @Override
+ public void onSuccess(Note note, ServiceContext context) throws IOException {
+ super.onSuccess(note, context);
+ Note reloadedNote = notebook().loadNoteFromRepo(noteId, context.getAutheInfo());
+ conn.send(serializeMessage(new Message(OP.SET_NOTE_REVISION).put("status", true)));
+ broadcastNote(reloadedNote);
+ }
+ });
}
- private void getNoteByRevision(NotebookSocket conn, Message fromMessage)
- throws IOException {
+ private void getNoteByRevision(NotebookSocket conn, Message fromMessage) throws IOException {
String noteId = (String) fromMessage.get("noteId");
String revisionId = (String) fromMessage.get("revisionId");
- getNotebookService().getNotebyRevision(noteId, revisionId, getServiceContext(fromMessage),
- new WebSocketServiceCallback<Note>(conn) {
- @Override
- public void onSuccess(Note note, ServiceContext context) throws IOException {
- super.onSuccess(note, context);
- conn.send(serializeMessage(
- new Message(OP.NOTE_REVISION).put("noteId", noteId).put("revisionId", revisionId)
- .put("note", note)));
- }
- });
+ getNotebookService()
+ .getNotebyRevision(
+ noteId,
+ revisionId,
+ getServiceContext(fromMessage),
+ new WebSocketServiceCallback<Note>(conn) {
+ @Override
+ public void onSuccess(Note note, ServiceContext context) throws IOException {
+ super.onSuccess(note, context);
+ conn.send(
+ serializeMessage(
+ new Message(OP.NOTE_REVISION)
+ .put("noteId", noteId)
+ .put("revisionId", revisionId)
+ .put("note", note)));
+ }
+ });
}
- private void getNoteByRevisionForCompare(NotebookSocket conn,
- Message fromMessage) throws IOException {
+ private void getNoteByRevisionForCompare(NotebookSocket conn, Message fromMessage)
+ throws IOException {
String noteId = (String) fromMessage.get("noteId");
String revisionId = (String) fromMessage.get("revisionId");
String position = (String) fromMessage.get("position");
- getNotebookService().getNoteByRevisionForCompare(noteId, revisionId,
- getServiceContext(fromMessage),
- new WebSocketServiceCallback<Note>(conn) {
- @Override
- public void onSuccess(Note note, ServiceContext context) throws IOException {
- super.onSuccess(note, context);
- conn.send(serializeMessage(
- new Message(OP.NOTE_REVISION_FOR_COMPARE).put("noteId", noteId)
- .put("revisionId", revisionId).put("position", position).put("note", note)));
- }
- });
+ getNotebookService()
+ .getNoteByRevisionForCompare(
+ noteId,
+ revisionId,
+ getServiceContext(fromMessage),
+ new WebSocketServiceCallback<Note>(conn) {
+ @Override
+ public void onSuccess(Note note, ServiceContext context) throws IOException {
+ super.onSuccess(note, context);
+ conn.send(
+ serializeMessage(
+ new Message(OP.NOTE_REVISION_FOR_COMPARE)
+ .put("noteId", noteId)
+ .put("revisionId", revisionId)
+ .put("position", position)
+ .put("note", note)));
+ }
+ });
}
/**
@@ -1687,8 +1897,12 @@ public class NotebookServer extends WebSocketServlet
*/
@Override
public void onOutputAppend(String noteId, String paragraphId, int index, String output) {
- Message msg = new Message(OP.PARAGRAPH_APPEND_OUTPUT).put("noteId", noteId)
- .put("paragraphId", paragraphId).put("index", index).put("data", output);
+ Message msg =
+ new Message(OP.PARAGRAPH_APPEND_OUTPUT)
+ .put("noteId", noteId)
+ .put("paragraphId", paragraphId)
+ .put("index", index)
+ .put("data", output);
connectionManager.broadcast(noteId, msg);
}
@@ -1698,10 +1912,15 @@ public class NotebookServer extends WebSocketServlet
* @param output output to update (replace)
*/
@Override
- public void onOutputUpdated(String noteId, String paragraphId, int index,
- InterpreterResult.Type type, String output) {
- Message msg = new Message(OP.PARAGRAPH_UPDATE_OUTPUT).put("noteId", noteId)
- .put("paragraphId", paragraphId).put("index", index).put("type", type).put("data", output);
+ public void onOutputUpdated(
+ String noteId, String paragraphId, int index, InterpreterResult.Type type, String output) {
+ Message msg =
+ new Message(OP.PARAGRAPH_UPDATE_OUTPUT)
+ .put("noteId", noteId)
+ .put("paragraphId", paragraphId)
+ .put("index", index)
+ .put("type", type)
+ .put("data", output);
Note note = notebook().getNote(noteId);
if (note.isPersonalizedMode()) {
String user = note.getParagraph(paragraphId).getUser();
@@ -1713,9 +1932,7 @@ public class NotebookServer extends WebSocketServlet
}
}
- /**
- * This callback is for the paragraph that runs on ZeppelinServer.
- */
+ /** This callback is for the paragraph that runs on ZeppelinServer. */
@Override
public void onOutputClear(String noteId, String paragraphId) {
Notebook notebook = notebook();
@@ -1725,51 +1942,69 @@ public class NotebookServer extends WebSocketServlet
broadcastParagraph(note, paragraph);
}
- /**
- * When application append output.
- */
+ /** When application append output. */
@Override
- public void onOutputAppend(String noteId, String paragraphId, int index, String appId,
- String out
<TRUNCATED>