private MemoryFS( Object nameo, Map<String, Object> env ) {
this.name = (String) nameo;
if( name.isEmpty() ) {
throw new IllegalArgumentException( "memory filesystem must have a name, e.g. memory:name" );
}
watchable = (Boolean) env.getOrDefault( WATCH_SERVICE, Boolean.TRUE );
closable = (Boolean) env.getOrDefault( CLOSABLE, Boolean.TRUE );
principals = (Principals) env.getOrDefault( "principals", PrincipalsBuilder.linuxUsersAndGroups( "me" ) );
pathSpec = (PathSpec) env.getOrDefault( PATH_SPEC, new PathSpecUnix() );
stores = new Stores( (String) env.getOrDefault( PRIMARY_STORE_NAME, "" ));
stores.getPrimary().setMaxSize( (Long) env.getOrDefault( MAX_SIZE, -1L ) );
stores.getPrimary().getData().addRoot( pathSpec.getSeparator(), principals );
for ( String rootName : (List<String>)env.getOrDefault( "roots", Collections.emptyList() )) {
stores.newStore( rootName );
}
symLinkManger = Optional.of( new MemorySymLinkManager( principals, this::getStore ) );
}