This is an automated email from the ASF dual-hosted git repository. pdallig pushed a commit to branch branch-0.9 in repository https://gitbox.apache.org/repos/asf/zeppelin.git
The following commit(s) were added to refs/heads/branch-0.9 by this push: new 253e098 [ZEPPELIN-5393] Polish rest, socket package of zeppelin-server 253e098 is described below commit 253e0982715cee24572c104e2ac54c951ba50430 Author: cuspymd <cusp...@gmail.com> AuthorDate: Thu May 27 00:00:05 2021 +0900 [ZEPPELIN-5393] Polish rest, socket package of zeppelin-server ### What is this PR for? - Add final keyword to variables which are not re-assigned - Delete unnecessary and unused codes ### What type of PR is it? [Refactoring] ### What is the Jira issue? * https://issues.apache.org/jira/browse/ZEPPELIN-5393 ### How should this be tested? * CI ### Questions: * Does the licenses files need update? No * Is there breaking changes for older versions? No * Does this needs documentation? No Author: cuspymd <cusp...@gmail.com> Closes #4126 from cuspymd/polish-server2 and squashes the following commits: f0633a3eb [cuspymd] Polish rest, socket package of zeppelin-server (cherry picked from commit 622a6dccbe58acefee0acf926a2d72acad374c4e) Signed-off-by: Philipp Dallig <philipp.dal...@gmail.com> --- .../apache/zeppelin/realm/ZeppelinHubRealm.java | 2 +- .../org/apache/zeppelin/rest/AdminRestApi.java | 2 +- .../org/apache/zeppelin/rest/ClusterRestApi.java | 8 +- .../zeppelin/rest/ConfigurationsRestApi.java | 2 +- .../apache/zeppelin/rest/CredentialRestApi.java | 6 +- .../org/apache/zeppelin/rest/HeliumRestApi.java | 10 +- .../apache/zeppelin/rest/NotebookRepoRestApi.java | 10 +- .../org/apache/zeppelin/rest/NotebookRestApi.java | 29 ++- .../org/apache/zeppelin/rest/SessionRestApi.java | 2 +- .../apache/zeppelin/socket/ConnectionManager.java | 24 +-- .../org/apache/zeppelin/socket/NotebookServer.java | 198 ++++++++++----------- .../org/apache/zeppelin/socket/NotebookSocket.java | 6 +- .../zeppelin/socket/NotebookWebSocketCreator.java | 2 +- .../utils/AnyOfRolesUserAuthorizationFilter.java | 3 +- 14 files changed, 144 insertions(+), 160 deletions(-) diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/realm/ZeppelinHubRealm.java b/zeppelin-server/src/main/java/org/apache/zeppelin/realm/ZeppelinHubRealm.java index 8a0da48..fc648b8 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/realm/ZeppelinHubRealm.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/realm/ZeppelinHubRealm.java @@ -226,7 +226,7 @@ public class ZeppelinHubRealm extends AuthorizingRealm { new org.apache.zeppelin.user.AuthenticationInfo(username), userAndRoles); try { // This can failed to get NotebookServer instance with very rare cases - NotebookServer.getInstance().broadcastReloadedNoteList(null, context); + NotebookServer.getInstance().broadcastReloadedNoteList(context); } catch (IOException e) { LOG.error("Fail to broadcastReloadedNoteList", e); } diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/AdminRestApi.java b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/AdminRestApi.java index 506ada9..804ec05 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/AdminRestApi.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/AdminRestApi.java @@ -39,7 +39,7 @@ import org.slf4j.LoggerFactory; public class AdminRestApi { private static final Logger logger = LoggerFactory.getLogger(AdminRestApi.class); - private AdminService adminService; + private final AdminService adminService; @Inject public AdminRestApi(AdminService adminService) { diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/ClusterRestApi.java b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/ClusterRestApi.java index 9aca780..30b0998 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/ClusterRestApi.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/ClusterRestApi.java @@ -84,8 +84,8 @@ public class ClusterRestApi { public Response getClusterNodes(){ List<Map<String, Object>> nodes = new ArrayList<>(); - Map<String, HashMap<String, Object>> clusterMeta = null; - Map<String, HashMap<String, Object>> intpMeta = null; + Map<String, HashMap<String, Object>> clusterMeta; + Map<String, HashMap<String, Object>> intpMeta; clusterMeta = clusterManagerServer.getClusterMeta(ClusterMetaType.SERVER_META, ""); intpMeta = clusterManagerServer.getClusterMeta(ClusterMetaType.INTP_PROCESS_META, ""); @@ -196,8 +196,8 @@ public class ClusterRestApi { @PathParam("intpName") String intpName){ List<Map<String, Object>> intpProcesses = new ArrayList<>(); - Map<String, HashMap<String, Object>> intpMeta = null; - intpMeta = clusterManagerServer.getClusterMeta(ClusterMetaType.INTP_PROCESS_META, ""); + Map<String, HashMap<String, Object>> intpMeta = clusterManagerServer.getClusterMeta( + ClusterMetaType.INTP_PROCESS_META, ""); // Number of calculation processes for (Map.Entry<String, HashMap<String, Object>> intpMetaEntity : intpMeta.entrySet()) { diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/ConfigurationsRestApi.java b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/ConfigurationsRestApi.java index c414947..0b8b864 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/ConfigurationsRestApi.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/ConfigurationsRestApi.java @@ -37,7 +37,7 @@ import org.apache.zeppelin.service.AuthenticationService; @Singleton public class ConfigurationsRestApi extends AbstractRestApi { - private ConfigurationService configurationService; + private final ConfigurationService configurationService; @Inject public ConfigurationsRestApi( diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/CredentialRestApi.java b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/CredentialRestApi.java index 3a1e05f..bc867a2 100755 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/CredentialRestApi.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/CredentialRestApi.java @@ -46,9 +46,9 @@ import org.slf4j.LoggerFactory; @Singleton public class CredentialRestApi { private static final Logger LOGGER = LoggerFactory.getLogger(CredentialRestApi.class); - private Credentials credentials; - private AuthenticationService authenticationService; - private Gson gson = new Gson(); + private final Credentials credentials; + private final AuthenticationService authenticationService; + private final Gson gson = new Gson(); @Inject public CredentialRestApi(Credentials credentials, AuthenticationService authenticationService) { diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/HeliumRestApi.java b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/HeliumRestApi.java index ecbabdd..d3106a9 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/HeliumRestApi.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/HeliumRestApi.java @@ -59,9 +59,9 @@ import org.apache.zeppelin.server.JsonResponse; public class HeliumRestApi { Logger logger = LoggerFactory.getLogger(HeliumRestApi.class); - private Helium helium; - private Notebook notebook; - private Gson gson = new Gson(); + private final Helium helium; + private final Notebook notebook; + private final Gson gson = new Gson(); @Inject public HeliumRestApi(Helium helium, Notebook notebook) { @@ -121,7 +121,7 @@ public class HeliumRestApi { @Path("suggest/{noteId}/{paragraphId}") public Response suggest(@PathParam("noteId") String noteId, @PathParam("paragraphId") String paragraphId) { - Note note = null; + Note note; try { note = notebook.getNote(noteId); } catch (IOException e) { @@ -150,7 +150,7 @@ public class HeliumRestApi { @Path("load/{noteId}/{paragraphId}") public Response load(@PathParam("noteId") String noteId, @PathParam("paragraphId") String paragraphId, String heliumPackage) { - Note note = null; + Note note; try { note = notebook.getNote(noteId); } catch (IOException e) { diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRepoRestApi.java b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRepoRestApi.java index 06c6459..de1fd1b 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRepoRestApi.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRepoRestApi.java @@ -58,9 +58,9 @@ import org.apache.zeppelin.user.AuthenticationInfo; public class NotebookRepoRestApi { private static final Logger LOG = LoggerFactory.getLogger(NotebookRepoRestApi.class); - private NotebookRepoSync noteRepos; - private NotebookServer notebookWsServer; - private AuthenticationService authenticationService; + private final NotebookRepoSync noteRepos; + private final NotebookServer notebookWsServer; + private final AuthenticationService authenticationService; @Inject public NotebookRepoRestApi(NotebookRepoSync noteRepos, NotebookServer notebookWsServer, @@ -92,7 +92,7 @@ public class NotebookRepoRestApi { AuthenticationInfo subject = new AuthenticationInfo(authenticationService.getPrincipal()); LOG.info("Reloading notebook repository for user {}", subject.getUser()); try { - notebookWsServer.broadcastReloadedNoteList(null, getServiceContext()); + notebookWsServer.broadcastReloadedNoteList(getServiceContext()); } catch (IOException e) { LOG.error("Fail to refresh repo", e); } @@ -140,7 +140,7 @@ public class NotebookRepoRestApi { if (!updatedSettings.isEmpty()) { LOG.info("Broadcasting note list to user {}", subject.getUser()); try { - notebookWsServer.broadcastReloadedNoteList(null, getServiceContext()); + notebookWsServer.broadcastReloadedNoteList(getServiceContext()); } catch (IOException e) { LOG.error("Fail to refresh repo.", e); } diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java index 62bb374..45e6299 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java @@ -23,7 +23,6 @@ import com.google.gson.Gson; import java.io.IOException; import java.util.HashMap; import java.util.HashSet; -import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; @@ -37,11 +36,9 @@ import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; -import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Status; import org.apache.commons.lang3.StringUtils; -import org.apache.commons.lang3.exception.ExceptionUtils; import org.apache.zeppelin.annotation.ZeppelinApi; import org.apache.zeppelin.conf.ZeppelinConfiguration; import org.apache.zeppelin.interpreter.InterpreterResult; @@ -87,15 +84,15 @@ public class NotebookRestApi extends AbstractRestApi { private static final Logger LOGGER = LoggerFactory.getLogger(NotebookRestApi.class); private static final Gson GSON = new Gson(); - private ZeppelinConfiguration zConf; - private Notebook notebook; - private NotebookServer notebookServer; - private SearchService noteSearchService; - private AuthorizationService authorizationService; - private NotebookService notebookService; - private JobManagerService jobManagerService; - private AuthenticationService authenticationService; - private SchedulerService schedulerService; + private final ZeppelinConfiguration zConf; + private final Notebook notebook; + private final NotebookServer notebookServer; + private final SearchService noteSearchService; + private final AuthorizationService authorizationService; + private final NotebookService notebookService; + private final JobManagerService jobManagerService; + private final AuthenticationService authenticationService; + private final SchedulerService schedulerService; @Inject public NotebookRestApi( @@ -126,7 +123,7 @@ public class NotebookRestApi extends AbstractRestApi { @GET @Path("{noteId}/permissions") @ZeppelinApi - public Response getNotePermissions(@PathParam("noteId") String noteId) throws IOException { + public Response getNotePermissions(@PathParam("noteId") String noteId) { checkIfUserIsAnon(getBlockNotAuthenticatedUserErrorMsg()); checkIfUserCanRead(noteId, "Insufficient privileges you cannot get the list of permissions for this note"); @@ -319,7 +316,7 @@ public class NotebookRestApi extends AbstractRestApi { @ZeppelinApi public Response getNoteList() throws IOException { List<NoteInfo> notesInfo = notebookService.listNotesInfo(false, getServiceContext(), - new RestServiceCallback<List<NoteInfo>>()); + new RestServiceCallback<>()); return new JsonResponse<>(Status.OK, "", notesInfo).build(); } @@ -337,7 +334,7 @@ public class NotebookRestApi extends AbstractRestApi { public Response getNote(@PathParam("noteId") String noteId, @QueryParam("reload") boolean reload) throws IOException { Note note = - notebookService.getNote(noteId, reload, getServiceContext(), new RestServiceCallback()); + notebookService.getNote(noteId, reload, getServiceContext(), new RestServiceCallback<>()); return new JsonResponse<>(Status.OK, "", note).build(); } @@ -370,7 +367,7 @@ public class NotebookRestApi extends AbstractRestApi { @ZeppelinApi public Response importNote(@QueryParam("notePath") String notePath, String noteJson) throws IOException { Note note = notebookService.importNote(notePath, noteJson, getServiceContext(), - new RestServiceCallback()); + new RestServiceCallback<>()); return new JsonResponse<>(Status.OK, "", note.getId()).build(); } diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/SessionRestApi.java b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/SessionRestApi.java index e668d42..9a9a342 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/SessionRestApi.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/SessionRestApi.java @@ -50,7 +50,7 @@ public class SessionRestApi { private static final Logger LOGGER = LoggerFactory.getLogger(SessionRestApi.class); - private SessionManagerService sessionManagerService; + private final SessionManagerService sessionManagerService; @Inject public SessionRestApi(Notebook notebook, InterpreterSettingManager interpreterSettingManager) { diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/socket/ConnectionManager.java b/zeppelin-server/src/main/java/org/apache/zeppelin/socket/ConnectionManager.java index e7f99aa..dff823f 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/socket/ConnectionManager.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/socket/ConnectionManager.java @@ -51,7 +51,6 @@ import java.util.List; import java.util.Map; import java.util.Queue; import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentLinkedQueue; /** @@ -60,7 +59,7 @@ import java.util.concurrent.ConcurrentLinkedQueue; public class ConnectionManager { private static final Logger LOGGER = LoggerFactory.getLogger(ConnectionManager.class); - private static Gson gson = new GsonBuilder() + private static final Gson gson = new GsonBuilder() .setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ") .registerTypeAdapter(Date.class, new NotebookImportDeserializer()) .setPrettyPrinting() @@ -80,13 +79,13 @@ public class ConnectionManager { */ final Queue<NotebookSocket> watcherSockets = Queues.newConcurrentLinkedQueue(); - private HashSet<String> collaborativeModeList = new HashSet<>(); - private Boolean collaborativeModeEnable = ZeppelinConfiguration + private final HashSet<String> collaborativeModeList = new HashSet<>(); + private final Boolean collaborativeModeEnable = ZeppelinConfiguration .create() .isZeppelinNotebookCollaborativeModeEnable(); - private AuthorizationService authorizationService; + private final AuthorizationService authorizationService; @Inject public ConnectionManager(AuthorizationService authorizationService) { @@ -106,11 +105,7 @@ public class ConnectionManager { synchronized (noteSocketMap) { // make sure a socket relates only an single note. removeConnectionFromAllNote(socket); - List<NotebookSocket> socketList = noteSocketMap.get(noteId); - if (socketList == null) { - socketList = new LinkedList<>(); - noteSocketMap.put(noteId, socketList); - } + List<NotebookSocket> socketList = noteSocketMap.computeIfAbsent(noteId, k -> new LinkedList<>()); if (!socketList.contains(socket)) { socketList.add(socket); } @@ -361,7 +356,7 @@ public class ConnectionManager { } public interface UserIterator { - public void handleUser(String user, Set<String> userAndRoles); + void handleUser(String user, Set<String> userAndRoles); } public void forAllUsers(UserIterator iterator) { @@ -396,14 +391,13 @@ public class ConnectionManager { broadcastNoteForms(note); if (note.isPersonalizedMode()) { - broadcastParagraphs(p.getUserParagraphMap(), p); + broadcastParagraphs(p.getUserParagraphMap()); } else { broadcast(note.getId(), new Message(Message.OP.PARAGRAPH).put("paragraph", p)); } } - public void broadcastParagraphs(Map<String, Paragraph> userParagraphMap, - Paragraph defaultParagraph) { + public void broadcastParagraphs(Map<String, Paragraph> userParagraphMap) { if (null != userParagraphMap) { for (String user : userParagraphMap.keySet()) { multicastToUser(user, @@ -448,7 +442,7 @@ public class ConnectionManager { LOGGER.info("Going to add {} to watcher socket", conn); // add the connection to the watcher. if (watcherSockets.contains(conn)) { - LOGGER.info("connection alrerady present in the watcher"); + LOGGER.info("connection already present in the watcher"); return; } watcherSockets.add(conn); 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 0fd52f7..34b8244 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 @@ -81,7 +81,6 @@ import org.apache.zeppelin.service.JobManagerService; import org.apache.zeppelin.service.NotebookService; import org.apache.zeppelin.service.ServiceContext; import org.apache.zeppelin.service.SimpleServiceCallback; -import org.apache.zeppelin.socket.ConnectionManager.UserIterator; import org.apache.zeppelin.ticket.TicketContainer; import org.apache.zeppelin.types.InterpreterSettingsList; import org.apache.zeppelin.user.AuthenticationInfo; @@ -118,7 +117,7 @@ public class NotebookServer extends WebSocketServlet */ protected enum JobManagerServiceType { JOB_MANAGER_PAGE("JOB_MANAGER_PAGE"); - private String serviceTypeKey; + private final String serviceTypeKey; JobManagerServiceType(String serviceType) { this.serviceTypeKey = serviceType; @@ -130,19 +129,19 @@ public class NotebookServer extends WebSocketServlet } - private Boolean collaborativeModeEnable = ZeppelinConfiguration + private final Boolean collaborativeModeEnable = ZeppelinConfiguration .create() .isZeppelinNotebookCollaborativeModeEnable(); private static final Logger LOG = LoggerFactory.getLogger(NotebookServer.class); - private static Gson gson = new GsonBuilder() + private static final Gson gson = new GsonBuilder() .setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ") .registerTypeAdapter(Date.class, new NotebookImportDeserializer()) .setPrettyPrinting() .registerTypeAdapterFactory(Input.TypeAdapterFactory).create(); - private static AtomicReference<NotebookServer> self = new AtomicReference<>(); + private static final AtomicReference<NotebookServer> self = new AtomicReference<>(); - private ExecutorService executorService = Executors.newFixedThreadPool(10); - private boolean sendParagraphStatusToFrontend = ZeppelinConfiguration.create().getBoolean( + private final ExecutorService executorService = Executors.newFixedThreadPool(10); + private final boolean sendParagraphStatusToFrontend = ZeppelinConfiguration.create().getBoolean( ZeppelinConfiguration.ConfVars.ZEPPELIN_WEBSOCKET_PARAGRAPH_STATUS_PROGRESS); private Provider<Notebook> notebookProvider; @@ -251,27 +250,27 @@ public class NotebookServer extends WebSocketServlet @Override public void onMessage(NotebookSocket conn, String msg) { 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); + Message receivedMessage = deserializeMessage(msg); + if (receivedMessage.op != OP.PING) { + LOG.debug("RECEIVE: " + receivedMessage.op + + ", RECEIVE PRINCIPAL: " + receivedMessage.principal + + ", RECEIVE TICKET: " + receivedMessage.ticket + + ", RECEIVE ROLES: " + receivedMessage.roles + + ", RECEIVE DATA: " + receivedMessage.data); } if (LOG.isTraceEnabled()) { - LOG.trace("RECEIVE MSG = " + messagereceived); + LOG.trace("RECEIVE MSG = " + receivedMessage); } - TicketContainer.Entry ticketEntry = TicketContainer.instance.getTicketEntry(messagereceived.principal); + TicketContainer.Entry ticketEntry = TicketContainer.instance.getTicketEntry(receivedMessage.principal); if (ticketEntry != null && - (messagereceived.ticket == null || !ticketEntry.getTicket().equals(messagereceived.ticket))) { + (!ticketEntry.getTicket().equals(receivedMessage.ticket))) { /* not to pollute logs, log instead of exception */ - if (StringUtils.isEmpty(messagereceived.ticket)) { - LOG.debug("{} message: invalid ticket {} != {}", messagereceived.op, - messagereceived.ticket, ticketEntry.getTicket()); + if (StringUtils.isEmpty(receivedMessage.ticket)) { + LOG.debug("{} message: invalid ticket {} != {}", receivedMessage.op, + receivedMessage.ticket, ticketEntry.getTicket()); } else { - if (!messagereceived.op.equals(OP.PING)) { + if (!receivedMessage.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."))); @@ -282,183 +281,183 @@ public class NotebookServer extends WebSocketServlet ZeppelinConfiguration conf = ZeppelinConfiguration.create(); boolean allowAnonymous = conf.isAnonymousAllowed(); - if (!allowAnonymous && messagereceived.principal.equals("anonymous")) { + if (!allowAnonymous && receivedMessage.principal.equals("anonymous")) { LOG.warn("Anonymous access not allowed."); return; } - if (Message.isDisabledForRunningNotes(messagereceived.op)) { - Note note = getNotebook().getNote((String) messagereceived.get("noteId")); + if (Message.isDisabledForRunningNotes(receivedMessage.op)) { + Note note = getNotebook().getNote((String) receivedMessage.get("noteId")); if (note != null && note.isRunning()) { throw new Exception("Note is now running sequentially. Can not be performed: " + - messagereceived.op); + receivedMessage.op); } } if (StringUtils.isEmpty(conn.getUser())) { - getConnectionManager().addUserConnection(messagereceived.principal, conn); + getConnectionManager().addUserConnection(receivedMessage.principal, conn); } ServiceContext context = getServiceContext(ticketEntry); // Lets be elegant here - switch (messagereceived.op) { + switch (receivedMessage.op) { case LIST_NOTES: listNotesInfo(conn, context); break; case RELOAD_NOTES_FROM_REPO: - broadcastReloadedNoteList(conn, context); + broadcastReloadedNoteList(context); break; case GET_HOME_NOTE: getHomeNote(conn, context); break; case GET_NOTE: - getNote(conn, context, messagereceived); + getNote(conn, context, receivedMessage); break; case RELOAD_NOTE: - reloadNote(conn, context, messagereceived); + reloadNote(conn, context, receivedMessage); break; case NEW_NOTE: - createNote(conn, context, messagereceived); + createNote(conn, context, receivedMessage); break; case DEL_NOTE: - deleteNote(conn, context, messagereceived); + deleteNote(conn, context, receivedMessage); break; case REMOVE_FOLDER: - removeFolder(conn, context, messagereceived); + removeFolder(conn, context, receivedMessage); break; case MOVE_NOTE_TO_TRASH: - moveNoteToTrash(conn, context, messagereceived); + moveNoteToTrash(conn, context, receivedMessage); break; case MOVE_FOLDER_TO_TRASH: - moveFolderToTrash(conn, context, messagereceived); + moveFolderToTrash(conn, context, receivedMessage); break; case EMPTY_TRASH: emptyTrash(conn, context); break; case RESTORE_FOLDER: - restoreFolder(conn, context, messagereceived); + restoreFolder(conn, context, receivedMessage); break; case RESTORE_NOTE: - restoreNote(conn, context, messagereceived); + restoreNote(conn, context, receivedMessage); break; case RESTORE_ALL: - restoreAll(conn, context, messagereceived); + restoreAll(conn, context, receivedMessage); break; case CLONE_NOTE: - cloneNote(conn, context, messagereceived); + cloneNote(conn, context, receivedMessage); break; case IMPORT_NOTE: - importNote(conn, context, messagereceived); + importNote(conn, context, receivedMessage); break; case CONVERT_NOTE_NBFORMAT: - convertNote(conn, messagereceived); + convertNote(conn, receivedMessage); break; case COMMIT_PARAGRAPH: - updateParagraph(conn, context, messagereceived); + updateParagraph(conn, context, receivedMessage); break; case RUN_PARAGRAPH: - runParagraph(conn, context, messagereceived); + runParagraph(conn, context, receivedMessage); break; case PARAGRAPH_EXECUTED_BY_SPELL: - broadcastSpellExecution(conn, context, messagereceived); + broadcastSpellExecution(conn, context, receivedMessage); break; case RUN_ALL_PARAGRAPHS: - runAllParagraphs(conn, context, messagereceived); + runAllParagraphs(conn, context, receivedMessage); break; case CANCEL_PARAGRAPH: - cancelParagraph(conn, context, messagereceived); + cancelParagraph(conn, context, receivedMessage); break; case MOVE_PARAGRAPH: - moveParagraph(conn, context, messagereceived); + moveParagraph(conn, context, receivedMessage); break; case INSERT_PARAGRAPH: - insertParagraph(conn, context, messagereceived); + insertParagraph(conn, context, receivedMessage); break; case COPY_PARAGRAPH: - copyParagraph(conn, context, messagereceived); + copyParagraph(conn, context, receivedMessage); break; case PARAGRAPH_REMOVE: - removeParagraph(conn, context, messagereceived); + removeParagraph(conn, context, receivedMessage); break; case PARAGRAPH_CLEAR_OUTPUT: - clearParagraphOutput(conn, context, messagereceived); + clearParagraphOutput(conn, context, receivedMessage); break; case PARAGRAPH_CLEAR_ALL_OUTPUT: - clearAllParagraphOutput(conn, context, messagereceived); + clearAllParagraphOutput(conn, context, receivedMessage); break; case NOTE_UPDATE: - updateNote(conn, context, messagereceived); + updateNote(conn, context, receivedMessage); break; case NOTE_RENAME: - renameNote(conn, context, messagereceived); + renameNote(conn, context, receivedMessage); break; case FOLDER_RENAME: - renameFolder(conn, context,messagereceived); + renameFolder(conn, context,receivedMessage); break; case UPDATE_PERSONALIZED_MODE: - updatePersonalizedMode(conn, context, messagereceived); + updatePersonalizedMode(conn, context, receivedMessage); break; case COMPLETION: - completion(conn, context, messagereceived); + completion(conn, context, receivedMessage); break; case PING: break; //do nothing case ANGULAR_OBJECT_UPDATED: - angularObjectUpdated(conn, context, messagereceived); + angularObjectUpdated(conn, context, receivedMessage); break; case ANGULAR_OBJECT_CLIENT_BIND: - angularObjectClientBind(conn, messagereceived); + angularObjectClientBind(conn, receivedMessage); break; case ANGULAR_OBJECT_CLIENT_UNBIND: - angularObjectClientUnbind(conn, messagereceived); + angularObjectClientUnbind(conn, receivedMessage); break; case LIST_CONFIGURATIONS: - sendAllConfigurations(conn, context, messagereceived); + sendAllConfigurations(conn, context, receivedMessage); break; case CHECKPOINT_NOTE: - checkpointNote(conn, context, messagereceived); + checkpointNote(conn, context, receivedMessage); break; case LIST_REVISION_HISTORY: - listRevisionHistory(conn, context, messagereceived); + listRevisionHistory(conn, context, receivedMessage); break; case SET_NOTE_REVISION: - setNoteRevision(conn, context, messagereceived); + setNoteRevision(conn, context, receivedMessage); break; case NOTE_REVISION: - getNoteByRevision(conn, context, messagereceived); + getNoteByRevision(conn, context, receivedMessage); break; case NOTE_REVISION_FOR_COMPARE: - getNoteByRevisionForCompare(conn, context, messagereceived); + getNoteByRevisionForCompare(conn, context, receivedMessage); break; case LIST_NOTE_JOBS: - unicastNoteJobInfo(conn, context, messagereceived); + unicastNoteJobInfo(conn, context, receivedMessage); break; case UNSUBSCRIBE_UPDATE_NOTE_JOBS: unsubscribeNoteJobInfo(conn); break; case GET_INTERPRETER_BINDINGS: - getInterpreterBindings(conn, context, messagereceived); + getInterpreterBindings(conn, context, receivedMessage); break; case SAVE_INTERPRETER_BINDINGS: - saveInterpreterBindings(conn, context, messagereceived); + saveInterpreterBindings(conn, context, receivedMessage); break; case EDITOR_SETTING: - getEditorSetting(conn, context, messagereceived); + getEditorSetting(conn, context, receivedMessage); break; case GET_INTERPRETER_SETTINGS: - getInterpreterSettings(conn, context, messagereceived); + getInterpreterSettings(conn, context, receivedMessage); break; case WATCHER: getConnectionManager().switchConnectionToWatcher(conn); break; case SAVE_NOTE_FORMS: - saveNoteForms(conn, context, messagereceived); + saveNoteForms(conn, context, receivedMessage); break; case REMOVE_NOTE_FORMS: - removeNoteForms(conn, context, messagereceived); + removeNoteForms(conn, context, receivedMessage); break; case PATCH_PARAGRAPH: - patchParagraph(conn, context, messagereceived); + patchParagraph(conn, context, receivedMessage); break; default: break; @@ -613,7 +612,6 @@ public class NotebookServer extends WebSocketServlet } private void inlineBroadcastParagraphs(Map<String, Paragraph> userParagraphMap, - Paragraph defaultParagraph, String msgId) { if (null != userParagraphMap) { for (String user : userParagraphMap.keySet()) { @@ -626,7 +624,7 @@ public class NotebookServer extends WebSocketServlet private void broadcastParagraphs(Map<String, Paragraph> userParagraphMap, Paragraph defaultParagraph, String msgId) { - inlineBroadcastParagraphs(userParagraphMap, defaultParagraph, msgId); + inlineBroadcastParagraphs(userParagraphMap, msgId); broadcastClusterEvent(ClusterEvent.BROADCAST_PARAGRAPHS, msgId, userParagraphMap, defaultParagraph); } @@ -643,27 +641,24 @@ public class NotebookServer extends WebSocketServlet broadcastClusterEvent(ClusterEvent.BROADCAST_NEW_PARAGRAPH, MSG_ID_NOT_DEFINED, note, para); } - public void inlineBroadcastNoteList(AuthenticationInfo subject, Set<String> userAndRoles) { + private void inlineBroadcastNoteList() { broadcastNoteListUpdate(); } public void broadcastNoteListUpdate() { AuthorizationService authorizationService = getNotebookAuthorizationService(); - getConnectionManager().forAllUsers(new UserIterator() { - @Override - public void handleUser(String user, Set<String> userAndRoles) { - List<NoteInfo> notesInfo = getNotebook().getNotesInfo( - noteId -> authorizationService.isReader(noteId, userAndRoles)); + getConnectionManager().forAllUsers((user, userAndRoles) -> { + List<NoteInfo> notesInfo = getNotebook().getNotesInfo( + noteId -> authorizationService.isReader(noteId, userAndRoles)); - getConnectionManager().multicastToUser(user, - new Message(OP.NOTES_INFO).put("notes", notesInfo)); - } + getConnectionManager().multicastToUser(user, + new Message(OP.NOTES_INFO).put("notes", notesInfo)); }); } public void broadcastNoteList(AuthenticationInfo subject, Set<String> userAndRoles) { - inlineBroadcastNoteList(subject, userAndRoles); + inlineBroadcastNoteList(); broadcastClusterEvent(ClusterEvent.BROADCAST_NOTE_LIST, MSG_ID_NOT_DEFINED, subject, userAndRoles); } @@ -678,7 +673,7 @@ public class NotebookServer extends WebSocketServlet clusterMessage.setMsgId(msgId); for(Object object : objects) { - String json = ""; + String json; if (object instanceof AuthenticationInfo) { json = ((AuthenticationInfo) object).toJson(); clusterMessage.put("AuthenticationInfo", json); @@ -751,7 +746,7 @@ public class NotebookServer extends WebSocketServlet case BROADCAST_NOTE_LIST: try { getNotebook().reloadAllNotes(authenticationInfo); - inlineBroadcastNoteList(authenticationInfo, userAndRoles); + inlineBroadcastNoteList(); } catch (IOException e) { LOG.error(e.getMessage(), e); } @@ -760,7 +755,7 @@ public class NotebookServer extends WebSocketServlet inlineBroadcastParagraph(note, paragraph, message.getMsgId()); break; case BROADCAST_PARAGRAPHS: - inlineBroadcastParagraphs(userParagraphMap, paragraph, message.getMsgId()); + inlineBroadcastParagraphs(userParagraphMap, message.getMsgId()); break; case BROADCAST_NEW_PARAGRAPH: inlineBroadcastNewParagraph(note, paragraph); @@ -783,7 +778,7 @@ public class NotebookServer extends WebSocketServlet }); } - public void broadcastReloadedNoteList(NotebookSocket conn, ServiceContext context) + public void broadcastReloadedNoteList(ServiceContext context) throws IOException { getNotebook().reloadAllNotes(context.getAutheInfo()); broadcastNoteListUpdate(); @@ -930,7 +925,7 @@ public class NotebookServer extends WebSocketServlet Message fromMessage) throws IOException { String noteId = (String) fromMessage.get("id"); String personalized = (String) fromMessage.get("personalized"); - boolean isPersonalized = personalized.equals("true") ? true : false; + boolean isPersonalized = personalized.equals("true"); getNotebookService().updatePersonalizedMode(noteId, isPersonalized, context, new WebSocketServiceCallback<Note>(conn) { @@ -1925,7 +1920,7 @@ public class NotebookServer extends WebSocketServlet } @Override - public void onParagraphUpdate(Paragraph p) throws IOException { + public void onParagraphUpdate(Paragraph p) { } @@ -1940,7 +1935,7 @@ public class NotebookServer extends WebSocketServlet } @Override - public void onNoteUpdate(Note note, AuthenticationInfo subject) throws IOException { + public void onNoteUpdate(Note note, AuthenticationInfo subject) { } @@ -2014,7 +2009,7 @@ public class NotebookServer extends WebSocketServlet try { broadcastUpdateNoteJobInfo(p.getNote(), System.currentTimeMillis() - 5000); } catch (IOException e) { - LOG.error("can not broadcast for job manager {}", e); + LOG.error("can not broadcast for job manager", e); } } @@ -2161,7 +2156,7 @@ public class NotebookServer extends WebSocketServlet } @Override - public void onFailure(Exception ex, ServiceContext context) throws IOException { + public void onFailure(Exception ex, ServiceContext context) { LOG.warn(ex.getMessage()); } }); @@ -2228,17 +2223,16 @@ public class NotebookServer extends WebSocketServlet AuthorizationService notebookAuthorization = getNotebookAuthorizationService(); boolean isAllowed = notebookAuthorization.isReader(noteId, userAndRoles); Set<String> allowed = notebookAuthorization.getReaders(noteId); - if (false == isAllowed) { + if (!isAllowed) { String errorMsg = "Insufficient privileges to READER note. " + "Allowed users or roles: " + allowed; throw new ServiceException(errorMsg); } // Convert Paragraph to ParagraphInfo - List<ParagraphInfo> paragraphInfos = new ArrayList(); + List<ParagraphInfo> paragraphInfos = new ArrayList<>(); List<Paragraph> paragraphs = note.getParagraphs(); - for (Iterator<Paragraph> iter = paragraphs.iterator(); iter.hasNext();) { - Paragraph paragraph = iter.next(); + for (Paragraph paragraph : paragraphs) { ParagraphInfo paraInfo = new ParagraphInfo(); paraInfo.setNoteId(noteId); paraInfo.setParagraphId(paragraph.getId()); @@ -2266,7 +2260,7 @@ public class NotebookServer extends WebSocketServlet getNotebookService().saveNoteForms(noteId, noteParams, context, new WebSocketServiceCallback<Note>(conn) { @Override - public void onSuccess(Note note, ServiceContext context) throws IOException { + public void onSuccess(Note note, ServiceContext context) { broadcastNoteForms(note); } }); @@ -2281,7 +2275,7 @@ public class NotebookServer extends WebSocketServlet getNotebookService().removeNoteForms(noteId, formName, context, new WebSocketServiceCallback<Note>(conn) { @Override - public void onSuccess(Note note, ServiceContext context) throws IOException { + public void onSuccess(Note note, ServiceContext context) { broadcastNoteForms(note); } }); @@ -2310,7 +2304,7 @@ public class NotebookServer extends WebSocketServlet public class WebSocketServiceCallback<T> extends SimpleServiceCallback<T> { - private NotebookSocket conn; + private final NotebookSocket conn; WebSocketServiceCallback(NotebookSocket conn) { this.conn = conn; diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookSocket.java b/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookSocket.java index 613a7c9..2c0af6d 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookSocket.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookSocket.java @@ -29,9 +29,9 @@ import javax.servlet.http.HttpServletRequest; */ public class NotebookSocket extends WebSocketAdapter { private Session connection; - private NotebookSocketListener listener; - private HttpServletRequest request; - private String protocol; + private final NotebookSocketListener listener; + private final HttpServletRequest request; + private final String protocol; private String user; public NotebookSocket(HttpServletRequest req, String protocol, diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookWebSocketCreator.java b/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookWebSocketCreator.java index 6a9c8a8..3c99ede 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookWebSocketCreator.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookWebSocketCreator.java @@ -30,7 +30,7 @@ import static org.apache.zeppelin.conf.ZeppelinConfiguration.ConfVars.ZEPPELIN_A public class NotebookWebSocketCreator implements WebSocketCreator { private static final Logger LOG = LoggerFactory.getLogger(NotebookWebSocketCreator.class); - private NotebookServer notebookServer; + private final NotebookServer notebookServer; public NotebookWebSocketCreator(NotebookServer notebookServer) { this.notebookServer = notebookServer; diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/utils/AnyOfRolesUserAuthorizationFilter.java b/zeppelin-server/src/main/java/org/apache/zeppelin/utils/AnyOfRolesUserAuthorizationFilter.java index e345dd6..7234ffa 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/utils/AnyOfRolesUserAuthorizationFilter.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/utils/AnyOfRolesUserAuthorizationFilter.java @@ -16,7 +16,6 @@ */ package org.apache.zeppelin.utils; -import java.io.IOException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import org.apache.shiro.subject.Subject; @@ -31,7 +30,7 @@ import org.apache.shiro.web.filter.authz.RolesAuthorizationFilter; public class AnyOfRolesUserAuthorizationFilter extends RolesAuthorizationFilter { @Override public boolean isAccessAllowed(ServletRequest request, ServletResponse response, - Object mappedValue) throws IOException { + Object mappedValue) { final Subject subject = getSubject(request, response); final String[] rolesArray = (String[]) mappedValue;