/* * Copyright (C) 2014 Google 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 interactivespaces.util.process; import interactivespaces.system.InteractiveSpacesEnvironment; import org.apache.commons.logging.Log; /** * A base {@link NativeApplicationRunner} for unix-based operating systems. * * @author Keith M. Hughes */ public abstract class UnixNativeApplicationRunner extends BaseNativeApplicationRunner { /** * Create a new activity runner for a unix-based operating system. * * @param runnerParser * the runner parser * @param spaceEnvironment * environment to use * @param log * logger for logging */ public UnixNativeApplicationRunner(NativeApplicationRunnerParser runnerParser, InteractiveSpacesEnvironment spaceEnvironment, Log log) { super(runnerParser, spaceEnvironment, log); } @Override public boolean handleProcessExit(int exitValue, String[] commands) { String returnValue = null; boolean normalExit = false; try { UnixReturnValue unixReturnValue = UnixReturnValue.get(exitValue); if (unixReturnValue != null) { returnValue = unixReturnValue.toString(); if (unixReturnValue == UnixReturnValue.EXIT_NORMALLY) { normalExit = true; } } else { returnValue = Integer.toString(exitValue); } } finally { String message = String.format("Return value from process is %s for %s", returnValue, commands[0]); if (normalExit) { getLog().info(message); } else { getLog().warn(message); } } return normalExit; } }