You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by jh...@apache.org on 2016/04/29 11:52:13 UTC
[2/2] ant git commit: Files.setPermission may throw additional
exceptions (e.g. on Win7-NTFS)
Files.setPermission may throw additional exceptions (e.g. on Win7-NTFS)
Project: http://git-wip-us.apache.org/repos/asf/ant/repo
Commit: http://git-wip-us.apache.org/repos/asf/ant/commit/a80c75af
Tree: http://git-wip-us.apache.org/repos/asf/ant/tree/a80c75af
Diff: http://git-wip-us.apache.org/repos/asf/ant/diff/a80c75af
Branch: refs/heads/master
Commit: a80c75af5556ff31eac7607a0ed8715acf111ef5
Parents: 75f1237
Author: Jan Matèrne <jh...@apache.org>
Authored: Fri Apr 29 11:51:04 2016 +0200
Committer: Jan Matèrne <jh...@apache.org>
Committed: Fri Apr 29 11:51:04 2016 +0200
----------------------------------------------------------------------
.../tools/ant/taskdefs/SetPermissions.java | 38 +++++++++++++-------
1 file changed, 26 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ant/blob/a80c75af/src/main/org/apache/tools/ant/taskdefs/SetPermissions.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/SetPermissions.java b/src/main/org/apache/tools/ant/taskdefs/SetPermissions.java
index b417060..b1ccc5a 100644
--- a/src/main/org/apache/tools/ant/taskdefs/SetPermissions.java
+++ b/src/main/org/apache/tools/ant/taskdefs/SetPermissions.java
@@ -31,6 +31,7 @@ import org.apache.tools.ant.types.Resource;
import org.apache.tools.ant.types.ResourceCollection;
import org.apache.tools.ant.types.resources.Resources;
import org.apache.tools.ant.util.PermissionUtils;
+import org.apache.tools.ant.util.StringUtils;
/**
* Sets {@link PosixFilePermission}s for resources.
@@ -95,18 +96,31 @@ public class SetPermissions extends Task {
if (resources == null) {
throw new BuildException("At least one resource-collection is required");
}
- for (Resource r : resources) {
- try {
- PermissionUtils.setPermissions(r, permissions);
- } catch (IOException ioe) {
- String msg = "Failed to set permissions on " + r + " due to "
- + ioe.getMessage();
- if (failonerror) {
- throw new BuildException(msg, ioe);
- } else {
- log("Warning: " + msg, Project.MSG_ERR);
- }
- }
+ Resource currentResource = null;
+ try {
+ for (Resource r : resources) {
+ currentResource = r;
+ try {
+ PermissionUtils.setPermissions(r, permissions);
+ } catch (IOException ioe) {
+ maybeThrowException(ioe, "Failed to set permissions on '%s' due to %s", r, ioe.getMessage());
+ }
+ }
+ } catch (UnsupportedOperationException uoe) {
+ maybeThrowException(null, "the associated file system of resource '%s' does not support the PosixFileAttributeView", currentResource);
+ } catch (ClassCastException uoe) {
+ maybeThrowException(null, "some specified permissions are not of type PosixFilePermission: %s", StringUtils.join(permissions, ", "));
+ } catch (SecurityException uoe) {
+ maybeThrowException(null, "the SecurityManager denies role accessUserInformation or write access for SecurityManager.checkWrite for resource '%s'", currentResource);
}
}
+
+ private void maybeThrowException(Exception ioe, String msgFormat, Object... msgArgs) {
+ String msg = String.format(msgFormat, msgArgs);
+ if (failonerror) {
+ throw new BuildException(msg, ioe);
+ } else {
+ log("Warning: " + msg, Project.MSG_ERR);
+ }
+ }
}