diff --git a/nailgun-examples/src/main/java/com/facebook/nailgun/examples/Exit.java b/nailgun-examples/src/main/java/com/facebook/nailgun/examples/Exit.java index f533e6de..c87606a8 100644 --- a/nailgun-examples/src/main/java/com/facebook/nailgun/examples/Exit.java +++ b/nailgun-examples/src/main/java/com/facebook/nailgun/examples/Exit.java @@ -17,20 +17,23 @@ package com.facebook.nailgun.examples; +import com.facebook.nailgun.NGContext; + /** Finish nail with provided exit code */ public class Exit { - public static void main(String[] args) { + public static void nailMain(NGContext context) { + int exitCode = (int) ((Math.random() * 1000) + 1); - if (args.length > 0) { + if (context.getArgs().length > 0) { try { - exitCode = Integer.parseInt(args[0]); + exitCode = Integer.parseInt(context.getArgs()[0]); } catch (Exception e) { } } // Close stdout to test the exit code is returned properly // even in such case System.out.close(); - System.exit(exitCode); + context.exit(exitCode); } } diff --git a/nailgun-examples/src/main/java/com/facebook/nailgun/examples/Heartbeat.java b/nailgun-examples/src/main/java/com/facebook/nailgun/examples/Heartbeat.java index 92b4a5f9..0e361505 100644 --- a/nailgun-examples/src/main/java/com/facebook/nailgun/examples/Heartbeat.java +++ b/nailgun-examples/src/main/java/com/facebook/nailgun/examples/Heartbeat.java @@ -55,8 +55,8 @@ public static void nailMain(final NGContext context) { } } } catch (InterruptedException ignored) { - System.exit(42); + context.exit(42); } - System.exit(0); + context.exit(0); } } diff --git a/nailgun-server/src/main/java/com/facebook/nailgun/NGCommunicator.java b/nailgun-server/src/main/java/com/facebook/nailgun/NGCommunicator.java index 8038a1c3..e4ffef0a 100644 --- a/nailgun-server/src/main/java/com/facebook/nailgun/NGCommunicator.java +++ b/nailgun-server/src/main/java/com/facebook/nailgun/NGCommunicator.java @@ -100,9 +100,7 @@ public NamedThreadFactory(String threadName) { @Override public Thread newThread(Runnable r) { - SecurityManager s = System.getSecurityManager(); - ThreadGroup group = - (s != null) ? s.getThreadGroup() : Thread.currentThread().getThreadGroup(); + ThreadGroup group = Thread.currentThread().getThreadGroup(); Thread t = new Thread(group, r, this.threadName, 0); if (t.isDaemon()) { t.setDaemon(false); diff --git a/nailgun-server/src/main/java/com/facebook/nailgun/NGSecurityManager.java b/nailgun-server/src/main/java/com/facebook/nailgun/NGSecurityManager.java deleted file mode 100644 index 5f3549f4..00000000 --- a/nailgun-server/src/main/java/com/facebook/nailgun/NGSecurityManager.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - Copyright 2004-2012, Martian Software, Inc. - Copyright 2017-Present Facebook, Inc - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -package com.facebook.nailgun; - -import java.security.Permission; - -/** - * Security manager which does nothing other than trap checkExit, or delegate all non-deprecated - * methods to a base manager. - * - * @author Pete Kirkham - */ -public class NGSecurityManager extends SecurityManager { - final SecurityManager base; - - /** - * Construct an NGSecurityManager with the given base. - * - * @param base the base security manager, or null for no base. - */ - public NGSecurityManager(SecurityManager base) { - this.base = base; - } - - public void checkExit(int status) { - if (base != null) { - base.checkExit(status); - } - - throw new NGExitException(status); - } - - public void checkPermission(Permission perm) { - if (base != null) { - base.checkPermission(perm); - } - } - - public void checkPermission(Permission perm, Object context) { - if (base != null) { - base.checkPermission(perm, context); - } - } - - /** Avoid constructing a FilePermission object in checkRead if base manager is null. */ - public void checkRead(String file) { - if (base != null) { - super.checkRead(file); - } - } -} diff --git a/nailgun-server/src/main/java/com/facebook/nailgun/NGServer.java b/nailgun-server/src/main/java/com/facebook/nailgun/NGServer.java index 0bacb67d..92543d0d 100644 --- a/nailgun-server/src/main/java/com/facebook/nailgun/NGServer.java +++ b/nailgun-server/src/main/java/com/facebook/nailgun/NGServer.java @@ -85,9 +85,6 @@ public class NGServer implements Runnable { /** a collection of all classes executed by this server so far */ private final Map allNailStats; - /** Remember the security manager we start with so we can restore it later */ - private SecurityManager originalSecurityManager = null; - private final int heartbeatTimeoutMillis; /** @@ -314,9 +311,6 @@ public int getPort() { /** Listens for new connections and launches NGSession threads to process them. */ public void run() { - originalSecurityManager = System.getSecurityManager(); - System.setSecurityManager(new NGSecurityManager(originalSecurityManager)); - if (!(System.in instanceof ThreadLocalInputStream)) { System.setIn(new ThreadLocalInputStream(in)); } @@ -409,8 +403,6 @@ public void run() { System.setOut(out); System.setErr(err); - System.setSecurityManager(originalSecurityManager); - running.set(false); }