Skip to content

Commit 7c6a430

Browse files
cgdeckerJimfs Team
authored andcommitted
Fix implementation of PosixFileAttributes.permissions() to return a modifiable set as specified in the Javadoc for that method.
Fixes #413 RELNOTES=Fixed implementation of `PosixFileAttributes.permissions()` to return a modifiable set as specified in the Javadoc for that method. PiperOrigin-RevId: 762097962
1 parent 2225abf commit 7c6a430

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

jimfs/src/main/java/com/google/common/jimfs/PosixAttributeProvider.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import java.nio.file.attribute.PosixFilePermission;
3434
import java.nio.file.attribute.PosixFilePermissions;
3535
import java.nio.file.attribute.UserPrincipal;
36+
import java.util.LinkedHashSet;
3637
import java.util.Map;
3738
import java.util.Set;
3839
import org.jspecify.annotations.Nullable;
@@ -68,7 +69,6 @@ public ImmutableSet<String> fixedAttributes() {
6869
return ATTRIBUTES;
6970
}
7071

71-
@SuppressWarnings("unchecked")
7272
@Override
7373
public ImmutableMap<String, ?> defaultValues(Map<String, ?> userProvidedDefaults) {
7474
Object userProvidedGroup = userProvidedDefaults.get("posix:group");
@@ -262,8 +262,8 @@ public GroupPrincipal group() {
262262
}
263263

264264
@Override
265-
public ImmutableSet<PosixFilePermission> permissions() {
266-
return permissions;
265+
public Set<PosixFilePermission> permissions() {
266+
return new LinkedHashSet<>(permissions);
267267
}
268268
}
269269
}

jimfs/src/test/java/com/google/common/jimfs/PosixAttributeProviderTest.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,4 +121,11 @@ public void testAttributes() {
121121
assertThat(attrs.group()).isEqualTo(createGroupPrincipal("group"));
122122
assertThat(attrs.fileKey()).isEqualTo(0);
123123
}
124+
125+
@Test
126+
public void testAttributes_permissionsAreModifiable() {
127+
Set<PosixFilePermission> permissions = provider.readAttributes(file).permissions();
128+
permissions.add(PosixFilePermission.OWNER_EXECUTE);
129+
assertThat(permissions).isEqualTo(PosixFilePermissions.fromString("rwxr--r--"));
130+
}
124131
}

0 commit comments

Comments
 (0)