diff options
Diffstat (limited to 'testutil/src/main/java/com/yahoo/vespa/test/file/UnixUidGidAttributeProvider.java')
-rw-r--r-- | testutil/src/main/java/com/yahoo/vespa/test/file/UnixUidGidAttributeProvider.java | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/testutil/src/main/java/com/yahoo/vespa/test/file/UnixUidGidAttributeProvider.java b/testutil/src/main/java/com/yahoo/vespa/test/file/UnixUidGidAttributeProvider.java index 2b1b0231b4f..13c51851540 100644 --- a/testutil/src/main/java/com/yahoo/vespa/test/file/UnixUidGidAttributeProvider.java +++ b/testutil/src/main/java/com/yahoo/vespa/test/file/UnixUidGidAttributeProvider.java @@ -72,7 +72,8 @@ public class UnixUidGidAttributeProvider extends AttributeProvider { } private int getUniqueId(UserPrincipal user) { - return idCache.computeIfAbsent(user, id -> maybeNumber(id.getName()).orElseGet(uidGenerator::incrementAndGet)); + return maybeNumber(user.getName()) + .orElseGet(() -> idCache.computeIfAbsent(user, id -> uidGenerator.incrementAndGet())); } @SuppressWarnings("unchecked") @@ -106,6 +107,14 @@ public class UnixUidGidAttributeProvider extends AttributeProvider { @Override public void set(File file, String view, String attribute, Object value, boolean create) { + switch (attribute) { + case "uid": + file.setAttribute("owner", "owner", new BasicUserPrincipal(String.valueOf(value))); + return; + case "gid": + file.setAttribute("posix", "group", new BasicGroupPrincipal(String.valueOf(value))); + return; + } throw unsettable(view, attribute); } @@ -158,4 +167,16 @@ public class UnixUidGidAttributeProvider extends AttributeProvider { return Optional.empty(); } } + + private static class BasicUserPrincipal implements UserPrincipal { + private final String name; + private BasicUserPrincipal(String name) { this.name = name; } + + @Override public String getName() { return name; } + @Override public String toString() { return name; } + } + + private static class BasicGroupPrincipal extends BasicUserPrincipal implements GroupPrincipal { + private BasicGroupPrincipal(String name) { super(name); } + } } |