Author: krosenvold Date: Mon Oct 8 16:13:44 2012 New Revision: 1395636 URL: http://svn.apache.org/viewvc?rev=1395636&view=rev Log: Shutdownhook backport
Added: maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/ShutdownHookUtils.java Modified: maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/CommandLineUtils.java Modified: maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/CommandLineUtils.java URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/CommandLineUtils.java?rev=1395636&r1=1395635&r2=1395636&view=diff ============================================================================== --- maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/CommandLineUtils.java (original) +++ maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/CommandLineUtils.java Mon Oct 8 16:13:44 2012 @@ -173,16 +173,7 @@ public abstract class CommandLineUtils final ProcessHook processHook = new ProcessHook( p ); - try - { - Runtime.getRuntime().addShutdownHook( processHook ); - } - catch ( IllegalStateException ignore ) - { - } - catch ( AccessControlException ignore ) - { - } + ShutdownHookUtils.addShutDownHook( processHook); return new CommandLineCallable() { @@ -242,17 +233,7 @@ public abstract class CommandLineUtils } finally { - try - { - Runtime.getRuntime().removeShutdownHook( processHook ); - } - catch ( IllegalStateException ignore ) - { - // - } - catch ( AccessControlException ignore ) - { - } + ShutdownHookUtils.removeShutdownHook( processHook ); processHook.run(); Added: maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/ShutdownHookUtils.java URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/ShutdownHookUtils.java?rev=1395636&view=auto ============================================================================== --- maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/ShutdownHookUtils.java (added) +++ maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/ShutdownHookUtils.java Mon Oct 8 16:13:44 2012 @@ -0,0 +1,66 @@ +package org.apache.maven.shared.utils.cli; + + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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. + */ + +import java.security.AccessControlException; + +/** + * A shutdown hook that does not throw any exceptions upon container startup/shutdown or security manager + * restrictions. + * + * Incorrect usage of the hook itself may still throw an exception. + * + * @author Kristian Rosenvold + */ +class ShutdownHookUtils +{ + + public static void addShutDownHook( Thread hook ) + { + try + { + Runtime.getRuntime().addShutdownHook( hook ); + } + catch ( IllegalStateException ignore ) + { + } + catch ( AccessControlException ignore ) + { + } + + + } + + public static void removeShutdownHook( Thread hook ) + { + try + { + Runtime.getRuntime().removeShutdownHook( hook ); + } + catch ( IllegalStateException ignore ) + { + } + catch ( AccessControlException ignore ) + { + } + } + +}