package org.tmatesoft.svn.core.internal.util.jna; import java.util.logging.Level; import org.tmatesoft.svn.util.ISVNDebugLog; import org.tmatesoft.svn.util.SVNLogType; import com.sun.jna.Pointer; public class DebugProxyISVNCLibrary implements ISVNCLibrary { private final ISVNCLibrary myLibrary; private ISVNDebugLog myDebugLog; public DebugProxyISVNCLibrary(ISVNCLibrary library, ISVNDebugLog debugLog) { myLibrary = library; myDebugLog = debugLog; } public int chmod(String filename, int mode) { int chmod = myLibrary.chmod(filename, mode); myDebugLog.log(SVNLogType.NATIVE_CALL, "CALLED ISVNCLibrary#chmod(" + filename + ", " + mode + ") = " + chmod, Level.INFO); return chmod; } public static String toStringNullable(final Object o) { return o == null ? "null" : o.toString(); } public static String isNull(final Object o) { return o == null ? "null" : "NOT null"; } public int readlink(String filename, Pointer linkname, int linkNameSize) { int readlink = myLibrary.readlink(filename, linkname, linkNameSize); myDebugLog.log(SVNLogType.NATIVE_CALL, "CALLED ISVNCLibrary#readlink(" + filename + ", " + toStringNullable(linkname) + ", " + linkNameSize + ") = " + readlink, Level.INFO); return readlink; } public int __lxstat64(int ver, String path, Pointer stat) { int i = myLibrary.__lxstat64(ver, path, stat); myDebugLog.log(SVNLogType.NATIVE_CALL, "CALLED ISVNCLibrary#__lxstat64(" + ver + ", " + path + ", " + toStringNullable(stat) + ") = " + i, Level.INFO); return i; } public int lstat(String path, Pointer stat) { int lstat = myLibrary.lstat(path, stat); myDebugLog.log(SVNLogType.NATIVE_CALL, "CALLED ISVNCLibrary#lstat(" + path + ", " + toStringNullable(stat) + ") = " + lstat, Level.INFO); return lstat; } public int _lstat(String path, Pointer stat) { int i = myLibrary._lstat(path, stat); myDebugLog.log(SVNLogType.NATIVE_CALL, "CALLED ISVNCLibrary#_lstat(" + path + ", " + toStringNullable(stat) + ") = " + i, Level.INFO); return i; } public int __xstat64(int ver, String path, Pointer stat) { int i = myLibrary.__xstat64(ver, path, stat); myDebugLog.log(SVNLogType.NATIVE_CALL, "CALLED ISVNCLibrary#__xstat64(" + ver + ", " + path + ", " + toStringNullable(stat) + ") = " + i, Level.INFO); return i; } public int _stat(String path, Pointer stat) { int i = myLibrary._stat(path, stat); myDebugLog.log(SVNLogType.NATIVE_CALL, "CALLED ISVNCLibrary#_stat(" + path + ", " + toStringNullable(stat) + ") = " + i, Level.INFO); return i; } public int stat(String path, Pointer stat) { int stat1 = myLibrary.stat(path, stat); myDebugLog.log(SVNLogType.NATIVE_CALL, "CALLED ISVNCLibrary#stat(" + path + ", " + toStringNullable(stat) + ") = " + stat1, Level.INFO); return stat1; } public int symlink(String targetPath, String linkPath) { int symlink = myLibrary.symlink(targetPath, linkPath); myDebugLog.log(SVNLogType.NATIVE_CALL, "CALLED ISVNCLibrary#symlink(" + targetPath + ", " + linkPath + ") = " + symlink, Level.INFO); return symlink; } public int getuid() { int getuid = myLibrary.getuid(); myDebugLog.log(SVNLogType.NATIVE_CALL, "CALLED ISVNCLibrary#getuid() = " + getuid, Level.INFO); return getuid; } public int getgid() { int getgid = myLibrary.getgid(); myDebugLog.log(SVNLogType.NATIVE_CALL, "CALLED ISVNCLibrary#getgid() = " + getgid, Level.INFO); return getgid; } }