| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> |
| <!-- NewPage --> |
| <html lang="en"> |
| <head> |
| <!-- Generated by javadoc (1.8.0_181) on Fri Sep 14 11:34:51 BST 2018 --> |
| <title>Overview (Master Filesystem)</title> |
| <meta name="date" content="2018-09-14"> |
| <link rel="stylesheet" type="text/css" href="javadoc.css" title="Style"> |
| <script type="text/javascript" src="script.js"></script> |
| </head> |
| <body> |
| <script type="text/javascript"><!-- |
| try { |
| if (location.href.indexOf('is-external=true') == -1) { |
| parent.document.title="Overview (Master Filesystem)"; |
| } |
| } |
| catch(err) { |
| } |
| //--> |
| </script> |
| <noscript> |
| <div>JavaScript is disabled on your browser.</div> |
| </noscript> |
| <!-- ========= START OF TOP NAVBAR ======= --> |
| <div class="topNav"><a name="navbar.top"> |
| <!-- --> |
| </a> |
| <div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div> |
| <a name="navbar.top.firstrow"> |
| <!-- --> |
| </a> |
| <ul class="navList" title="Navigation"> |
| <li class="navBarCell1Rev">Overview</li> |
| <li><a href="org/netbeans/modules/masterfs/providers/package-summary.html">Package</a></li> |
| <li>Class</li> |
| <li>Use</li> |
| <li><a href="org/netbeans/modules/masterfs/providers/package-tree.html">Tree</a></li> |
| <li><a href="deprecated-list.html">Deprecated</a></li> |
| <li><a href="index-files/index-1.html">Index</a></li> |
| <li><a href="help-doc.html">Help</a></li> |
| </ul> |
| <div class="aboutLanguage">org.netbeans.modules.masterfs/2 2.57.1 2</div> |
| </div> |
| <div class="subNav"> |
| <ul class="navList"> |
| <li>Prev</li> |
| <li>Next</li> |
| </ul> |
| <ul class="navList"> |
| <li><a href="index.html?overview-summary.html" target="_top">Frames</a></li> |
| <li><a href="overview-summary.html" target="_top">No Frames</a></li> |
| </ul> |
| <ul class="navList" id="allclasses_navbar_top"> |
| <li><a href="allclasses-noframe.html">All Classes</a></li> |
| </ul> |
| <div> |
| <script type="text/javascript"><!-- |
| allClassesLink = document.getElementById("allclasses_navbar_top"); |
| if(window==top) { |
| allClassesLink.style.display = "block"; |
| } |
| else { |
| allClassesLink.style.display = "none"; |
| } |
| //--> |
| </script> |
| </div> |
| <a name="skip.navbar.top"> |
| <!-- --> |
| </a></div> |
| <!-- ========= END OF TOP NAVBAR ========= --> |
| <div class="header"> |
| <h1 class="title">Master Filesystem<br/><span style='font-style:normal; font-size:medium; font-weight:normal; background-color:#e0a0a0;'><a href='http://wiki.netbeans.org/API_Stability#Friend' target='_blank'>Friend, Private or Third Party</a></span></h1> |
| </div> |
| <div class="header"> |
| <div class="subTitle"> |
| <div class="block"> |
| MasterFileSystem exports SPI for versioning support.</div> |
| </div> |
| <p>See: <a href="#overview.description">Description</a></p> |
| </div> |
| <div class="contentContainer"> |
| <table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Master Filesystem table, listing packages, and an explanation"> |
| <caption><span>Master Filesystem</span><span class="tabEnd"> </span></caption> |
| <tr> |
| <th class="colFirst" scope="col">Package</th> |
| <th class="colLast" scope="col">Description</th> |
| </tr> |
| <tbody> |
| <tr class="altColor"> |
| <td class="colFirst"><a href="org/netbeans/modules/masterfs/providers/package-summary.html">org.netbeans.modules.masterfs.providers</a></td> |
| <td class="colLast"> </td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <div class="contentContainer"><a name="overview.description"> |
| <!-- --> |
| </a> |
| <div class="block"><p> |
| MasterFileSystem exports SPI for versioning support. There is expected that |
| module that provides implementation of FileSystem that should be plugable into |
| MasterFileSystem must implement at least <code>FileSystemProvider</code>. |
| MasterFileSystem doesn't provide pure client API but has tiny API that |
| is intended just for SPI providers (slightly disputable if it should be called API or SPI). |
| All SPI are plugable, registred by Lookup. |
| </p> |
| <h3>What is New (see <a href="apichanges.html">all changes</a>)?</h3> |
| <ul> |
| |
| |
| <!--Search for dates that are later or equal to 1997-09-01 in |
| .--> |
| <!--Checking date 2014-10-3 with count of newer 0--><!--year ok--> |
| <li>Oct 3 '14 <a href="apichanges.html#image.for.files">Split image handling into UI module</a> |
| <p> |
| Image handling moved to <code>masterfs.ui</code> module, AnnotationProvider |
| API changed. |
| </p> |
| </li> |
| <!--Checking date 2014-5-14 with count of newer 1--><!--year ok--> |
| <li>May 14 '14 <a href="apichanges.html#actions.for.files">Deprecating actions(Set of FileObjects)</a> |
| <p> |
| Adding <code>findExtrasFor</code> method to replace |
| direct reference to <code>javax.swing.Actions</code>. |
| See <a href="../org-netbeans-modules-masterfs-ui/org/netbeans/modules/masterfs/providers/AnnotationProvider.html" shape="rect"> |
| AnnotationProvider |
| </a> in <code>masterfs.ui</code> module. |
| </p> |
| </li> |
| <!--Checking date 2013-1-11 with count of newer 2--><!--year ok--> |
| <li>Jan 11 '13 <a href="apichanges.html#org.netbeans.io.suspend">A property to suspend native listeners</a> |
| <p> |
| A <a href="architecture-summary.html#systemproperty-org.netbeans.io.suspend" shape="rect"> |
| way</a> to temporarily suspend native listeners. |
| </p> |
| </li> |
| <!--Checking date 2012-3-2 with count of newer 3--><!--year ok--> |
| <li>Mar 2 '12 <a href="apichanges.html#fileLocked.io.exception">fileLocked method can throw <code>IOException</code></a> |
| <p> |
| Changing the <code>fileLocked</code> method to |
| throw <a href="http://download.oracle.com/javase/8/docs/api/java/io/IOException.html" shape="rect">IOException</a> is |
| source incompatible, but |
| binary compatible. As masterfs friends are always compiled at the same time as |
| masterfs, and even if they will not, they will link (as the change is binary |
| compatible), we modified the method signature to throw |
| <a href="http://download.oracle.com/javase/8/docs/api/java/io/IOException.html" shape="rect">IOException</a> |
| |
| </p> |
| </li> |
| <!--Checking date 2011-12-31 with count of newer 4--><!--year ok--> |
| <li>Dec 31 '11 <a href="apichanges.html#notifier">External change notifiers in separate modules</a> |
| <p> |
| Implementation of <em>native listeners</em> has been moved |
| to separate modules, so the masterfs itself does not depend |
| on JNA library. |
| </p> |
| </li> |
| <!--Checking date 2011-2-1 with count of newer 5--><!--Skipped as the amount of changes is too big--> |
| <!--Checking date 2010-8-27 with count of newer 6--><!--Skipped as the amount of changes is too big--> |
| <!--Checking date 2010-6-22 with count of newer 7--><!--Skipped as the amount of changes is too big--> |
| <!--Checking date 2010-5-12 with count of newer 8--><!--Skipped as the amount of changes is too big--> |
| <!--Checking date 2010-4-16 with count of newer 9--><!--Skipped as the amount of changes is too big--> |
| <!--Checking date 2008-3-20 with count of newer 10--><!--Skipped as the amount of changes is too big--> |
| <!--Checking date 2008-1-8 with count of newer 11--><!--Skipped as the amount of changes is too big--> |
| <!--Checking date 2008-1-8 with count of newer 11--><!--Skipped as the amount of changes is too big--> |
| <!--Checking date 2007-6-15 with count of newer 13--><!--Skipped as the amount of changes is too big--> |
| <!--Checking date 2007-2-12 with count of newer 14--><!--Skipped as the amount of changes is too big--> |
| <!--Checking date 2006-8-8 with count of newer 15--><!--Skipped as the amount of changes is too big--> |
| <!--Checking date 2006-4-24 with count of newer 16--><!--Skipped as the amount of changes is too big--> |
| </ul> |
| <h3>Use Cases</h3> |
| <answer id="arch-usecases"> |
| MasterFileSystem is just implementation of FileSystem. There are no special use |
| cases. FileObjects erlier returned from <code>URLMapper</code> or |
| <code>FileUtil.fromFile</code> provided by <code>LocalFileSystem</code> or |
| <code>CvsFileSystem</code> will be now provided by <code>MasterFileSystem</code>. |
| There will be guaranteed that there won't be more instances of FileObject |
| addressing one <code>java.ioFile</code>. |
| </answer> |
| <h3>Exported Interfaces</h3> |
| |
| This table lists all of the module exported APIs |
| with |
| defined stability classifications. It is generated |
| based on answers to questions about the architecture |
| of the module. <a href="architecture-summary.html">Read them all</a>... |
| |
| |
| <a name="group-java"> |
| <h5>Group of java interfaces</h5> |
| </a> |
| <table cellpadding="1" cellspacing="0" border="0" class="tablebg" width="100%"> |
| <tr> |
| <td> |
| <table border="0" cellpadding="3" cellspacing="1" width="100%"> |
| <tr class="tablersh"> |
| <td align="CENTER" width="25%"><span class="titlectable">Interface Name</span></td><td align="CENTER" width="10%"><span class="titlectable">In/Out</span></td><td align="CENTER" width="10%"><span class="titlectable">Stability</span></td><td align="CENTER"><span class="titlectable">Specified in What Document?</span></td> |
| </tr> |
| <tr class="tabler"> |
| <td>MasterFileSystemAPI</td><td>Exported</td><td><a href="http://wiki.netbeans.org/API_Stability#Friend">Friend</a></td><td><a name="java-MasterFileSystemAPI"><a href="org/netbeans/modules/masterfs/providers/package-summary.html"> |
| .../masterfs/providers/package-summary.html</a> |
| <p></p> |
| </a></td> |
| </tr> |
| </table> |
| </td> |
| </tr> |
| </table> |
| <p></p> |
| <a name="group-property"> |
| <h5>Group of property interfaces</h5> |
| </a> |
| <table cellpadding="1" cellspacing="0" border="0" class="tablebg" width="100%"> |
| <tr> |
| <td> |
| <table border="0" cellpadding="3" cellspacing="1" width="100%"> |
| <tr class="tablersh"> |
| <td align="CENTER" width="25%"><span class="titlectable">Interface Name</span></td><td align="CENTER" width="10%"><span class="titlectable">In/Out</span></td><td align="CENTER" width="10%"><span class="titlectable">Stability</span></td><td align="CENTER"><span class="titlectable">Specified in What Document?</span></td> |
| </tr> |
| <tr class="tabler"> |
| <td>refreshSlow</td><td>Exported</td><td><a href="http://wiki.netbeans.org/API_Stability#Private">Private</a></td><td><a name="property-refreshSlow"> |
| <p></p> |
| One can ask FileObject.getAttribute("refreshSlow") and obtain an instance |
| of <code>Runnable</code> with intricate behavior. This is a private contract |
| used from core.ui module to show refresh progress and tested |
| in <code>masterfs/test/unit/src/org/netbeans/modules/masterfs/SlowRefreshTest.java</code>. |
| <p></p> |
| </a></td> |
| </tr> |
| </table> |
| </td> |
| </tr> |
| </table> |
| <p></p> |
| <a name="group-systemproperty"> |
| <h5>Group of systemproperty interfaces</h5> |
| </a> |
| <table cellpadding="1" cellspacing="0" border="0" class="tablebg" width="100%"> |
| <tr> |
| <td> |
| <table border="0" cellpadding="3" cellspacing="1" width="100%"> |
| <tr class="tablersh"> |
| <td align="CENTER" width="25%"><span class="titlectable">Interface Name</span></td><td align="CENTER" width="10%"><span class="titlectable">In/Out</span></td><td align="CENTER" width="10%"><span class="titlectable">Stability</span></td><td align="CENTER"><span class="titlectable">Specified in What Document?</span></td> |
| </tr> |
| <tr class="tabler"> |
| <td>org.netbeans.modules.masterfs.watcher.disable</td><td>Exported</td><td><a href="http://wiki.netbeans.org/API_Stability#Private">Private</a></td><td><a name="systemproperty-org.netbeans.modules.masterfs.watcher.disable"> |
| <p></p> |
| It is possible to disable native listening on filesystem changes. |
| Useful mostly in testing environment, but it may be interesting for some |
| users too. Don't rely (much) on this property from production code however. |
| <p></p> |
| </a></td> |
| </tr> |
| <tr class="tabler"> |
| <td>org.netbeans.modules.masterfs.watcher.FAM</td><td>Exported</td><td><a href="http://wiki.netbeans.org/API_Stability#Private">Private</a></td><td><a name="systemproperty-org.netbeans.modules.masterfs.watcher.FAM"> |
| <p></p> |
| It is possible to enable use of FAM notifier on Solaris disabled by default. |
| Useful mostly in testing environment, but it may be interesting for some |
| users too. Don't rely (much) on this property from production code however. |
| <p></p> |
| </a></td> |
| </tr> |
| <tr class="tabler"> |
| <td>org.netbeans.modules.masterfs.case</td><td>Exported</td><td><a href="http://wiki.netbeans.org/API_Stability#Private">Private</a></td><td><a name="systemproperty-org.netbeans.modules.masterfs.case"> |
| <p></p> |
| To address problems when mixing various types of network file systems |
| (as described in bug <code>198946</code>) |
| there is a special property <code>org.netbeans.modules.masterfs.case</code> |
| that can be set to <code>sensitive</code> or <code>insensitive</code> value |
| in order to override the system default. This is intended only for end user |
| consumption, not for consumption by other parts of the system. The name and |
| meaning of this property may change in any release. |
| <p></p> |
| </a></td> |
| </tr> |
| <tr class="tabler"> |
| <td>org.netbeans.io.suspend</td><td>Exported</td><td><a href="http://wiki.netbeans.org/API_Stability#Devel">Under Development</a></td><td><a name="systemproperty-org.netbeans.io.suspend"> |
| <p></p> |
| |
| <p> |
| Native listeners check the <code>org.netbeans.io.suspend</code> property. |
| If it is set to integer greater than zero, they stop delivering file change events. |
| The list of modified directories is recorded (its size is made available |
| by setting its string value into <code>org.netbeans.io.pending</code> property), |
| but its processing is suspended. Events are delivered when |
| <code>org.netbeans.io.suspend</code> property changes its value to <code>0</code> |
| or becomes empty. |
| </p> |
| |
| <p> |
| I/O intensive operations in other NetBeans modules are advised |
| to honour the <code>org.netbeans.io.suspend</code> property as well and |
| suspend their I/O activities too. |
| </p> |
| |
| <p> |
| In order to properly communicate changes to the property between multiple |
| <em>receivers</em> and multiple <em>controllers</em> it is suggested to |
| only manipulate the value under <code>synchronized("org.netbeans.io.suspend".intern())</code> |
| lock. Those changing the value are supposed to increment it by one when they |
| request the suspend and decrement it by one when they want to resume their |
| own suspend. |
| </p> |
| |
| <p> |
| Whenever a change to the state of the property is made, |
| <em>controllers</em> are supposed to |
| <code>"org.netbeans.io.suspend".intern().notifyAll()</code>. |
| </p> |
| |
| <p></p> |
| </a></td> |
| </tr> |
| </table> |
| </td> |
| </tr> |
| </table> |
| <p></p> |
| <h3>Implementation Details</h3> |
| <h5>What do other modules need to do to declare a dependency on this one, in addition to or instead of a plain module dependency?</h5> |
| Nothing currently. Most "clients" are really callers of |
| <code>FileUtil.toFileObject</code> and so on, and thus |
| implicitly depend on the existence of this module. In the |
| future a provide-require token might make sense. |
| <p> |
| Read more about the implementation in the <a href="architecture-summary.html">answers to |
| architecture questions</a>. |
| </p></div> |
| </div> |
| <!-- ======= START OF BOTTOM NAVBAR ====== --> |
| <div class="bottomNav"><a name="navbar.bottom"> |
| <!-- --> |
| </a> |
| <div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div> |
| <a name="navbar.bottom.firstrow"> |
| <!-- --> |
| </a> |
| <ul class="navList" title="Navigation"> |
| <li class="navBarCell1Rev">Overview</li> |
| <li><a href="org/netbeans/modules/masterfs/providers/package-summary.html">Package</a></li> |
| <li>Class</li> |
| <li>Use</li> |
| <li><a href="org/netbeans/modules/masterfs/providers/package-tree.html">Tree</a></li> |
| <li><a href="deprecated-list.html">Deprecated</a></li> |
| <li><a href="index-files/index-1.html">Index</a></li> |
| <li><a href="help-doc.html">Help</a></li> |
| </ul> |
| <div class="aboutLanguage">org.netbeans.modules.masterfs/2 2.57.1 2</div> |
| </div> |
| <div class="subNav"> |
| <ul class="navList"> |
| <li>Prev</li> |
| <li>Next</li> |
| </ul> |
| <ul class="navList"> |
| <li><a href="index.html?overview-summary.html" target="_top">Frames</a></li> |
| <li><a href="overview-summary.html" target="_top">No Frames</a></li> |
| </ul> |
| <ul class="navList" id="allclasses_navbar_bottom"> |
| <li><a href="allclasses-noframe.html">All Classes</a></li> |
| </ul> |
| <div> |
| <script type="text/javascript"><!-- |
| allClassesLink = document.getElementById("allclasses_navbar_bottom"); |
| if(window==top) { |
| allClassesLink.style.display = "block"; |
| } |
| else { |
| allClassesLink.style.display = "none"; |
| } |
| //--> |
| </script> |
| </div> |
| <a name="skip.navbar.bottom"> |
| <!-- --> |
| </a></div> |
| <!-- ======== END OF BOTTOM NAVBAR ======= --> |
| <p class="legalCopy"><small><span class="footnote">Built on September 14 2018. | Copyright © 2017-2018 Apache Software Foundation. All Rights Reserved.</span></small></p> |
| </body> |
| </html> |