package hudson.os; import org.jruby.ext.posix.JavaPOSIX; import org.jruby.ext.posix.POSIX; import org.jruby.ext.posix.POSIXFactory; import org.jruby.ext.posix.POSIXHandler; import org.jruby.ext.posix.POSIX.ERRORS; import java.io.File; import java.io.InputStream; import java.io.PrintStream; import java.util.logging.Logger; /** * POSIX API wrapper. * * @author Kohsuke Kawaguchi */ public class PosixAPI { public static POSIX get() { return posix; } /** * Determine if the jna-posix library could not provide native support, and * used a fallback java implementation which does not support many operations. */ public boolean isNative() { return !(posix instanceof JavaPOSIX); } private static final POSIX posix = POSIXFactory.getPOSIX(new POSIXHandler() { public void error(ERRORS errors, String s) { throw new PosixException(s,errors); } public void unimplementedError(String s) { throw new UnsupportedOperationException(s); } public void warn(WARNING_ID warning_id, String s, Object... objects) { LOGGER.fine(s); } public boolean isVerbose() { return false; } public File getCurrentWorkingDirectory() { // TODO throw new UnsupportedOperationException(); } public String[] getEnv() { // TODO throw new UnsupportedOperationException(); } public InputStream getInputStream() { // TODO throw new UnsupportedOperationException(); } public PrintStream getOutputStream() { // TODO throw new UnsupportedOperationException(); } public int getPID() { // TODO throw new UnsupportedOperationException(); } public PrintStream getErrorStream() { // TODO throw new UnsupportedOperationException(); } }, true); private static final Logger LOGGER = Logger.getLogger(PosixAPI.class.getName()); }