From 5724953e9d6fd86a425dda61cc94dbfa1e2da0b6 Mon Sep 17 00:00:00 2001 From: Aidan Hahn Date: Tue, 21 May 2019 01:37:41 -0700 Subject: [PATCH] refactored out re-entrant code in client --- src/main/java/JobServ/JobServClient.java | 90 +++++++++++------------- src/main/java/JobServ/JobServServer.java | 2 - 2 files changed, 41 insertions(+), 51 deletions(-) diff --git a/src/main/java/JobServ/JobServClient.java b/src/main/java/JobServ/JobServClient.java index 7ec17f6..be67d06 100644 --- a/src/main/java/JobServ/JobServClient.java +++ b/src/main/java/JobServ/JobServClient.java @@ -220,15 +220,16 @@ public class JobServClient { return; } - // start client - // fails if port is improperly formatted or if an ssl exception occurs JobServClient client; try { client = new JobServClient(args[3], Integer.parseInt(args[4]), args[2], args[1], args[0]); + // Likely bad port } catch (NumberFormatException e) { System.out.println("Invalid Port"); return; + + // bad cert or key format } catch (SSLException e) { System.out.println(e.getMessage()); return; @@ -254,71 +255,40 @@ public class JobServClient { break; case "output": - if (args.length != 7) { - System.out.println("Improper formatting, try client --help"); - break; - } - - try { - candidatePid = Integer.parseInt(args[6]); - } catch (InputMismatchException e) { - System.out.println(args[6] + " is not a valid int, much less a valid pid"); - break; - } + candidatePid = getPidArg(args, 7); + if (candidatePid < 0) { + break; + } String processOutput = client.getProcessOutput(candidatePid); System.out.println(processOutput); break; case "status": - if (args.length != 7) { - System.out.println("Improper formatting, try client --help"); - break; - } - - try { - candidatePid = Integer.parseInt(args[6]); - - } catch (InputMismatchException e) { - System.out.println(args[6] + " is not a valid int, much less a valid pid"); - break; - } + candidatePid = getPidArg(args, 7); + if (candidatePid < 0) { + break; + } Boolean processStatus = client.getProcessStatus(candidatePid); System.out.printf("Process is currently running? %b\n", processStatus); break; case "kill": - if (args.length != 7) { - System.out.println("Improper formatting, try client --help"); - break; - } - - try { - candidatePid = Integer.parseInt(args[6]); - - } catch (InputMismatchException e) { - System.out.println(args[6] + " is not a valid int, much less a valid pid"); - break; - } + candidatePid = getPidArg(args, 7); + if (candidatePid < 0) { + break; + } client.killProcess(candidatePid); System.out.println("End process request recieved!"); break; case "return": - if (args.length != 7) { - System.out.println("Improper formatting, try client --help"); - break; - } - - try { - candidatePid = Integer.parseInt(args[6]); - - } catch (InputMismatchException e) { - System.out.println(args[6] + " is not a valid int, much less a valid pid"); - break; - } + candidatePid = getPidArg(args, 7); + if (candidatePid < 0) { + break; + } int returnCode = client.getProcessReturn(candidatePid); @@ -340,6 +310,28 @@ public class JobServClient { } } + /* + * getPidArg() + * reentrant code was found in all commands except newjob + * this function pulls the pid argument and wraps around the integer case + * returns -1 (an invalid PID) if bad index or unparsable int + */ + private static int getPidArg(String[] args, int index) { + if (args.length < index) { + System.out.println("Improper formatting, try client --help"); + return -1; + } + + try { + return Integer.parseInt(args[6]); + + } catch (InputMismatchException e) { + System.out.println(args[6] + " is not a valid int, much less a valid pid"); + return -1; + } + + } + /* * outputHelp() * writes help information about all commands in the shell to screen diff --git a/src/main/java/JobServ/JobServServer.java b/src/main/java/JobServ/JobServServer.java index 6156403..483e865 100644 --- a/src/main/java/JobServ/JobServServer.java +++ b/src/main/java/JobServ/JobServServer.java @@ -69,8 +69,6 @@ public class JobServServer { Runtime.getRuntime().addShutdownHook(new Thread() { @Override public void run() { - // JVM shutdown might break logger functionality - // so investigate this.... logger.info("Shutting down server"); JobServServer.this.stop(); }