From 7d5b098bf28f1db76ee8bc4ba0b7df49297abc2c Mon Sep 17 00:00:00 2001 From: Kohsuke Kawaguchi Date: Thu, 16 Oct 2014 10:40:56 -0700 Subject: [PATCH] Promoting this common pattern into a convenience class --- .../jenkins/ReflectiveFilePathFilter.java | 45 +++++++++++++++++++ .../security/DefaultFilePathFilter.java | 24 ++-------- 2 files changed, 48 insertions(+), 21 deletions(-) create mode 100644 core/src/main/java/jenkins/ReflectiveFilePathFilter.java diff --git a/core/src/main/java/jenkins/ReflectiveFilePathFilter.java b/core/src/main/java/jenkins/ReflectiveFilePathFilter.java new file mode 100644 index 0000000000..8ec348b8bd --- /dev/null +++ b/core/src/main/java/jenkins/ReflectiveFilePathFilter.java @@ -0,0 +1,45 @@ +package jenkins; + +import java.io.File; + +/** + * Convenient adapter for {@link FilePathFilter} that allows you to handle all + * operations as a single string argument. + * + * @author Kohsuke Kawaguchi + * @since 1.THU + */ +public abstract class ReflectiveFilePathFilter extends FilePathFilter { + + protected abstract boolean op(String name, File path) throws SecurityException; + + @Override + public boolean read(File f) throws SecurityException { + return op("read", f); + } + + @Override + public boolean write(File f) throws SecurityException { + return op("write", f); + } + + @Override + public boolean mkdirs(File f) throws SecurityException { + return op("mkdirs", f); + } + + @Override + public boolean create(File f) throws SecurityException { + return op("create", f); + } + + @Override + public boolean delete(File f) throws SecurityException { + return op("delete", f); + } + + @Override + public boolean stat(File f) throws SecurityException { + return op("stat", f); + } +} diff --git a/core/src/main/java/jenkins/security/DefaultFilePathFilter.java b/core/src/main/java/jenkins/security/DefaultFilePathFilter.java index 37cde749f7..82d1fb8f81 100644 --- a/core/src/main/java/jenkins/security/DefaultFilePathFilter.java +++ b/core/src/main/java/jenkins/security/DefaultFilePathFilter.java @@ -26,7 +26,7 @@ package jenkins.security; import hudson.Extension; import hudson.remoting.ChannelBuilder; -import jenkins.FilePathFilter; +import jenkins.ReflectiveFilePathFilter; import org.kohsuke.accmod.Restricted; import org.kohsuke.accmod.restrictions.DoNotUse; @@ -65,8 +65,8 @@ import java.util.logging.Logger; @Override public void onChannelBuilding(ChannelBuilder builder, Object context) { - new FilePathFilter() { - private boolean op(String op, File f) throws SecurityException { + new ReflectiveFilePathFilter() { + protected boolean op(String op, File f) throws SecurityException { if (BYPASS_LOG != null) { BYPASS_LOG.println(op + " " + f); return true; @@ -80,24 +80,6 @@ import java.util.logging.Logger; return false; } } - @Override public boolean read(File f) throws SecurityException { - return op("read", f); - } - @Override public boolean write(File f) throws SecurityException { - return op("write", f); - } - @Override public boolean mkdirs(File f) throws SecurityException { - return op("mkdirs", f); - } - @Override public boolean create(File f) throws SecurityException { - return op("create", f); - } - @Override public boolean delete(File f) throws SecurityException { - return op("delete", f); - } - @Override public boolean stat(File f) throws SecurityException { - return op("stat", f); - } }.installTo(builder); } }