package com.github.marschall.memoryfilesystem; import java.nio.file.Path; import java.nio.file.attribute.FileAttributeView; import java.nio.file.attribute.GroupPrincipal; import java.nio.file.attribute.PosixFilePermission; import java.nio.file.attribute.UserPrincipal; import java.util.Collections; import java.util.Set; import com.github.marschall.memoryfilesystem.MemoryUserPrincipalLookupService.MemoryGroup; import com.github.marschall.memoryfilesystem.MemoryUserPrincipalLookupService.MemoryUser; final class EntryCreationContext { final Set<Class<? extends FileAttributeView>> additionalViews; final Set<PosixFilePermission> permissions; final UserPrincipal user; final GroupPrincipal group; final MemoryFileSystem fileSystem; final Path path; EntryCreationContext(Set<Class<? extends FileAttributeView>> additionalViews, Set<PosixFilePermission> permissions, UserPrincipal user, GroupPrincipal group, MemoryFileSystem fileSystem, Path path) { this.additionalViews = additionalViews; this.permissions = permissions; this.user = user; this.group = group; this.fileSystem = fileSystem; this.path = path; } Class<? extends FileAttributeView> firstView() { return this.additionalViews.iterator().next(); } static EntryCreationContext empty() { // REVIEW can be fixed with Java 8 source Set<Class<? extends FileAttributeView>> noViews = Collections.emptySet(); Set<PosixFilePermission> noPermissions = Collections.emptySet(); return new EntryCreationContext(noViews, noPermissions, new MemoryUser("dummy"), new MemoryGroup("dummy"), null, null); } }