MasterFS API - Architecture Review Opinion

Issue: 40958
Submitter: Radek Matous
Inception Date: 2004/04/14
Reviewers: Jaroslav Tulach, Miloslav Metelka, Tomas Pavek



MasterFileSystem is a module providing an umbrella implementation over all filesystems used in the IDE. MasterFS plays a role of the arbiter that controls instantiation and life cycle of FileObjects (provided by the delegated filesystems). The need of the MasterFS has arisen with the new project environment in NB 4.0 where specialized filesystems may overlap easily (like the VCS filesystem over the local filesystem). See also the complete requirements document.


Accepted with change requests.


We have found the MasterFS module well reasoned and prepared. Suggested just several changes that were more or less already planned by the team.

Agreed that the API will be classified as friend for promo D. The API user will be the vcscore module only.

Agreed that should be used rather than String with abstract path in parameters in MountSupport (issue 40344).

Agreed with the limitation that the mounting points for delegated filesystems cannot be files but only folders (due to unresolved problems with files being turned to folders). See also issue 41779.

As the API will be friend (for vcscore module), we require to repackage it -- away from the official namespace (as used so far). Recommended to put all the classes to one package. This was already planned by the impl. team. This is a TCR.

As the VCSFilesystem already uses the MasterFS, remove current hacks in projects that listen on repository for mounted VCS filesystems and mounts them to Master FS (HackedVCSProvider). This is a TCR.

We suggest the team to think about how MasterFS could help other modules (e.g. MDR) with listening on external file changes -- e.g. by providing some effective refreshing of whole file trees. Possible approaches were discussed with conclusion that real requirements and use cases are needed to be known first. The required changes would be probably of bigger scope, affecting the Filesystems API too. This is a TCA.

Though this is not strictly MasterFS issue, we've also discussed how the delegated filesystems should behave. Agreed on that they should not hide any files (like e.g. VCSFileystem currently does) because hidden files are invisible and unreachable for the IDE and that may cause consistency problems in some operations (like directory copy). Hiding should be done rather in a presentation layer based on some hints provided by the filesystem implementation. Farther investigation and cooperation with VCS team was suggested.

Minority Opinion



Appendix A: Technical Changes Required

42014 Repackage MasterFS API
42038 Remove HackedVCSProvider

Appendix B: Technical Changes Advised

42021 Lightweight recursive refresh in MasterFS

Appendix C: Reference Material

MasterFileSystem's reqs and spec

Project Features

About this Project

openide was started in November 2009, is owned by Antonin Nebuzelsky, and has 92 members.
By use of this website, you agree to the NetBeans Policies and Terms of Use (revision 20160708.bf2ac18). © 2014, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo
Please Confirm