| <?xml version="1.0" encoding="UTF-8"?> |
| <!-- |
| |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| |
| --> |
| <!DOCTYPE apichanges PUBLIC "-//NetBeans//DTD API changes list 1.0//EN" "../../nbbuild/javadoctools/apichanges.dtd"> |
| <apichanges> |
| <apidefs> |
| <apidef name="filesystems">Filesystems API</apidef> |
| </apidefs> |
| <changes> |
| <change id="fileutil.copyattr.trasnform"> |
| <api name="filesystems"/> |
| <summary>Allow to filter or transform attribute values during copying.</summary> |
| <version major="9" minor="27"/> |
| <date day="2" month="11" year="2021"/> |
| <author login="sdedic"/> |
| <compatibility addition="yes" semantic="compatible"/> |
| <description> |
| <a href="@TOP@/org/openide/filesystems/FileUtil.html#">FileUtil.copyAttributes</a> support custom filtering or value transformations. |
| </description> |
| <class name="FileUtil" package="org.openide.filesystems"/> |
| </change> |
| <change> |
| <api name="filesystems"/> |
| <summary>Utility to check valid filenames</summary> |
| <version major="9" minor="24"/> |
| <date year="2021" month="5" day="28"/> |
| <author login="sdedic"/> |
| <compatibility addition="yes" source="compatible" semantic="compatible" binary="compatible"/> |
| <description> |
| <p> |
| An utility method <a href="@TOP@/org/openide/filesystems/FileUtil.html#isValidFileName-java.lang.String-">isValidFileName()</a> was added |
| to check for illegal characters that may vary on supported platforms/OSes. |
| </p> |
| </description> |
| </change> |
| <change id="getFileObjectNonExisting"> |
| <api name="filesystems"/> |
| <summary>getFileObject can return non-existing files</summary> |
| <version major="9" minor="23"/> |
| <date year="2021" month="3" day="5"/> |
| <author login="jtulach"/> |
| <compatibility addition="yes" source="compatible" semantic="compatible" binary="compatible"/> |
| <description> |
| <p> |
| New method |
| <a href="@TOP@/org/openide/filesystems/FileObject.html#getFileObject-java.lang.String-boolean-"><code>getFileObject(relativePath, false)</code></a> |
| in |
| <a href="@TOP@/org/openide/filesystems/FileObject.html"><code>FileObject</code></a> |
| class to return a relative object even if it doesn't exist. |
| </p> |
| </description> |
| <class name="FileObject" package="org.openide.filesystems"/> |
| </change> |
| <change id="LayerProcessorSupportedSource"> |
| <api name="filesystems"/> |
| <summary>Declare support for all source levels.</summary> |
| <version major="9" minor="17"/> |
| <date year="2019" month="10" day="18"/> |
| <author login="sdedic"/> |
| <compatibility addition="yes" source="compatible" semantic="incompatible" binary="compatible"/> |
| <description> |
| <p> |
| <a href="@TOP@/org/openide/filesystems/annotations/LayerGeneratingProcessor.html"><code>LayerGeneratingProcessor</code></a> subclasses declare some |
| <a href="@JDK@/javax/lang/model/SourceVersion.html"><code>SourceVersion</code></a> support, |
| but as new JDKs are released, the declaration becomes obsolete and produces spurious warnings. The processors |
| are typically not affected by newer Java language features. |
| </p> |
| <p> |
| This change changes the default behaviour if NO |
| <a href="@JDK@/javax/annotation/processing/SupportedSourceVersion.html"><code>@SupportedSourceVersion</code></a> |
| annotation is present on subclass. From 8.40, the Processor will report |
| <a href="@JDK@/javax/lang/model/SourceVersion.html#latest--"><code>@SourceVersion.latest()</code></a>. |
| </p> |
| </description> |
| <class name="LayerGeneratingProcessor" package="org.openide.filesystems.annotations"/> |
| <issue number="NETBEANS-3250"/> |
| </change> |
| <change id="ArchiveRootProvider"> |
| <api name="filesystems"/> |
| <summary>Pluggable archive files support for FileUtil</summary> |
| <version major="9" minor="10"/> |
| <date year="2015" month="5" day="28"/> |
| <author login="tzezula"/> |
| <compatibility addition="yes" semantic="compatible" binary="compatible"/> |
| <description> |
| To support JDK 9 image file as an archive the FileUtil's method |
| <code>getArchiveFile</code>,<code>getArchiveRoot</code> and <code>isArchiveFile</code> |
| are pluggable using a new SPI <code>ArchiveFileProvider</code>. |
| In addition to these methods a new method <code>isArchiveArtifact</code> was added. |
| This method can be used if given <code>URL</code> points into an archive. |
| </description> |
| <class name="FileUtil" package="org.openide.filesystems"/> |
| <class name="ArchiveRootProvider" package="org.openide.filesystems.spi"/> |
| |
| </change> |
| <change id="repository.multiuser"> |
| <api name="filesystems"/> |
| <summary>Support for multi-user environments</summary> |
| <version major="9" minor="5"/> |
| <date year="2015" month="2" day="25"/> |
| <author login="sdedic"/> |
| <compatibility addition="yes" modification="yes" semantic="compatible" binary="compatible"/> |
| <description> |
| To support multiple configurations (users, profiles, ...) executing in the same VM, multiple |
| Repositories can be created, one for each execution context. API has been added to acquire |
| and SPI to create a local Repository which holds config filesystem for the execution thraed. |
| </description> |
| <class name="Repository" package="org.openide.filesystems"/> |
| </change> |
| <change id="FileObject.symbolicLinks"> |
| <api name="filesystems"/> |
| <summary>Support detection and reading of symbolic links.</summary> |
| <version major="9" minor="4"/> |
| <date year="2014" month="11" day="27"/> |
| <author login="jhavlin"/> |
| <compatibility addition="yes"/> |
| <description> |
| <p> |
| Add methods to <code>FileObject</code> for handling of |
| symbolic links: |
| </p> |
| <ul> |
| <li><code>isSymbolicLink()</code></li> |
| <li><code>readSymbolicLink()</code></li> |
| <li><code>readSymbolicLinkPath()</code></li> |
| <li><code>getCanonicalFileObject()</code></li> |
| </ul> |
| <p> |
| Add utility method to <code>FileUtil</code> for dealing with |
| recursive symbolic links. |
| </p> |
| <ul> |
| <li><code>isRecursiveSymbolicLink()</code></li> |
| </ul> |
| <p> |
| Introduce new interface <a href="@TOP@org/openide/filesystems/AbstractFileSystem.SymlinkInfo.html">AbstractFileSystem.SymlinkInfo</a>. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="FileObject"/> |
| <class package="org.openide.filesystems" name="FileUtil"/> |
| <class package="org.openide.filesystems" name="AbstractFileSystem"/> |
| <issue number="237882"/> |
| </change> |
| <change id="FileLock.closeable"> |
| <api name="filesystems"/> |
| <summary>FileLock implements AutoCloseable</summary> |
| <version major="9" minor="3"/> |
| <date year="2014" month="11" day="10"/> |
| <author login="sdedic"/> |
| <compatibility addition="yes" deletion="no" deprecation="no" source="compatible" binary="compatible"/> |
| <description> |
| <p> |
| <a href="@TOP@org/openide/filesystems/FileLock.html">FileLock</a> |
| implements AutoCloseable to work well in try-with-resources constructs. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="FileLock"/> |
| <issue number="247915"/> |
| </change> |
| <change id="FileSystemStatus.icons2"> |
| <api name="filesystems"/> |
| <summary>FileSystem.Status API removed</summary> |
| <version major="9" minor="1"/> |
| <date year="2014" month="10" day="3"/> |
| <author login="sdedic"/> |
| <compatibility modification="yes" deletion="yes" addition="yes" binary="compatible" source="compatible" semantic="incompatible"/> |
| <description> |
| <p> |
| The FileSystem.Status was entirely removed, as it references class java.awt.Image, which |
| is not available in compact jdk profiles and may trigger GUI system initialization. See |
| javadocs of <a href="@TOP@org/openide/filesystems/StatusDecorator.html">StatusDecorator</a> |
| for details. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="StatusDecorator"/> |
| <issue number="247200"/> |
| </change> |
| <change id="FileSystemStatus.icons"> |
| <api name="filesystems"/> |
| <summary>FileSystem.Status icon annotation moved</summary> |
| <version major="9" minor="0"/> |
| <date year="2014" month="4" day="11"/> |
| <author login="sdedic"/> |
| <compatibility modification="yes" addition="yes" binary="compatible" source="compatible" semantic="incompatible"/> |
| <description> |
| <p> |
| The default implementation of FileSystem.Status annotated file's icon using ImageUtilities |
| which uses AWT graphics etc. Such dependency is not desirable in a standalone FileSystem API |
| library. |
| </p> |
| <p> |
| The builtin implementation now does not work with the icon at all and returns null. A proper |
| implementation for FileSystem.Status is looked up in default Lookup and is implemented |
| properly (with Icon annotations) in <code>openide.filesystems.nb</code> module. |
| </p> |
| </description> |
| <issue number="243561"/> |
| </change> |
| <change id="getActionsDeprecated"> |
| <api name="filesystems"/> |
| <summary>Deprecating FileSystem.getActions</summary> |
| <version major="8" minor="12"/> |
| <date year="2014" month="5" day="14"/> |
| <author login="jtulach"/> |
| <compatibility addition="yes"/> |
| <description> |
| <p> |
| Deprecating <code>getActions</code> method in preparation |
| of splitting filesystems API into UI (e.g. depending |
| on Swing) and non-UI part (that can run on JDK8 compact |
| profile). Introducing general replacement |
| <a href="@TOP@org/openide/filesystems/FileSystem.html#findExtrasFor-java.util.Set-">findExtrasFor</a> |
| instead... |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="FileSystem"/> |
| <class package="org.openide.filesystems" name="AbstractFileSystem"/> |
| <class package="org.openide.filesystems" name="MultiFileSystem"/> |
| <issue number="243265"/> |
| </change> |
| <change id="MultiFileObject.revealEntriesAttribute"> |
| <api name="filesystems"/> |
| <summary>Allowed to reveal deleted files, or original files overriden by writable layer</summary> |
| <version major="8" minor="5"/> |
| <date year="2012" month="11" day="23"/> |
| <author login="sdedic"/> |
| <compatibility addition="yes"/> |
| <description> |
| <p> |
| Files which have been deleted can be obtained by <code>folder.getAttribute("revealEntries")</code>. |
| See <a href="@TOP@org/openide/filesystems/MultiFileSystem.html">MultiFileSystem |
| </a> javadoc for details |
| </p> |
| <p> |
| <b>Warning:</b> stability of this feature is <b>development</b> |
| </p> |
| </description> |
| <!--<class package="org.openide.filesystems" name="MultiFileObject"/>--> |
| </change> |
| <change id="FileChooserBuilder-setAcceptAllFileFilterUsed"> |
| <api name="filesystems"/> |
| <summary>New method FileChooserBuilder.setAcceptAllFileFilterUsed.</summary> |
| <version major="8" minor="3"/> |
| <date year="2012" month="10" day="30"/> |
| <author login="tmysik"/> |
| <compatibility addition="yes" deprecation="no"/> |
| <description> |
| <p> |
| Added <a href="@org-openide-filesystems-nb@/org/openide/filesystems/FileChooserBuilder.html#setAcceptAllFileFilterUsed-boolean-"> |
| new method</a> to <code>FileChooserBuilder</code> that determines whether the <code>AcceptAll FileFilter</code> |
| should be used in the created file chooser. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="FileChooserBuilder" link="no"/> |
| <issue number="220401"/> |
| </change> |
| <change id="FileChooserBuilder-addDefaultFileFilters"> |
| <api name="filesystems"/> |
| <summary>New method FileChooserBuilder.addDefaultFileFilters and accompanying annotations.</summary> |
| <version major="8" minor="1"/> |
| <date year="2012" month="8" day="29"/> |
| <author login="jhavlin"/> |
| <compatibility addition="yes" deprecation="no"/> |
| <description> |
| <p> |
| Added <a href="@org-openide-filesystems-nb@/org/openide/filesystems/FileChooserBuilder.html#addDefaultFileFilters--"> |
| new method</a> to <code>FileChooserBuilder</code> that adds all default |
| <code>FileFilter</code>s to created file chooser. |
| </p> |
| <p> |
| Default filters are registered using new parameters in annotations |
| <a href="@TOP@org/openide/filesystems/MIMEResolver.Registration.html#showInFileChooser--">MimeResolver.Registration</a> |
| and <a href="@TOP@org/openide/filesystems/MIMEResolver.ExtensionRegistration.html#showInFileChooser--">MimeResolver.ExtensionRegistration</a>. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="FileChooserBuilder" link="no"/> |
| <class package="org.openide.filesystems" name="MIMEResolver"/> |
| <issue number="209998"/> |
| </change> |
| <change id="fileobject-lookup"> |
| <api name="filesystems"/> |
| <summary>FileObject has getLookup()</summary> |
| <version major="8" minor="0"/> |
| <date year="2012" month="8" day="22"/> |
| <author login="jtulach"/> |
| <compatibility addition="yes" deprecation="no"/> |
| <description> |
| <p> |
| <code>FileObject</code> now implements <code>Lookup.Provider</code> |
| and thus has new |
| <a href="@TOP@org/openide/filesystems/FileObject.html#getLookup--"> |
| getLookup</a>() method. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="FileObject"/> |
| <issue number="209231"/> |
| </change> |
| <change id="recursive-listener-with-filter"> |
| <api name="filesystems"/> |
| <summary>addRecursiveListener with a filter</summary> |
| <version major="7" minor="61"/> |
| <date year="2012" month="4" day="11"/> |
| <author login="jtulach"/> |
| <compatibility addition="yes" deprecation="no"/> |
| <description> |
| <p> |
| Added <a href="@TOP@org/openide/filesystems/FileUtil.html#addRecursiveListener-org.openide.filesystems.FileChangeListener-java.io.File-java.io.FileFilter-java.util.concurrent.Callable-"> |
| new method</a> variant to register recursive listener |
| and control whether to recurse into a subtree or not via |
| <code>FileFilter</code>. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="FileUtil"/> |
| <issue number="207189"/> |
| </change> |
| <change id="FileSystem.createTemporaryFO"> |
| <api name="filesystems"/> |
| <summary>File System can create temporary file</summary> |
| <version major="7" minor="60"/> |
| <date year="2012" month="2" day="20"/> |
| <author login="alexvsimon"/> |
| <compatibility addition="yes" deprecation="no"/> |
| <description> |
| <p> |
| Added methods to create temporary file objects: |
| <code>FileSystem.getTempFolder</code>, <code>FileSystem.createTempFile</code>. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="FileSystem"/> |
| <issue number="207659"/> |
| </change> |
| <change id="LayersProvider"> |
| <api name="filesystems"/> |
| <summary>SPI for Additions to System File System</summary> |
| <version major="7" minor="59"/> |
| <date year="2012" month="2" day="3"/> |
| <author login="jtulach"/> |
| <compatibility addition="yes" deprecation="yes"/> |
| <description> |
| <p> |
| Those who wish to influence content of |
| <a href="@TOP@/org/openide/filesystems/FileUtil.html#getConfigRoot--"> |
| configuration file system</a> have an easier |
| <a href="@TOP@/org/openide/filesystems/Repository.LayerProvider.html"> |
| way</a> now. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="Repository"/> |
| <issue number="198508"/> |
| </change> |
| <change id="MIMEResolver.Registrations"> |
| <api name="filesystems"/> |
| <summary>Annotations to declare MIME type</summary> |
| <version major="7" minor="58"/> |
| <date year="2012" month="2" day="2"/> |
| <author login="jtulach"/> |
| <compatibility addition="yes" deprecation="yes"/> |
| <description> |
| <p> |
| There are new annotations to register mime type. One |
| can either use simpler ones based on |
| <a href="@TOP@/org/openide/filesystems/MIMEResolver.ExtensionRegistration.html"> |
| extension</a> or |
| <a href="@TOP@/org/openide/filesystems/MIMEResolver.NamespaceRegistration.html"> |
| XML namespace</a>. In case these registration are not |
| powerful enough one can use the original and flexible |
| <a href="@TOP@/org/openide/filesystems/MIMEResolver.Registration.html"> |
| XML file based registration</a> which is however processed |
| during compile time to avoid needless XML parsing on each |
| start. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="MIMEResolver"/> |
| <issue number="191777"/> |
| </change> |
| <change id="FileObject.toURI"> |
| <api name="filesystems"/> |
| <summary>Introduced <code>FileObject.toURI</code></summary> |
| <version major="7" minor="57"/> |
| <date year="2012" month="1" day="20"/> |
| <author login="jglick"/> |
| <compatibility addition="yes" deprecation="yes"> |
| <p> |
| <code>FileObject.getURL</code> should be replaced with <code>toURL</code> (or <code>toURI</code>), |
| which also throw no checked exceptions. |
| </p> |
| </compatibility> |
| <description> |
| <p> |
| Added <code>FileObject.toURI</code> for convenience. |
| </p> |
| <p> |
| Also deprecated <code>FileObject.getURL</code> in favor of <code>toURL</code> |
| which is the same but does not throw <code>FileStateInvalidException</code>, |
| and clarified that <code>URLMapper.findURL(fo, INTERNAL)</code> |
| will never return null. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="FileObject"/> |
| <issue number="207294"/> |
| </change> |
| <change id="default-line-separator"> |
| <api name="filesystems"/> |
| <summary>Provides default line separator</summary> |
| <version major="7" minor="56"/> |
| <date day="13" month="1" year="2012"/> |
| <author login="alexvsimon"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| <p> |
| FileObject.DEFAULT_LINE_SEPARATOR_ATTR defines file object attribute name to get default line separator. |
| File object can provide default line separator if it differs from |
| <code>System.getProperty("line.separator")</code>. Call |
| <code>fo.getAttribute(FileObject.DEFAULT_LINE_SEPARATOR_ATTR)</code> returns string with |
| default line separator. Default line separator will be used by the text |
| editor if saving new content to an initially empty file. Any other code |
| which creates file content programmatically must manually read this |
| property if it cares. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="FileObject"/> |
| <issue number="199534"/> |
| </change> |
| <change id="FileObject.revert"> |
| <api name="filesystems"/> |
| <summary>Introduced <code>FileObject.revert</code></summary> |
| <version major="7" minor="55"/> |
| <date year="2011" month="11" day="29"/> |
| <author login="jglick"/> |
| <compatibility addition="yes"> |
| <p> |
| The previous SPI has been kept. Only a more convenient API has been introduced, |
| so it is no longer necessary for callers to look for a <code>removeWritables</code> attribute. |
| </p> |
| </compatibility> |
| <description> |
| <p> |
| Added <code>revert</code> and <code>canRevert</code> to <code>FileObject</code>. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="FileObject"/> |
| <issue number="162526"/> |
| </change> |
| <change id="FileEvent.4.constructor"> |
| <api name="filesystems"/> |
| <summary>Detailed FileEvent constructor</summary> |
| <version major="7" minor="54"/> |
| <date day="22" month="11" year="2011"/> |
| <author login="jtulach"/> |
| <compatibility addition="yes"/> |
| <description> |
| <p>New <code>FileEvent</code> constructor allowing specification |
| of expected state as well as time. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="FileEvent"/> |
| <issue number="203477"/> |
| </change> |
| <change id="FileObject.getMIMEType..."> |
| <api name="filesystems"/> |
| <summary>FileObject.getMIMEType(String... withinMIMETypes)</summary> |
| <version major="7" minor="52"/> |
| <date day="5" month="8" year="2011"/> |
| <author login="jtulach"/> |
| <compatibility addition="yes"/> |
| <description> |
| <p> |
| Introducing <a href="@TOP@/org/openide/filesystems/FileObject.html#getMIMEType-java.lang.String...-"> |
| FileObject.getMIMEType(String...) |
| </a> that can be overriden by different implementations |
| of file system API. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="FileObject"/> |
| <issue number="199642"/> |
| </change> |
| <change id="validateResource_196452"> |
| <api name="filesystems"/> |
| <summary><code>LayerBuilder</code> can validate resources</summary> |
| <version major="7" minor="51"/> |
| <date day="25" month="7" year="2011"/> |
| <author login="jglick"/> |
| <compatibility addition="yes"/> |
| <description> |
| <p> |
| <code>LayerBuilder</code> has a new <code>validateResource</code> method. |
| <code>absolutizeResource</code> was also added. |
| </p> |
| </description> |
| <class package="org.openide.filesystems.annotations" name="LayerBuilder"/> |
| <issue number="196452"/> |
| </change> |
| <change id="LayerGenerationException_194545"> |
| <api name="filesystems"/> |
| <summary><code>LayerGenerationException</code> has new constructors</summary> |
| <version major="7" minor="50"/> |
| <date day="25" month="7" year="2011"/> |
| <author login="jglick"/> |
| <compatibility addition="yes"> |
| <p> |
| Code using the constructors not specifying an annotation should now do so. |
| </p> |
| </compatibility> |
| <description> |
| <p> |
| <code>LayerGenerationException</code> has new constructors making it easier to specify |
| the particular annotation responsible for a problem. |
| Some methods in <code>LayerBuilder</code> have new overloads to take advantage of it. |
| </p> |
| </description> |
| <class package="org.openide.filesystems.annotations" name="LayerGenerationException"/> |
| <class package="org.openide.filesystems.annotations" name="LayerBuilder"/> |
| <issue number="194545"/> |
| </change> |
| <change id="getConfigObject"> |
| <api name="filesystems"/> |
| <summary>FileUtil.getConfigObject</summary> |
| <version major="7" minor="49"/> |
| <date day="25" month="6" year="2011"/> |
| <author login="jtulach"/> |
| <compatibility addition="yes"/> |
| <description> |
| <p> |
| One can convert files in SystemFileSystem to Object with |
| a |
| <a href="@TOP@org/openide/filesystems/FileUtil.html#getConfigObject-java.lang.String-java.lang.Class-"> |
| single utility method</a>. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="FileUtil"/> |
| <issue number="169338"/> |
| </change> |
| <change id="to.parent"> |
| <api name="filesystems"/> |
| <summary>FileObject.getFileObject accepts ".."</summary> |
| <version major="7" minor="45"/> |
| <date day="27" month="1" year="2011"/> |
| <author login="jtulach"/> |
| <compatibility addition="yes"/> |
| <description> |
| <p> |
| Semantic of |
| <a href="@TOP@/org/openide/filesystems/FileObject.html#getFileObject-java.lang.String-"> |
| getFileObject |
| </a> method has been clarified to accept "..". |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="FileObject"/> |
| <issue number="194418"/> |
| </change> |
| <change id="attribute.methodvalue"> |
| <api name="filesystems"/> |
| <summary>setAttribute("methodvalue:attrname", method) and "newvalue:"</summary> |
| <version major="7" minor="43"/> |
| <date day="24" month="11" year="2010"/> |
| <author login="jtulach"/> |
| <compatibility addition="yes"/> |
| <description> |
| <p> |
| You can use prefix <code>"methodvalue:"</code> to |
| <a href="@TOP@/org/openide/filesystems/FileObject.html#setAttribute-java.lang.String-java.lang.Object-"> |
| setAttribute |
| </a> |
| with type of <a href="@JDK@/java/lang/reflect/Method.html">Method</a>. |
| When the attribute is queried (without the prefix), the |
| method is called as is common in |
| <a href="@TOP@/org/openide/filesystems/XMLFileSystem.html">XMLFileSystem</a> |
| attributes. You can also use <code>newvalue:</code> prefix |
| for attribute of type |
| <a href="@JDK@/java/lang/Class.html">Class</a>. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="FileUtil"/> |
| <class package="org.openide.filesystems" name="FileObject"/> |
| <issue number="120724"/> |
| </change> |
| <change id="private-constructor"> |
| <api name="filesystems"/> |
| <summary>XMLFileSystem's newvalue can create private instances</summary> |
| <version major="7" minor="43"/> |
| <date day="25" month="10" year="2010"/> |
| <author login="jtulach"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| <p> |
| If the class referenced from <code>newvalue</code> |
| <a href="@TOP@/org/openide/filesystems/XMLFileSystem.html">XMLFileSystem</a> |
| attribute is not public, it is made accessible for reflection. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="XMLFileSystem"/> |
| <issue number="141698"/> |
| </change> |
| <change id="createAndOpen"> |
| <api name="filesystems"/> |
| <summary>FileObject.createAndOpen</summary> |
| <version major="7" minor="41"/> |
| <date day="10" month="9" year="2010"/> |
| <author login="jtulach"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| <p> |
| Create a file and write its content (almost) atomically using the new |
| <a href="@TOP@/org/openide/filesystems/FileObject.html#createAndOpen-java.lang.String-">FileObject.createAndOpen</a> |
| method. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="FileObject"/> |
| <issue number="40739"/> |
| </change> |
| <change id="addRecursiveListenerStop"> |
| <api name="filesystems"/> |
| <summary>Interruptable addRecursiveListener</summary> |
| <version major="7" minor="37"/> |
| <date day="17" month="2" year="2010"/> |
| <author login="jtulach"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| <p> |
| New variant of <code>addRecursiveListener</code> method |
| that allows the caller to control the process enumerating |
| files in subtree and stop it. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="FileUtil"/> |
| <issue number="180523"/> |
| </change> |
| <change id="MultiFileSystem.weight"> |
| <api name="filesystems"/> |
| <summary>Ability to specify "weight" for <code>MultiFileSystem</code> overrides</summary> |
| <version major="7" minor="36"/> |
| <date day="1" month="3" year="2010"/> |
| <author login="jglick"/> |
| <compatibility semantic="compatible"> |
| <p> |
| Modules need no longer declare runtime-only dependencies |
| on other modules merely to override their layer entries. |
| Instead, they should specify a higher weight. |
| (Normally the base module will declare no weight, so any |
| positive number will do.) |
| </p> |
| </compatibility> |
| <description> |
| <p> |
| <code>MultiFileSystem</code>s will now interpret a special |
| file attribute <code>weight</code> to determine how to |
| resolve otherwise ambiguous overrides. For example, in the |
| system filesystem, module XML layers can use this attribute. |
| Suppose a generic infrastructure module declares: |
| </p> |
| <pre> |
| <filesystem> |
| <folder name="my-snippets"> |
| <file name="common.xml" url="generic-snippet.xml"/> |
| </folder> |
| </filesystem> |
| </pre> |
| <p> |
| If another module wishes to override this declaration, it |
| can do so by specifying: |
| </p> |
| <pre> |
| <filesystem> |
| <folder name="my-snippets"> |
| <file name="common.xml" url="special-snippet.xml"> |
| <attr name="weight" intvalue="100"/> |
| </file> |
| </folder> |
| </filesystem> |
| </pre> |
| <p> |
| This override will work even if the module system happens |
| to load the specializing module <em>before</em> the infrastructure |
| module (as could happen if there is no module dependency |
| between them). The weight attribute also makes it clear that |
| something is being overridden. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="MultiFileSystem"/> |
| <issue number="141925"/> |
| </change> |
| <change id="JarFileSystem-constructor-file"> |
| <api name="filesystems"/> |
| <summary>Effective constructor for JarFileSystem</summary> |
| <version major="7" minor="35"/> |
| <date day="26" month="1" year="2010"/> |
| <author login="jtulach"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| <p> |
| New constructor for <code>JarFileSystem</code> |
| that initializes everything without opening the underlaying |
| JAR file. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="JarFileSystem"/> |
| <issue number="177461"/> |
| </change> |
| <change id="MIMEResolverImpl"> |
| <api name="filesystems"/> |
| <summary>Access methods added to <code>MIMEResolver.UIHelpers</code></summary> |
| <version major="7" minor="34"/> |
| <date day="8" month="1" year="2010"/> |
| <author login="jglick"/> |
| <compatibility addition="yes"/> |
| <description> |
| <p> |
| Several internal methods were added to nested class |
| of <code>MIMEResolver</code> - <code>UIHelpers</code> |
| for use from other parts of the NetBeans Platform. Use from |
| other modules is not supported. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="MIMEResolver"/> |
| <issue number="179289"/> |
| </change> |
| <change id="recursive-listener"> |
| <api name="filesystems"/> |
| <summary>Support for recursive listeners</summary> |
| <version major="7" minor="28"/> |
| <date day="18" month="9" year="2009"/> |
| <author login="jtulach"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| <p> |
| One can register a recursive listener on a file object by |
| calling |
| <a href="@TOP@/org/openide/filesystems/FileObject.html#addRecursiveListener-org.openide.filesystems.FileChangeListener-">FileObject.addRecursiveListener(FileChangeListener)</a>. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="FileObject"/> |
| <class package="org.openide.filesystems" name="FileUtil"/> |
| <issue number="170862"/> |
| </change> |
| <change id="LayerBuilder.instanceFile"> |
| <api name="filesystems"/> |
| <summary>Non-initializing <code>LayerBuilder.instanceFile</code> added</summary> |
| <version major="7" minor="27"/> |
| <date day="14" month="9" year="2009"/> |
| <author login="jglick"/> |
| <compatibility addition="yes"/> |
| <description> |
| <p> |
| New overload of <code>instanceFile</code> makes it easier to create |
| instances for use with lazy factories. |
| </p> |
| </description> |
| <class package="org.openide.filesystems.annotations" name="LayerBuilder"/> |
| <issue number="171284"/> |
| </change> |
| <change id="LayerBuilder.folder"> |
| <api name="filesystems"/> |
| <summary><code>LayerBuilder.folder</code> added</summary> |
| <version major="7" minor="26"/> |
| <date day="10" month="9" year="2009"/> |
| <author login="jglick"/> |
| <compatibility addition="yes"/> |
| <description> |
| <p> |
| Now possible to create empty folders from layer-generating processors. |
| </p> |
| </description> |
| <class package="org.openide.filesystems.annotations" name="LayerBuilder"/> |
| <issue number="171029"/> |
| </change> |
| <change id="Repository.defaultFileSystem.status"> |
| <api name="filesystems"/> |
| <summary>System filesystem label/icon annotations work without full module system</summary> |
| <version major="7" minor="25"/> |
| <date day="31" month="8" year="2009"/> |
| <author login="jglick"/> |
| <compatibility modification="yes"> |
| <p> |
| An application or unit test installing a custom system filesystem |
| and <em>not</em> overriding <code>getStatus</code> but <em>expecting</em> |
| the default implementation to do nothing could be broken. |
| </p> |
| </compatibility> |
| <description> |
| <p> |
| For convenience from unit tests, the system filesystem will now always |
| process annotations such as <code>displayName</code> in its <code>FileSystem.Status</code>. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="FileSystem"/> |
| <issue number="171092"/> |
| </change> |
| <change id="runWhenDeliveryOver"> |
| <api name="filesystems"/> |
| <summary>Support for processing batch events</summary> |
| <version major="7" minor="24"/> |
| <date day="25" month="8" year="2009"/> |
| <author login="jtulach"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| <p> |
| <a href="org/openide/filesystems/FileEvent.html#runWhenDeliveryOver-java.lang.Runnable-"> |
| FileEvent.runWhenDeliveryOver(Runnable)</a> method added to support |
| easier processing of <em>batch</em> sets of events. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="FileEvent"/> |
| <issue number="170544"/> |
| </change> |
| <change id="add-fallback-content-to-sfs"> |
| <api name="filesystems"/> |
| <summary>Allow modules to provide fallback layer content</summary> |
| <version major="7" minor="23"/> |
| <date day="12" month="8" year="2009"/> |
| <author login="jtulach"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| <p> |
| One can provide <q>fallback</q> |
| <a href="@TOP@/architecture-summary.html#answer-arch-usecases">content of system filesystem</a> by |
| returning <code>Boolean.TRUE</code> from call |
| to <code>fs.getRoot().getAttribute("fallback")</code>. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="Repository"/> |
| <issue number="169892"/> |
| </change> |
| <change id="FileObject.asText"> |
| <api name="filesystems"/> |
| <summary>Read files with asText(), asBytes() and asLines()</summary> |
| <version major="7" minor="21"/> |
| <date day="3" month="2" year="2009"/> |
| <author login="jtulach"/> |
| <compatibility addition="yes"/> |
| <description> |
| <p> |
| Added <a href="@TOP@/org/openide/filesystems/FileObject.html#asBytes--"> |
| asBytes()</a>, |
| <a href="@TOP@/org/openide/filesystems/FileObject.html#asText-java.lang.String-"> |
| asText(encoding)</a>, |
| and <a href="@TOP@/org/openide/filesystems/FileObject.html#asLines-java.lang.String-"> |
| asLines(encoding)</a> methods into |
| <a href="@TOP@/org/openide/filesystems/FileObject.html">FileObject</a> |
| to simplify reading of its content. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="FileObject"/> |
| </change> |
| <change id="FileUtil.addFileChangeListener2"> |
| <api name="filesystems"/> |
| <summary>Possibility to add FileChangeListeners on File (even not existing)</summary> |
| <version major="7" minor="20"/> |
| <date day="14" month="1" year="2009"/> |
| <author login="jskrivanek"/> |
| <compatibility addition="yes"/> |
| <description> |
| <p> |
| Added <a href="@TOP@/org/openide/filesystems/FileUtil.html#addFileChangeListener-org.openide.filesystems.FileChangeListener-java.io.File-"> |
| FileUtil.addFileChangeListener(FileChangeListener listener, File path)</a> |
| and <a href="@TOP@/org/openide/filesystems/FileUtil.html#removeFileChangeListener-org.openide.filesystems.FileChangeListener-java.io.File-"> |
| FileUtil.addFileChangeListener(FileChangeListener listener, File path)</a>. |
| It permits you to listen to a file which does not yet exist, |
| or continue listening to it after it is deleted and recreated, etc. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="FileUtil"/> |
| <issue number="33162"/> |
| </change> |
| <change id="FileUtil.getConfigFile"> |
| <api name="filesystems"/> |
| <summary>Added FileUtil.getConfigFile and getConfigRoot for simpler access to default filesystem</summary> |
| <version major="7" minor="19"/> |
| <date day="12" month="1" year="2009"/> |
| <author login="jskrivanek"/> |
| <compatibility addition="yes"/> |
| <description> |
| <p> |
| Rather than having to call |
| <code>Repository.getDefault().getDefaultFileSystem().getRoot().getFileObject("foo/bar")</code>, |
| you can simply call |
| <a href="@TOP@/org/openide/filesystems/FileUtil.html#getConfigFile-java.lang.String-">FileUtil.getConfigFile("foo/bar")</a>. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="FileUtil"/> |
| <issue number="91534"/> |
| </change> |
| <change id="FileUtil.setMIMEType"> |
| <api name="filesystems"/> |
| <summary>Persisted registration of file extension to MIME type</summary> |
| <version major="7" minor="18"/> |
| <date day="19" month="12" year="2008"/> |
| <author login="jskrivanek"/> |
| <compatibility addition="yes" modification="yes"/> |
| <description> |
| <p> |
| Method <a href="@TOP@/org/openide/filesystems/FileUtil.html#setMIMEType-java.lang.String-java.lang.String-"> |
| FileUtil.setMIMEType(String extension, String mimeType)</a> |
| resurrected to register file extension for specified MIME type. |
| It is persisted in userdir contrary to previous implementation. |
| Added method <a href="@TOP@/org/openide/filesystems/FileUtil.html#getMIMETypeExtensions-java.lang.String-"> |
| FileUtil.getMIMETypeExtensions(String mimeType)</a> |
| to get list of file extensions associated with specified MIME type. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="FileUtil"/> |
| <issue number="153202"/> |
| </change> |
| <change id="FileChooserBuilder"> |
| <api name="filesystems"/> |
| <summary>FileChooserBuilder added</summary> |
| <version major="7" minor="17"/> |
| <date day="1" month="12" year="2008"/> |
| <author login="tboudreau"/> |
| <compatibility addition="yes"> |
| <p> |
| Added org.openide.filesystems.FileChooserBuilder to API. |
| </p> |
| </compatibility> |
| <description> |
| <p> |
| Added FileChooserBuilder, a utility class for working with |
| JFileChoosers. In particular, FileChooserBuilder makes it |
| easy to create file chooser dialogs which remember what |
| directory the user last invoked them on, across sessions. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="FileChooserBuilder" link="no"/> |
| <issue number="47737"/> |
| </change> |
| <change id="DeclarativeMIMEResolvers"> |
| <api name="filesystems"/> |
| <summary>Added new elements to MIME resolver DTD</summary> |
| <version major="7" minor="16"/> |
| <date day="18" month="11" year="2008"/> |
| <author login="jskrivanek"/> |
| <compatibility addition="yes"/> |
| <description> |
| <p> |
| It is now possible to write declarive MIME resolvers checking |
| file names (element name) and file content (element pattern). |
| </p> |
| </description> |
| <issue number="142760"/> |
| </change> |
| <change id="LayerGeneratingProcessor"> |
| <api name="filesystems"/> |
| <summary>Support for annotation processors generating XML layer fragments</summary> |
| <version major="7" minor="15"/> |
| <date day="1" month="11" year="2008"/> |
| <author login="jglick"/> |
| <compatibility addition="yes"> |
| <p> |
| Any code which scans modules for XML layers should now interpret not only |
| the <code>OpenIDE-Module-Layer</code> manifest attribute (if present), |
| but also use the resource <code>META-INF/generated-layer.xml</code> if present. |
| </p> |
| </compatibility> |
| <description> |
| <p> |
| It is now possible to write JSR 269-compliant annotation processors |
| which create XML layer (i.e. system filesystem) entries. |
| </p> |
| </description> |
| <class package="org.openide.filesystems.annotations" name="LayerGeneratingProcessor"/> |
| <class package="org.openide.filesystems.annotations" name="LayerBuilder"/> |
| <class package="org.openide.filesystems.annotations" name="LayerGenerationException"/> |
| <issue number="149136"/> |
| </change> |
| <change id="FileUtil.getMIMEType.withinMIMETypes"> |
| <api name="filesystems"/> |
| <summary>FileUtil.getMIMEType() can be restricted by listed MIME types</summary> |
| <version major="7" minor="13"/> |
| <date day="3" month="9" year="2008"/> |
| <author login="jskrivanek"/> |
| <compatibility addition="yes"> |
| <p> |
| If you have a <code>MIMEResolver</code> subclass, be sure to use the new super constructor. |
| </p> |
| </compatibility> |
| <description> |
| <p> |
| To speed up MIME type recognition it is added an extra parameter |
| to method <a href="@TOP@/org/openide/filesystems/FileUtil.html#getMIMEType-org.openide.filesystems.FileObject-java.lang.String...-">FileUtil.getMIMEType(FileObject, String...)</a>. |
| We can supply one or more MIME types which we are only interested in. |
| Module writers have to override |
| <a href="@TOP@/org/openide/filesystems/MIMEResolver.html">MIMEResolver</a> |
| default constructor and call <code>super(String...)</code>, e.g.: |
| </p> |
| <pre> |
| public MyResolver() { |
| super("text/plain", "text/sh"); |
| } |
| </pre> |
| </description> |
| <class package="org.openide.filesystems" name="FileUtil"/> |
| <class package="org.openide.filesystems" name="MIMEResolver"/> |
| <issue number="137734"/> |
| </change> |
| <change id="getAttribute.class"> |
| <api name="filesystems"/> |
| <summary>XMLFileSystem attributes can be queried for instance class</summary> |
| <version major="7" minor="12"/> |
| <date day="25" month="8" year="2008"/> |
| <author login="jskrivanek"/> |
| <compatibility addition="yes"/> |
| <description> |
| <p> |
| If you are interested just in the Class of an attribute, but |
| without creating its instance, use <code>fileObject.getAttribute("class:attrName")</code>. |
| This instructs the <a href="@TOP@/org/openide/filesystems/XMLFileSystem.html">XMLFileSystem</a> |
| to scan its XML files for definition of <code>attrName</code> |
| attribute and <i>guess</i> its class. The <i>guessing</i> is |
| usually easy, just for <code>methodvalue</code> types, the system |
| needs to use some kind of heuristic: it locates the |
| appropriate factory method and returns its return type. This may |
| not be the actual type of the returned object at the end, but |
| it seems as the best guess without instantiating it. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="XMLFileSystem"/> |
| <issue number="131951"/> |
| </change> |
| <change id="testable-declarative-resolvers"> |
| <api name="filesystems"/> |
| <summary>Declarative MIME resolvers now available in standalone mode</summary> |
| <version major="7" minor="11"/> |
| <date day="10" month="7" year="2008"/> |
| <author login="jglick"/> |
| <compatibility semantic="incompatible"> |
| <ul> |
| <li> |
| <p> |
| The old impl would have interpreted a resolver (with the correct doctype) in any location beneath <code>Services</code>. (Actually |
| a resolver would offer an <code>InstanceCookie<MIMEResolver></code> in any location, but outside <code>Services</code> they would not have been |
| used in MIME resolution.) The new impl expects resolvers to be <code>Services/MIMEResolver/*.xml</code>, as in practice they always |
| are, and does not bother to verify that the public ID is set to the expected value in the doctype. |
| </p> |
| </li> |
| <li> |
| <p> |
| The old impl would have inserted the declarative resolvers in default lookup (assuming you were running with the |
| module system started and thus <code>FolderLookup[Services</code> included). The new impl does not. |
| </p> |
| </li> |
| </ul> |
| </compatibility> |
| <description> |
| <p> |
| Declaratively registered MIME resolvers using the XML file syntax |
| (rather than Java classes implementing <code>MIMEResolver</code>) |
| are now used even when you run an application with just the Filesystems API in the classpath. |
| In particular, this makes declarative resolvers be honored in unit tests. |
| Formerly, declarative resolvers were only loaded when you used <code>org-netbeans-core.jar</code> |
| and started the full module system. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="MIMEResolver"/> |
| <issue number="138846"/> |
| </change> |
| <change id="layer.bundlevalue"> |
| <api name="filesystems"/> |
| <summary>XMLFileSystem supports 'bundlevalue' attribute</summary> |
| <version major="7" minor="10"/> |
| <date day="8" month="7" year="2008"/> |
| <author login="jtulach"/> |
| <compatibility addition="yes"/> |
| <description> |
| <p> |
| It is possible to declare a value in <code>layer.xml</code> |
| files with <attr name="..." bundlevalue="org.yourpkg.Bundle#key"/>. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="XMLFileSystem"/> |
| <issue number="138076"/> |
| </change> |
| <change id="FileUtil.urlForArchiveOrDir.archiveOrDirForURL"> |
| <api name="filesystems"/> |
| <summary>Added methods to interconvert URLs and traditional path entries</summary> |
| <version major="7" minor="8"/> |
| <date day="17" month="3" year="2008"/> |
| <author login="jglick"/> |
| <compatibility addition="yes"/> |
| <description> |
| <p> |
| Added methods <code>urlForArchiveOrDir</code> and <code>archiveOrDirForURL</code> |
| to <code>FileUtil</code> to make it easier to work with classpaths. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="FileUtil"/> |
| <issue number="59311"/> |
| </change> |
| <change id="FileUtil.addFileChangeListener"> |
| <api name="filesystems"/> |
| <summary>Add methods: addFileChangeListener, removeFileChangeListener, refreshAll</summary> |
| <version major="7" minor="7"/> |
| <date day="26" month="2" year="2008"/> |
| <author login="rmatous"/> |
| <compatibility addition="yes"/> |
| <description> |
| Added utility methods: |
| <ul> |
| <li><code>public static FileObject addFileChangeListener (final FileChangeListener fcl)</code> to receive |
| <code>FileEvents</code> from <code>FileSystems</code> providing instances |
| of <code>FileObject</code> convertible to <code>java.io.File</code></li> |
| <li><code>public static FileObject removeFileChangeListener (final FileChangeListener fcl)</code> to no longer receive |
| <code>FileEvents</code> from <code>FileSystems</code> providing instances |
| of <code>FileObject</code> convertible to <code>java.io.File</code></li> |
| <li><code>public static FileObject refreshAll ()</code> to refreshes all <code>FileObject</code> that represent files <code>File.listRoots()</code> |
| and their children recursively.</li> |
| </ul> |
| </description> |
| <class package="org.openide.filesystems" name="FileUtil"/> |
| <issue number="127121"/> |
| </change> |
| <change id="FileUtil.refreshFor"> |
| <api name="filesystems"/> |
| <summary>Add method FileUtil.refreshFor(File... files)</summary> |
| <version major="7" minor="6"/> |
| <date day="16" month="1" year="2008"/> |
| <author login="rmatous"/> |
| <compatibility addition="yes"/> |
| <description> |
| <p> |
| Added helper method for refreshing all necessary filesystems, to get |
| refreshed all instances of <code>FileObject</code> representing |
| passed <code>files</code> and their children recursively. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="FileUtil"/> |
| <issue number="125308"/> |
| </change> |
| <change id="FileUtil.runAtomicAction"> |
| <api name="filesystems"/> |
| <summary>Simple way to run atomic action without having a fileobject</summary> |
| <version major="7" minor="5"/> |
| <date day="8" month="1" year="2008"/> |
| <author login="rmatous"/> |
| <compatibility addition="yes"/> |
| <description> |
| <p> |
| Simple way to run atomic action without having a fileobject is ensured by |
| adding two methods: <code>FileUtil.runAtomicAction</code>. |
| All events about filesystem changes (related to events on all affected instances of <code>FileSystem</code>) |
| are postponed after the whole code runned in atomic block is executed. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="FileUtil"/> |
| <issue number="123899"/> |
| </change> |
| <change id="FileObject.isLocked"> |
| <api name="filesystems"/> |
| <summary>Added method to test if file is locked</summary> |
| <version major="7" minor="3"/> |
| <date day="26" month="7" year="2007"/> |
| <author login="rmatous"/> |
| <compatibility addition="yes"/> |
| <description> |
| <p> |
| Added method <code>isLocked</code> to <code>FileObject</code>. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="FileObject"/> |
| <issue number="110549"/> |
| </change> |
| <change id="FileUtil.order"> |
| <api name="filesystems"/> |
| <summary>Added methods to order files in a folder</summary> |
| <version major="7" minor="2"/> |
| <date day="16" month="6" year="2007"/> |
| <author login="jglick"/> |
| <compatibility addition="yes"/> |
| <description> |
| <p> |
| Added methods <code>getOrder</code>, <code>setOrder</code>, |
| and <code>affectsOrder</code> to <code>FileUtil</code>. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="FileUtil"/> |
| <issue number="103187"/> |
| </change> |
| <change id="add-content-to-sfs"> |
| <api name="filesystems"/> |
| <summary>Allow modules to dynamically add/remove layer content</summary> |
| <version major="7" minor="1"/> |
| <date day="12" month="3" year="2007"/> |
| <author login="jtulach"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| <p> |
| Repository.getDefaultFileSystem's content can now be |
| influenced by adding own |
| <a href="@TOP@/org/openide/filesystems/FileSystem.html">FileSystem</a>s |
| into global |
| <a href="@org-openide-util-lookup@/org/openide/util/Lookup.html">Lookup.getDefault()</a>. |
| This is supposed to work in a standalone mode as well |
| as inside NetBeans Platform. The tutorial is available |
| in the <a href="@TOP@/architecture-summary.html#answer-arch-usecases">usecases section</a> of achitecture description. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="Repository"/> |
| <issue number="26338"/> |
| </change> |
| <change id="createData-and-createFolder-take-File-as-parameter"> |
| <api name="filesystems"/> |
| <summary>Added additional methods <code>FileUtil.createData</code> |
| and <code>FileUtil.createFolder</code> that take <code>java.io.File</code> as a parameter. |
| </summary> |
| <version major="7" minor="0"/> |
| <date day="7" month="9" year="2006"/> |
| <author login="rmatous"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| <p> |
| Added two utility methods for creation of folders and data files |
| that take <code>java.io.File</code> as a parameter: |
| <code>public static FileObject createFolder (final File folder) throws IOException</code> and |
| <code>public static FileObject createData (final File folder) throws IOException</code> |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="FileUtil"/> |
| <issue number="81527"/> |
| </change> |
| <change id="method-value-with-map"> |
| <api name="filesystems"/> |
| <summary>Semantics of XMLFileSystem's methodvalue extended to |
| also support methods that do not depend on FileSystems API |
| at all |
| </summary> |
| <version major="7" minor="0"/> |
| <date day="29" month="5" year="2006"/> |
| <author login="jtulach"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| <p> |
| <a href="@TOP@/org/openide/filesystems/XMLFileSystem.html">XMLFileSystem</a>'s |
| methodvalue now supports also <a href="@JDK@/java/util/Map.html">Map</a> |
| attribute, so one can write factory methods that are completely |
| independent on filesystems by creating methods like |
| <code>static Object methodName(Map attrs)</code> or |
| <code>static Object methodName(Map attrs, String s)</code>. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="XMLFileSystem"/> |
| <issue number="76692"/> |
| </change> |
| <change id="added-FileObject-getOutputStream-without-FileLock-parameter"> |
| <api name="filesystems"/> |
| <summary>Added additional method <code>FileObject.getOutputStream</code> |
| that doesn't take <code>FileLock</code> as a parameter. |
| </summary> |
| <version major="6" minor="6"/> |
| <date day="3" month="5" year="2006"/> |
| <author login="rmatous"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| <p> |
| Although newly added method <code>FileObject.getOutputStream</code> |
| doesn't take <code>FileLock</code> as a parameter, the implementation |
| is responsible for taking a lock before <code>OutputStream</code> is |
| returned and thus <code>FileAlreadyLockedException</code> exception is thrown |
| when <code>FileObject</code> is already locked. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="FileObject"/> |
| </change> |
| <change id="semantic-change-in-FileUtil.toFileObject"> |
| <api name="filesystems"/> |
| <summary> |
| The way how <code>IllegalArgumentException</code> is thrown from |
| <code>FileUtil.toFileObject</code> was changed |
| </summary> |
| <version major="6" minor="3"/> |
| <date day="25" month="10" year="2005"/> |
| <author login="rmatous"/> |
| <compatibility modification="yes" semantic="incompatible"/> |
| <description> |
| <p>Because of performance reason piece of code |
| checking whether file was properly normalized is called conditionally just |
| in case that assertions are enabled. Then |
| <code>IllegalArgumentException</code> can't be thrown if |
| assertions are disabled. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="FileUtil"/> |
| </change> |
| <change id="no-static-file-ext-mappings"> |
| <api name="filesystems"/> |
| <summary>Removed most static MIME type mappings</summary> |
| <version major="6" minor="2"/> |
| <date day="21" month="7" year="2005"/> |
| <author login="jglick"/> |
| <compatibility semantic="incompatible" deletion="yes"> |
| <p> |
| Clients which were relying on the existence of some of the former mappings may be broken. |
| (Of course such clients were in violation of the API anyway, since these mappings were never |
| documented or guaranteed.) For such cases, either avoid relying on MIME type, or add your |
| own <code>MIMEResolver</code> giving the mapping you want. |
| </p> |
| </compatibility> |
| <description> |
| <p> |
| Previously, a number of file extensions were given hardcoded MIME types in the Filesystems |
| API library (unless overridden by <code>MIMEResolver</code>s or <code>FileSystem</code> |
| implementations). Most of these static mappings have been removed. The affected mappings |
| were: |
| </p> |
| <table border="1"> |
| <thead> |
| <tr> |
| <td>Extension</td> |
| <td>MIME type</td> |
| </tr> |
| </thead> |
| <tr> |
| <td><code>au</code></td> |
| <td><code>audio/basic</code></td> |
| </tr> |
| <tr> |
| <td><code>class</code></td> |
| <td><code>application/octet-stream</code></td> |
| </tr> |
| <tr> |
| <td><code>css</code></td> |
| <td><code>text/css</code></td> |
| </tr> |
| <tr> |
| <td><code>dtd</code></td> |
| <td><code>text/x-dtd</code></td> |
| </tr> |
| <tr> |
| <td><code>exe</code></td> |
| <td><code>application/octet-stream</code></td> |
| </tr> |
| <tr> |
| <td><code>htm</code></td> |
| <td><code>text/html</code></td> |
| </tr> |
| <tr> |
| <td><code>html</code></td> |
| <td><code>text/html</code></td> |
| </tr> |
| <tr> |
| <td><code>jar</code></td> |
| <td><code>application/x-jar</code></td> |
| </tr> |
| <tr> |
| <td><code>java</code></td> |
| <td><code>text/x-java</code></td> |
| </tr> |
| <tr> |
| <td><code>jsp</code></td> |
| <td><code>text/plain</code></td> |
| </tr> |
| <tr> |
| <td><code>mov</code></td> |
| <td><code>video/quicktime</code></td> |
| </tr> |
| <tr> |
| <td><code>pl</code></td> |
| <td><code>text/plain</code></td> |
| </tr> |
| <tr> |
| <td><code>properties</code></td> |
| <td><code>text/plain</code></td> |
| </tr> |
| <tr> |
| <td><code>ps</code></td> |
| <td><code>application/postscript</code></td> |
| </tr> |
| <tr> |
| <td><code>ra</code></td> |
| <td><code>audio/x-pn-realaudio</code></td> |
| </tr> |
| <tr> |
| <td><code>ram</code></td> |
| <td><code>audio/x-pn-realaudio</code></td> |
| </tr> |
| <tr> |
| <td><code>rm</code></td> |
| <td><code>audio/x-pn-realaudio</code></td> |
| </tr> |
| <tr> |
| <td><code>rpm</code></td> |
| <td><code>audio/x-pn-realaudio</code></td> |
| </tr> |
| <tr> |
| <td><code>sh</code></td> |
| <td><code>application/x-shar</code></td> |
| </tr> |
| <tr> |
| <td><code>snd</code></td> |
| <td><code>audio/basic</code></td> |
| </tr> |
| <tr> |
| <td><code>tar</code></td> |
| <td><code>application/x-tar</code></td> |
| </tr> |
| <tr> |
| <td><code>text</code></td> |
| <td><code>text/plain</code></td> |
| </tr> |
| <tr> |
| <td><code>txt</code></td> |
| <td><code>text/plain</code></td> |
| </tr> |
| <tr> |
| <td><code>uu</code></td> |
| <td><code>application/octet-stream</code></td> |
| </tr> |
| <tr> |
| <td><code>wav</code></td> |
| <td><code>audio/x-wav</code></td> |
| </tr> |
| <tr> |
| <td><code>xsd</code></td> |
| <td><code>text/xml</code></td> |
| </tr> |
| <tr> |
| <td><code>xsl</code></td> |
| <td><code>text/xml</code></td> |
| </tr> |
| <tr> |
| <td><code>zip</code></td> |
| <td><code>application/zip</code></td> |
| </tr> |
| </table> |
| <p> |
| The mapping from <samp>*.xml</samp> to <code>text/xml</code> is retained as this may be |
| central to processing of XML configuration files on the system file system. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="FileUtil"/> |
| </change> |
| <change id="not-final-method-getFileObject"> |
| <api name="filesystems"/> |
| <summary> |
| <code>FileObject.getFileObject </code> made not final.</summary> |
| <version major="5" minor="3"/> |
| <date day="7" month="1" year="2005"/> |
| <author login="rmatous"/> |
| <compatibility binary="compatible" source="compatible" semantic="compatible" deprecation="no" addition="no" deletion="no" modification="no"/> |
| <description> |
| <p> |
| Method <code>public final FileObject getFileObject (String relativePath)</code> |
| in class <code>FileObject</code> isn't final anymore to let more freedom for implemetations. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="FileObject"/> |
| <issue number="51551"/> |
| </change> |
| <change id="FileUtil-archive-handling"> |
| <api name="filesystems"/> |
| <summary>Easier to work with ZIP/JAR archives</summary> |
| <version major="4" minor="48"/> |
| <date day="7" month="5" year="2004"/> |
| <author login="jglick"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| <p> |
| There are now various methods in <code>FileUtil</code> that let you |
| easily convert between archive files themselves and their entries. It |
| is no longer necessary (or advisable) to explicitly construct |
| <code>JarFileSystem</code>s to work with archives. A standard |
| <code>URLMapper</code> implementation is present which handles |
| <code>jar</code>-protocol URLs correctly. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="FileUtil"/> |
| </change> |
| <change id="FileUtil.normalizeFile"> |
| <api name="filesystems"/> |
| <summary> |
| <code>FileUtil.normalizeFile</code> added</summary> |
| <version major="4" minor="48"/> |
| <date day="7" month="5" year="2004"/> |
| <author login="jglick"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| <p> |
| The method <code>FileUtil.normalizeFile(File)</code> was added as a |
| refinement of <code>File.getCanonicalFile</code> that does not traverse |
| symlinks on Unix. Used throughout the NetBeans 4.0 project system. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="FileUtil"/> |
| <issue number="40410"/> |
| </change> |
| <change id="FileUtil.normalizePath"> |
| <api name="filesystems"/> |
| <summary> |
| <code>FileUtil.normalizePath</code> added |
| </summary> |
| <version major="7" minor="42"/> |
| <date day="30" month="9" year="2010"/> |
| <author login="vv159170"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| <p> |
| The method |
| <code>FileUtil.normalizePath(String)</code> was added as a refinement of |
| <code>FileUtil.normalizeFile</code> that does not require String to File to String conversion |
| on client side when intention is to convert unnormalized path to normalized path presentation. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="FileUtil"/> |
| <issue number="190480"/> |
| </change> |
| <change id="FileObject.setImportant"> |
| <api name="filesystems"/> |
| <summary> |
| <code>FileObject.setImportant</code> deprecated</summary> |
| <version major="4" minor="48"/> |
| <date day="7" month="5" year="2004"/> |
| <author login="jglick"/> |
| <compatibility binary="compatible" source="compatible" semantic="incompatible" deprecation="yes" addition="no" deletion="no" modification="no"> |
| <p> |
| There is no direct replacement. Code using this method should be |
| reëvaluated in the light of other changes in NetBeans 4.0. |
| </p> |
| </compatibility> |
| <description> |
| <p> |
| In NetBeans 3.x, normally “compilation” or similar build |
| steps would produce generated files kept in the user’s |
| development folder alongside source files, and picked up as secondary |
| files by a <code>MultiFileLoader</code>. To ensure that the VCS |
| integration did not offer to version such files, |
| <code>FileObject.setImportant</code> could be used to mark them as |
| disposable. |
| </p> |
| <p> |
| In NetBeans 4.0, such disposable files should not be placed in a source |
| folder. They should always be built to a separate build directory, |
| typically defined by the containing project. In this case marking an |
| individual file as unimportant is unnecessary, since the entire build |
| tree is known to be disposable. Instead, the project (not data loaders) |
| can use <code>SharabilityQueryImplementation</code> to indicate which |
| subtrees contain build products. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="FileObject"/> |
| </change> |
| <change id="filesystems-deprecations"> |
| <api name="filesystems"/> |
| <summary>Deprecation of various Filesystems API methods and classes</summary> |
| <version major="4" minor="48"/> |
| <date day="7" month="5" year="2004"/> |
| <author login="jglick"/> |
| <compatibility binary="compatible" source="compatible" semantic="incompatible" deprecation="yes" addition="no" deletion="no" modification="no"> |
| <p> |
| In general, attempts to call the old methods will yield well-defined |
| but useless results in NetBeans 4.0. |
| </p> |
| </compatibility> |
| <description> |
| <p> |
| Various parts of the Filesystems API which are no longer useful in |
| NetBeans 4.0 were deprecated. The assumptions which are now invalid |
| were: |
| </p> |
| <ul> |
| <li> |
| <p> |
| The root of a filesystem corresponds to a Java classpath root (if |
| the appropriate capabilities were set). Now handled by the |
| Classpath API. |
| </p> |
| </li> |
| <li> |
| <p> |
| The user explicitly mounts and unmounts filesystems, either to |
| control the classpath, for version control purposes, or simply to |
| access some area of the disk; and so filesystem metadata is |
| relevant to the GUI. Now obsoleted by the Classpath API and |
| MasterFS. |
| </p> |
| </li> |
| <li> |
| <p> |
| The IDE internally managed a list of mounted filesystems. Now only |
| the default system filesystem is “mounted”; MasterFS |
| transparently manages all “user-space” files. |
| </p> |
| </li> |
| <li> |
| <p> |
| File objects are persisted by saving a reference to the containing |
| filesystem, plus the relative path within the filesystem. Now done |
| using URLs. |
| </p> |
| </li> |
| </ul> |
| <p> |
| Specific deprecations: |
| </p> |
| <ol> |
| <li> |
| <code>FileSystem.Environment</code> and |
| <code>EnvironmentNotSupportedException</code> |
| </li> |
| <li> |
| <code>FileSystemCapability</code> (and its constants and subclasses), |
| <code>FileSystem.getCapability</code> and <code>setCapability</code>, |
| constructors taking <code>FileSystemCapability</code> |
| </li> |
| <li> |
| <code>FileSystem.PROP_HIDDEN</code>, <code>isHidden</code>, and |
| <code>setHidden</code> |
| </li> |
| <li> |
| <code>FileSystem.PROP_SYSTEM_NAME</code>, <code>getSystemName</code>, |
| and <code>setSystemName</code> |
| </li> |
| <li> |
| <code>FileSystem.find</code> |
| </li> |
| <li> |
| <code>FileObject</code> methods such as <code>getPackageName</code> |
| </li> |
| <li> |
| <code>FileSystem.isPersistent</code> |
| </li> |
| </ol> |
| <p> |
| See also <a href="#Repository-deprecations">deprecations in |
| <code>Repository</code> |
| </a>. |
| </p> |
| </description> |
| <!--<class package="org.openide.filesystems" name="EnvironmentNotSupportedException"/>--> |
| <class package="org.openide.filesystems" name="FileObject"/> |
| <class package="org.openide.filesystems" name="FileSystem"/> |
| <!--<class package="org.openide.filesystems" name="FileSystemCapability"/>--> |
| </change> |
| <change id="FileObject.getPath-III"> |
| <api name="filesystems"/> |
| <summary> |
| <code>FileObject.toString()</code> not to be used for specific purposes</summary> |
| <version major="4" minor="48"/> |
| <date day="7" month="5" year="2004"/> |
| <author login="jglick"/> |
| <compatibility source="compatible" semantic="incompatible" modification="yes" binary="compatible" deprecation="no" addition="no" deletion="no"> |
| <p> |
| Older Filesystems API clients which assumed that |
| <code>FileObject.toString()</code> and |
| <code>FileObject.getPath()</code> do the same thing will be broken. |
| </p> |
| </compatibility> |
| <description> |
| <p> |
| <code>FileObject.toString()</code> no longer returns a predictable |
| value; in particular, it will not be the same as |
| <code>getPath()</code>. The new value is suitable for logging and |
| debugging but otherwise cannot be relied upon. |
| </p> |
| <p> |
| There are two benefits to this change: |
| </p> |
| <ol> |
| <li> |
| <p> |
| The new <code>toString()</code> is more useful for logging than the |
| previous value. It is no longer necessary to separately include |
| <code>fileObject.getFileSystem().toString()</code>, which was |
| cumbersome (and required an extra catch clause). |
| </p> |
| </li> |
| <li> |
| <p> |
| Clients which were incorrectly using <code>toString()</code> to get |
| a Java resource path will now be predictably broken, so they can be |
| fixed to use <code>ClassPath</code>. (The paths would not have been |
| usable in NetBeans 4.0 anyway.) Just deprecating |
| <code>toString()</code> was not possible because it overrides a |
| nondeprecated <code>Object</code> method, and is also inserted into |
| code by the compiler without emitting any deprecation warning. |
| </p> |
| </li> |
| </ol> |
| </description> |
| <class package="org.openide.filesystems" name="FileObject"/> |
| <issue number="27640"/> |
| </change> |
| <change id="FileUtil.createMemoryFileSystem"> |
| <api name="filesystems"/> |
| <summary>Added new method <code>FileUtil.createMemoryFileSystem ()</code> |
| </summary> |
| <version major="4" minor="43"/> |
| <date day="4" month="8" year="2004"/> |
| <author login="jtulach"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| <p> |
| There is a new factory method <code>FileUtil.createMemoryFileSystem ()</code> |
| to create an empty, writeable instance of a <code>FileSystem</code> |
| with content completely stored in memory. This filesystem is the |
| one that is by default returned from <code>Repository.getDefaultFileSystem()</code> |
| so since now the standalone applications may expect the default file system |
| to be writable. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="FileUtil"/> |
| <issue number="46701"/> |
| </change> |
| <change id="FileUtil.preventFileChooserSymlinkTraversal"> |
| <api name="filesystems"/> |
| <summary>Added <code>FileUtil.preventFileChooserSymlinkTraversal(...)</code> |
| </summary> |
| <version major="4" minor="42"/> |
| <date day="30" month="7" year="2004"/> |
| <author login="jglick"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| Added a new method <code>FileUtil.preventFileChooserSymlinkTraversal(...)</code> |
| to help work around problems with symbolic links and <code>JFileChooser</code>. |
| </description> |
| <class package="org.openide.filesystems" name="FileUtil"/> |
| <issue number="46459"/> |
| </change> |
| <change> |
| <api name="filesystems"/> |
| <summary>Added FileUtil.getFileDisplayName</summary> |
| <version major="4" minor="39"/> |
| <date day="9" month="6" year="2004"/> |
| <author login="rmatous"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| Get an appropriate display name for a file object. |
| If the file corresponds to a path on disk, this will be the disk path. |
| Otherwise the name will mention the filesystem name or archiv name in case |
| the file comes from archiv and relative path. Relative path will be mentioned |
| just in case that passed |
| <code>FileObject</code> isn't root. |
| </description> |
| <class package="org.openide.filesystems" name="FileUtil"/> |
| <issue number="37549"/> |
| </change> |
| <change id="Repository-deprecations"> |
| <api name="filesystems"/> |
| <summary>Almost all methods of Repository were deprecated.</summary> |
| <version major="4" minor="36"/> |
| <date day="1" month="6" year="2004"/> |
| <author login="rmatous"/> |
| <compatibility deprecation="yes" semantic="incompatible" binary="compatible" source="compatible" addition="no" deletion="no" modification="no"/> |
| <description> |
| All methods were deprecated except: |
| <ul> |
| <li> |
| <code>getDefault ()</code> |
| </li> |
| <li> |
| <code>getDefaultFileSystem ()</code> |
| </li> |
| </ul> |
| |
| The previous semantics of Repository is broken. Replacement: |
| <ul> |
| <li>ClassPath API</li> |
| <li> |
| <code>URLMapper</code> for providing <code>FileObjects</code> |
| </li> |
| </ul> |
| </description> |
| <class package="org.openide.filesystems" name="Repository"/> |
| <issue number="42273"/> |
| </change> |
| <change> |
| <api name="filesystems"/> |
| <summary>Reused DefaultAttributes can use different name than .nbattrs </summary> |
| <version major="4" minor="35"/> |
| <date day="28" month="5" year="2004"/> |
| <author login="rmatous"/> |
| <compatibility addition="yes" semantic="compatible" binary="compatible" source="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| Added new constructor to DefaultAttributes that takes file name as next additional parameter. |
| </description> |
| <class package="org.openide.filesystems" name="DefaultAttributes"/> |
| <issue number="43180"/> |
| </change> |
| <change> |
| <api name="filesystems"/> |
| <summary>There should exist just one FileObject for one resource (java.io.File or URL). </summary> |
| <version major="4" minor="29"/> |
| <date day="13" month="4" year="2004"/> |
| <author login="rmatous"/> |
| <compatibility addition="yes" modification="yes" deprecation="yes" semantic="compatible" binary="compatible" source="compatible" deletion="no"/> |
| <description> |
| <ul> |
| <li>Added method FileUtil.toFileObject as replacement for current method FileUtil.fromFile which was deprecated.</li> |
| <li>Added method URLMapper.findFileObject as replacement for current method URLMapper.findFileObjects which was deprecated .</li> |
| </ul> |
| </description> |
| <class package="org.openide.filesystems" name="FileUtil"/> |
| <class package="org.openide.filesystems" name="URLMapper"/> |
| <issue number="41506"/> |
| </change> |
| <change> |
| <api name="filesystems"/> |
| <summary>Added API for finding file relatively to another file</summary> |
| <version major="4" minor="16"/> |
| <date day="9" month="12" year="2003"/> |
| <author login="rmatous"/> |
| <compatibility addition="yes" modification="yes" semantic="compatible" binary="compatible" source="compatible" deprecation="no" deletion="no"/> |
| <description> |
| <ul> |
| <li>Added method FileUtil.getRelativePath which gets a relative resource path between folder and fo in folder's tree.</li> |
| <li>Slightly modified semantic of FileObject.getFileObject in compatible way. This method retrieves file |
| or folder relative to a current folder, with a given relative path. |
| </li> |
| </ul> |
| </description> |
| <class package="org.openide.filesystems" name="FileUtil"/> |
| <class package="org.openide.filesystems" name="FileObject"/> |
| <issue number="37445"/> |
| </change> |
| <change> |
| <api name="filesystems"/> |
| <summary>Added FileUtil.isParentOf</summary> |
| <version major="3" minor="16"/> |
| <date day="22" month="10" year="2002"/> |
| <author login="vstejskal"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| FileUtil.isParentOf provides simple recursive check whether the FileObject is |
| underneath some folder. |
| </description> |
| <class package="org.openide.filesystems" name="FileUtil"/> |
| </change> |
| <change id="FileObject.getPath-II"> |
| <api name="filesystems"/> |
| <summary>Changed javadoc to warn about improper use of methods</summary> |
| <date day="1" month="10" year="2002"/> |
| <author login="pzavadsky"/> |
| <compatibility modification="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" addition="no" deletion="no"/> |
| <description> |
| Changed Javadoc to warn about improper usage |
| of the <code>FileObject.toString</code> (it was used |
| as full path format), which is replaced by |
| <code>FileObject.getPath</code> now. Explained correct purpose |
| of that method. Also added those warnings to |
| <code>findResource</code> and <code>findAllResource</code> |
| of <code>Repository</code> class. |
| </description> |
| <class package="org.openide.filesystems" name="FileObject"/> |
| <issue number="27640"/> |
| <issue number="27687"/> |
| </change> |
| <change id="repository-not-final"> |
| <api name="filesystems"/> |
| <summary>Repository is not final</summary> |
| <version major="3" minor="3"/> |
| <date day="22" month="7" year="2002"/> |
| <author login="jtulach"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| Repository is not final anymore, so there can be subclasses of it. But all its methods |
| has been made final. This was done in order to create Repositories that will follow the |
| javabeans pattern (have public default constructor). |
| </description> |
| <class package="org.openide.filesystems" name="Repository"/> |
| </change> |
| <change id="issue-19443-1"> |
| <summary>API separation, phase I</summary> |
| <version major="3" minor="14"/> |
| <date day="15" month="10" year="2002"/> |
| <author login="jglick"/> |
| <compatibility binary="compatible" source="incompatible" deprecation="yes" semantic="compatible" addition="no" deletion="no" modification="no"> |
| <p> |
| The deprecated classes continue to be available in the module |
| <code>org.openide.deprecated</code> which you may depend on it you |
| cannot remove uses of the deprecated APIs. In order for |
| <code>TopManager.getDefault()</code> to work, you must also require the |
| token <code>org.openide.TopManager</code>, which is provided by an |
| unspecified module. The deprecated API module and its implementation |
| module are autoloads, meaning they will not be loaded unless some |
| module still requires them. |
| </p> |
| <p> |
| Similarly, the Java Hierarchy API was moved to the module |
| <code>org.openide.src</code> which you should depend on in order to use |
| this API. |
| </p> |
| <p> |
| For compatibility, the above three dependencies are added to your module |
| <em>automatically</em> in case it either requests no specific API |
| version at all, or requests an API version prior to 3.14. Modules |
| requesting APIs 3.14 or higher must declare these dependencies |
| explicitly if they in fact need them. |
| </p> |
| </compatibility> |
| <description> |
| <p> |
| Many classes were moved to a separate module, |
| <samp>openide-deprecated.jar</samp>, not available to modules by |
| default. Uses of these classes in modules should be cleaned up whenever |
| possible. |
| </p> |
| <p> |
| Additionally, the entire contents of <code>org.openide.src.*</code> and |
| <code>org.openide.src.nodes.*</code>, as well as |
| <code>org.openide.cookies.SourceCookie</code> and some associated |
| property editors, were moved to a separate module. |
| </p> |
| <p> |
| The most common apparent symptom for module authors will be the absence |
| of <code>TopManager</code>. Most methods in this class have been |
| replaced by newer utility classes in a straightforward manner. See the |
| Upgrade Guide. |
| </p> |
| </description> |
| <class package="org.openide" name="DialogDisplayer" link="no"/> |
| <class package="org.openide" name="LifecycleManager" link="no"/> |
| <class package="org.openide" name="Places" link="no"/> |
| <class package="org.openide" name="TopManager" link="no"/> |
| <class package="org.openide.actions" name="AddWatchAction" link="no"/> |
| <class package="org.openide.actions" name="BuildProjectAction" link="no"/> |
| <class package="org.openide.actions" name="CompileProjectAction" link="no"/> |
| <class package="org.openide.actions" name="DebugProjectAction" link="no"/> |
| <class package="org.openide.actions" name="ExecuteProjectAction" link="no"/> |
| <class package="org.openide.actions" name="FinishDebuggerAction" link="no"/> |
| <class package="org.openide.actions" name="GoAction" link="no"/> |
| <class package="org.openide.actions" name="GoToCursorAction" link="no"/> |
| <class package="org.openide.actions" name="HelpAction" link="no"/> |
| <class package="org.openide.actions" name="OpenProjectAction" link="no"/> |
| <class package="org.openide.actions" name="SaveProjectAction" link="no"/> |
| <class package="org.openide.actions" name="StartDebuggerAction" link="no"/> |
| <class package="org.openide.actions" name="StepOutAction" link="no"/> |
| <class package="org.openide.actions" name="ToggleBreakpointAction" link="no"/> |
| <class package="org.openide.actions" name="TraceIntoAction" link="no"/> |
| <class package="org.openide.actions" name="TraceOverAction" link="no"/> |
| <class package="org.openide.awt" name="HtmlBrowser" link="no"/> |
| <class package="org.openide.awt" name="StatusDisplayer" link="no"/> |
| <class package="org.openide.cookies" name="DebuggerCookie" link="no"/> |
| <class package="org.openide.cookies" name="ElementCookie" link="no"/> |
| <class package="org.openide.cookies" name="ProjectCookie" link="no"/> |
| <class package="org.openide.cookies" name="SourceCookie" link="no"/> |
| <class package="org.openide.explorer.propertysheet.editors" name="ChoicePropertyEditor" link="no"/> |
| <class package="org.openide.explorer.propertysheet.editors" name="DirectoryOnlyEditor" link="no"/> |
| <class package="org.openide.explorer.propertysheet.editors" name="ElementFormatEditor" link="no"/> |
| <class package="org.openide.explorer.propertysheet.editors" name="ExternalCompiler" link="no"/> |
| <class package="org.openide.explorer.propertysheet.editors" name="FileEditor" link="no"/> |
| <class package="org.openide.explorer.propertysheet.editors" name="FileOnlyEditor" link="no"/> |
| <class package="org.openide.explorer.propertysheet.editors" name="IconEditor" link="no"/> |
| <class package="org.openide.explorer.propertysheet.editors" name="IdentifierArrayEditor" link="no"/> |
| <class package="org.openide.explorer.propertysheet.editors" name="MethodParameterArrayEditor" link="no"/> |
| <class package="org.openide.explorer.propertysheet.editors" name="ModifierEditor" link="no"/> |
| <class package="org.openide.explorer.propertysheet.editors" name="StringArrayCustomEditor" link="no"/> |
| <class package="org.openide.explorer.propertysheet.editors" name="StringArrayCustomizable" link="no"/> |
| <class package="org.openide.explorer.propertysheet.editors" name="StringArrayEditor" link="no"/> |
| <class package="org.openide.explorer.propertysheet.editors" name="TypeEditor" link="no"/> |
| <class package="org.openide.loaders" name="DataObjectFilter" link="no"/> |
| <class package="org.openide.loaders" name="ExecSupport" link="no"/> |
| <class package="org.openide.loaders" name="ExecutionSupport" link="no"/> |
| <class package="org.openide.loaders" name="ExtensionListEditor" link="no"/> |
| <class package="org.openide.loaders" name="RepositoryNodeFactory" link="no"/> |
| <class package="org.openide.modules" name="IllegalModuleException" link="no"/> |
| <class package="org.openide.modules" name="ManifestSection" link="no"/> |
| <class package="org.openide.modules" name="ModuleDescription" link="no"/> |
| <class package="org.openide.nodes" name="NodeOperation" link="no"/> |
| <class package="org.openide.options" name="ControlPanel" link="no"/> |
| <class package="org.openide.util.actions" name="ProjectSensitiveAction" link="no"/> |
| <class package="org.openide.windows" name="IOProvider" link="no"/> |
| <package name="org.openide.debugger" link="no"/> |
| <package name="org.openide.src" link="no"/> |
| <package name="org.openide.src.nodes" link="no"/> |
| <issue number="19443"/> |
| <issue number="20898"/> |
| </change> |
| <change id="issue-19443-2"> |
| <summary>API separation, phase II</summary> |
| <version major="3" minor="17"/> |
| <date day="1" month="11" year="2002"/> |
| <author login="jglick"/> |
| <compatibility binary="compatible" source="incompatible" modification="yes" semantic="compatible" deprecation="no" addition="no" deletion="no"> |
| <p> |
| Module authors using the now-separated APIs will need to adjust their |
| compilation classpaths to include the new JAR files. Modules wishing to |
| use recent APIs and declaring a current openide specification version |
| dependency will need to explicitly declare dependencies on these new |
| APIs if there are any. |
| </p> |
| <p> |
| For compatibility, modules with no declared Open APIs dependency, or |
| declared on a version prior to 3.17, will have their dependencies |
| automatically refined as if to include the declarations: |
| </p> |
| <pre> |
| OpenIDE-Module-Module-Dependencies: org.openide.compiler > 1.0, |
| org.openide.execution > 1.0, org.openide.io > 1.0 |
| OpenIDE-Module-Requires: org.openide.compiler.CompilationEngine, |
| org.openide.execution.ExecutionEngine, org.openide.windows.IOProvider |
| </pre> |
| <p> |
| And any package dependencies from old modules on |
| <code>org.netbeans.lib.terminalemulator</code> will be converted to |
| module dependencies. |
| </p> |
| </compatibility> |
| <description> |
| <p> |
| Three sections of the Open APIs were split into new autoload modules. |
| </p> |
| <ul> |
| <li> |
| <p> |
| The module <code>org.openide.compiler</code> (version 1.0) contains |
| the Compiler API and some other classes directly related to it. |
| </p> |
| </li> |
| <li> |
| <p> |
| The module <code>org.openide.execution</code> (version 1.0) contains |
| the Execution API and some other classes directly related to it. |
| </p> |
| </li> |
| <li> |
| <p> |
| The module <code>org.openide.io</code> (version 1.0) contains |
| <code>InputOutput</code> and related classes (formerly part of the |
| Window System API, and still physically in the |
| <code>org.openide.windows</code> package). |
| </p> |
| </li> |
| </ul> |
| <p> |
| New modules wishing to use these APIs must declare regular module |
| dependencies on them. Future changes in these APIs will be documented |
| separately. |
| </p> |
| <p> |
| Furthermore, modules wishing to use certain services must |
| <code>OpenIDE-Module-Require</code> them if appropriate: |
| </p> |
| <ul> |
| <li> |
| <p> |
| <code>org.openide.compiler.CompilationEngine</code>, in order to |
| call <code>CompilationEngine.getDefault()</code>, or safely use |
| <code>AbstractCompileAction</code> or one of its subclasses, or |
| call <code>CompilerJob.start()</code>, or use |
| <code>BeanInfo</code>s for Compiler API classes, etc. |
| </p> |
| </li> |
| <li> |
| <p> |
| <code>org.openide.execution.ExecutionEngine</code>, in order to |
| call <code>ExecutionEngine.getDefault()</code>, or safely use |
| <code>ExecuteAction</code>, or call |
| <code>Executor.execute(...)</code>, or use <code>BeanInfo</code>s |
| for Execution API classes, etc. |
| </p> |
| </li> |
| <li> |
| <p> |
| <code>org.openide.windows.IOProvider</code>, in order to call |
| <code>IOProvider.getDefault()</code>. |
| </p> |
| </li> |
| </ul> |
| <p> |
| Other minor changes: |
| </p> |
| <ul> |
| <li> |
| <p> |
| Registration of URL stream handler factories using |
| <code>NbfsStreamHandlerFactory.register(...)</code> is deprecated. |
| Simply create an instance of <code>URLStreamHandlerFactory</code> |
| and add it to Lookup instead. |
| </p> |
| </li> |
| <li> |
| <p> |
| The method <code>FileUtil.nbfsURLStreamHandler</code> was added, |
| but is not intended for use by modules. |
| </p> |
| </li> |
| <li> |
| <p> |
| All uses of <code>ExecInfo</code> are deprecated as they abuse the |
| distinction between Filesystems and the user classpath. Use and |
| override only <code>Executor.execute(DataObject)</code>. Similarly, |
| <code>ThreadExecutor</code> is deprecated for the time being |
| because it suffers from similar problems. |
| </p> |
| </li> |
| <li> |
| <p> |
| Direct use of <code>NbfsURLConnection</code> is deprecated in favor |
| of the more general <code>URLMapper</code> from the Filesystems |
| API. |
| </p> |
| </li> |
| <li> |
| <p> |
| Package dependencies on |
| <code>org.netbeans.lib.terminalemulator</code> must be replaced |
| with module dependencies on a new autoload module |
| <code>org.netbeans.lib.terminalemulator</code> (version 1.0). |
| </p> |
| </li> |
| <li> |
| <p> |
| Several static convenience methods have been added to |
| <code>AbstractCompileAction</code>. Of most interest is |
| <code>prepareJobFor</code>. Module code should no longer assume |
| that <code>DataFolder</code> has a <code>CompilerCookie</code> |
| which recursively compiles the folder and subfolders (according to |
| depth); while it is still true, for reasons of compatibility, new |
| code should use <code>prepareJobFor</code> to create a compiler job |
| from a folder. |
| </p> |
| </li> |
| </ul> |
| </description> |
| <class package="org.openide.actions" name="AbstractCompileAction" link="no"/> |
| <class package="org.openide.actions" name="BuildAction" link="no"/> |
| <class package="org.openide.actions" name="BuildAllAction" link="no"/> |
| <class package="org.openide.actions" name="CleanAction" link="no"/> |
| <class package="org.openide.actions" name="CleanAllAction" link="no"/> |
| <class package="org.openide.actions" name="CompileAction" link="no"/> |
| <class package="org.openide.actions" name="CompileAllAction" link="no"/> |
| <class package="org.openide.actions" name="ExecuteAction" link="no"/> |
| <class package="org.openide.cookies" name="ArgumentsCookie" link="no"/> |
| <class package="org.openide.cookies" name="CompilerCookie" link="no"/> |
| <class package="org.openide.cookies" name="ExecCookie" link="no"/> |
| <class package="org.openide.filesystems" name="FileUtil"/> |
| <class package="org.openide.loaders" name="CompilerSupport" link="no"/> |
| <class package="org.openide.loaders" name="ExecutionSupport" link="no"/> |
| <class package="org.openide.windows" name="IOProvider" link="no"/> |
| <class package="org.openide.windows" name="InputOutput" link="no"/> |
| <class package="org.openide.windows" name="OutputEvent" link="no"/> |
| <class package="org.openide.windows" name="OutputListener" link="no"/> |
| <class package="org.openide.windows" name="OutputWriter" link="no"/> |
| <package name="org.openide.compiler" link="no"/> |
| <package name="org.openide.execution" link="no"/> |
| <issue number="19443"/> |
| </change> |
| <change id="getPath"> |
| <api name="filesystems"/> |
| <summary> |
| <code>FileObject.getPath()</code> returns full resource path of file object</summary> |
| <version major="3" minor="7"/> |
| <date day="30" month="8" year="2002"/> |
| <author login="jglick"/> |
| <compatibility deprecation="yes" addition="yes" binary="compatible" source="incompatible" semantic="compatible" deletion="no" modification="no"> |
| Existing <code>FileObject</code> implementations ought to override the |
| new method for efficiency. They should also cease to override |
| <code>toString</code>. Subclasses of <code>AbstractFileSystem</code> (the |
| normal case) need not be concerned, since the corresponding |
| <code>FileObject</code> already implements this method correctly. Code |
| assuming <code>toString</code> returns a resource path should be changed |
| to use <code>getPath</code> instead. |
| </compatibility> |
| <description> |
| It is commonly necessary to find the full resource path of a file object |
| within its filesystem. Formerly you could do this the safe way by calling |
| <code>getPackageNameExt('/', '.')</code>, but this is clumsy to |
| write, potentially inefficient, and is prone to misinterpretation in the |
| case of files without any extension (or files ending in a period, or |
| folders with extensions). Calling <code>toString()</code> was more |
| effective, but this suffered from the problem that for compatibility |
| reasons, no assurance could be made that it would actually give a |
| resource path - an old <code>FileObject</code> implementation could |
| implement it in any way, since it was not originally documented what it |
| should return. Therefore, the new method <code>getPath()</code> has been |
| introduced. |
| </description> |
| <class package="org.openide.filesystems" name="FileObject"/> |
| <issue number="26904"/> |
| </change> |
| <change> |
| <api name="filesystems"/> |
| <summary> |
| Mounting new filesystem no longer works with filesystems providing |
| <code>WizardDescriptor</code> as bean customizers |
| </summary> |
| <date day="24" month="7" year="2001"/> |
| <author login="jtulach"/> |
| <compatibility modification="yes" semantic="incompatible" binary="compatible" source="compatible" deprecation="no" addition="no" deletion="no"> |
| WizardDescriptor as bean customizer no longer opens the wizard |
| while mounting. To achieve this use of a special iterator |
| in Templates/Mount/ is now used (for modules 3.3+). |
| </compatibility> |
| <description> |
| <p> |
| It used to be the case (NB 3.2) that a FileSystem |
| implementation could in its BeanInfo specify a BeanDescriptor whose |
| Customizer class extended WizardDescriptor. This would cause the |
| wizard to be opened when the user tried to mount that filesystem type. |
| </p> |
| <p> |
| The situation now (from 3.3) is that this no longer opens |
| the customizer and property sheet is presented in the second |
| step of the mount wizard. |
| </p> |
| </description> |
| </change> |
| <change> |
| <api name="filesystems"/> |
| <summary>Filesystem implementation methods protected not public</summary> |
| <date day="27" month="3" year="2000"/> |
| <author login="jtulach"/> |
| <compatibility source="incompatible" modification="yes" binary="compatible" semantic="compatible" deprecation="no" addition="no" deletion="no"> |
| First broken, later restored binary compatibility in trunk and |
| <code>boston</code>. Any outside code calling them as public will break; |
| however such code is definitely erroneous and should be rewritten. |
| </compatibility> |
| <description> |
| <p> |
| Many methods in <code>LocalFileSystem</code> and |
| <code>JarFileSystem</code> were declared public though they should never |
| have been called directly. (They were implementing interface methods |
| that would only be called from within the class itself.) These methods |
| are: |
| </p> |
| <ul> |
| <li> |
| <code>children(String)</code> |
| </li> |
| <li> |
| <code>createData(String)</code> |
| </li> |
| <li> |
| <code>createFolder(String)</code> |
| </li> |
| <li> |
| <code>delete(String)</code> |
| </li> |
| <li> |
| <code>folder(String)</code> |
| </li> |
| <li> |
| <code>inputStream(String)</code> |
| </li> |
| <li> |
| <code>lastModified(String)</code> |
| </li> |
| <li> |
| <code>lock(String)</code> |
| </li> |
| <li> |
| <code>markUnimportant(String)</code> |
| </li> |
| <li> |
| <code>mimeType(String)</code> |
| </li> |
| <li> |
| <code>outputStream(String)</code> |
| </li> |
| <li> |
| <code>readOnly(String)</code> |
| </li> |
| <li> |
| <code>rename(String,String)</code> |
| </li> |
| <li> |
| <code>size(String)</code> |
| </li> |
| <li> |
| <code>unlock(String)</code> |
| </li> |
| </ul> |
| <p> |
| Also in <code>JarFileSystem</code> only: |
| </p> |
| <ul> |
| <li> |
| <code>readAttribute(String,String)</code> |
| </li> |
| <li> |
| <code>writeAttribute(String,String,Object)</code> |
| </li> |
| <li> |
| <code>attributes(String)</code> |
| </li> |
| <li> |
| <code>renameAttributes(String,String)</code> |
| </li> |
| <li> |
| <code>deleteAttributes(String)</code> |
| </li> |
| </ul> |
| <p> |
| All these methods are now protected. |
| </p> |
| <p> |
| In general, outside code should use the proper outer API to access |
| filesystems (<code>FileSystem</code> and <code>FileObject</code> and |
| some helper classes), only directly calling methods of implementation |
| classes where this is required (constructors or |
| <code>setRootDirectory</code>). As a matter of style, it is recommended |
| that calling code declare variables to be of the abstract type (e.g. |
| <code>FileSystem</code>) to clarify that only generally available |
| methods will be called. |
| </p> |
| </description> |
| <class package="org.openide.filesystems" name="LocalFileSystem"/> |
| <class package="org.openide.filesystems" name="JarFileSystem"/> |
| <!-- No boston branch tag, as change made before it. --> |
| </change> |
| <change> |
| <api name="filesystems"/> |
| <summary>URL -> FileObject mapping implementation</summary> |
| <version major="2" minor="22"/> |
| <date day="6" month="6" year="2002"/> |
| <author login="rmatous"/> |
| <compatibility semantic="incompatible" modification="yes" binary="compatible" source="compatible" deprecation="no" addition="no" deletion="no"> |
| Added abstract method <code>public abstract FileObject[] getFileObjects (URL url)</code> |
| But there doesn`t exists any known subclass of URLMapper yet. And URLMapper was introduced |
| recently 2.16 in 3.4 release. |
| </compatibility> |
| <description> |
| Two methods were added <code>public static FileObject[] findFileObjects (URL url)</code> and |
| <code>public abstract FileObject[] getFileObjects (URL url)</code>. |
| </description> |
| <class package="org.openide.filesystems" name="URLMapper"/> |
| </change> |
| <change id="URLMapper"> |
| <api name="filesystems"/> |
| <summary>Added support for better FileObject-URL mapping</summary> |
| <version major="2" minor="16"/> |
| <date day="25" month="4" year="2002"/> |
| <author login="rmatous"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| Added new class <code>URLMapper</code>. This class provides basic mapping |
| for FileObjects from LocalFileSystem, JarFileSystem and MultiFileSystem and is intended |
| as superclass for individual mappers. |
| </description> |
| <class package="org.openide.filesystems" name="URLMapper"/> |
| </change> |
| <change> |
| <api name="filesystems"/> |
| <summary>URLMapper.findFileObjects returns empty array if not successful.</summary> |
| <version major="3" minor="28"/> |
| <date day="8" month="1" year="2003"/> |
| <author login="rmatous"/> |
| <compatibility modification="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" addition="no" deletion="no"/> |
| <description> |
| <code>URLMapper.findFileObjects </code> returns empty array if not successful. |
| As far there was in documentation written, that null is returned. |
| </description> |
| <class package="org.openide.filesystems" name="URLMapper"/> |
| <issue number="28312"/> |
| </change> |
| <change> |
| <api name="filesystems"/> |
| <summary> Method FileObject.isReadOnly was deprecated and replaced with methods canRead, canWrite</summary> |
| <version major="3" minor="31"/> |
| <date day="10" month="1" year="2003"/> |
| <author login="rmatous"/> |
| <compatibility addition="yes" deprecation="yes" binary="compatible" source="compatible" semantic="compatible" deletion="no" modification="no"/> |
| <description> |
| There was made changes in FileObject class. |
| Added method: <code>public boolean canRead ()</code>. |
| Method <code>public boolean isReadOnly ()</code> was deprecated and replaced with |
| method: <code>public boolean canWrite ()</code>. This change can be considered as compatible. |
| Newly added methods have default implementation. Also AbstractFileSystem was modified and two |
| necessary method were added: method: <code>public boolean canRead ()</code> and |
| method: <code>public boolean canWrite ()</code>. |
| </description> |
| <class package="org.openide.filesystems" name="FileObject"/> |
| <class package="org.openide.filesystems" name="AbstractFileSystem"/> |
| </change> |
| <change id="FileSystem.refresh"> |
| <api name="filesystems"/> |
| <summary>There exists possibility to refresh whole filesystem in one </summary> |
| <version major="2" minor="16"/> |
| <date day="24" month="4" year="2002"/> |
| <author login="rmatous"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| Method: <code>public void FileSystem.refresh (boolean expected))</code> was added. |
| </description> |
| <class package="org.openide.filesystems" name="FileSystem"/> |
| </change> |
| <change id="FileSystem.FileChangeListener"> |
| <api name="filesystems"/> |
| <summary>FileSystem provides FileChangeListener functionality </summary> |
| <version major="2" minor="8"/> |
| <date day="11" month="3" year="2002"/> |
| <author login="rmatous"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| Method: <code>public final void addFileChangeListener(FileChangeListener fcl)</code> and |
| <code>public final void removeFileChangeListener(FileChangeListener fcl)</code> was added |
| to maintain FileChangeListeners that should be notified if some change in FileSystem occures. |
| </description> |
| <class package="org.openide.filesystems" name="FileSystem"/> |
| </change> |
| <change id="Repository.FileChangeListener"> |
| <api name="filesystems"/> |
| <summary>Repository provides FileChangeListener functionality </summary> |
| <version major="2" minor="8"/> |
| <date day="11" month="3" year="2002"/> |
| <author login="rmatous"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| Method: <code>public final void addFileChangeListener(FileChangeListener fcl)</code> and |
| <code>public final void removeFileChangeListener(FileChangeListener fcl)</code> was added |
| to maintain FileChangeListeners that should be notified if some change in Repository occures. |
| </description> |
| <class package="org.openide.filesystems" name="Repository"/> |
| </change> |
| <change id="FileSystem.PROP_DISPLAY_NAME"> |
| <api name="filesystems"/> |
| <summary>New property FileSystem.PROP_DISPLAY_NAME was added </summary> |
| <version major="2" minor="1"/> |
| <date day="17" month="1" year="2002"/> |
| <author login="rmatous"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| <code>FileSystem.PROP_DISPLAY_NAME</code> added to |
| notify a change in the display name. |
| </description> |
| <class package="org.openide.filesystems" name="FileSystem"/> |
| </change> |
| <change> |
| <api name="filesystems"/> |
| <summary>Propagate masks flag for multi-filesystems</summary> |
| <date day="23" month="11" year="2000"/> |
| <author login="jglick"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| <code>setPropagateMasks</code> and <code>getPropagateMasks</code> added to |
| make it easier to compose multi filesystems inside other multi filesystems. |
| </description> |
| <class package="org.openide.filesystems" name="MultiFileSystem"/> |
| </change> |
| <change id='mfs-find-action' > |
| <api name="filesystems"/> |
| <summary> |
| <code>MultiFileSystem</code> finds actions on a set of files specially</summary> |
| <date day="6" month="12" year="2000"/> |
| <compatibility modification="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" addition="no" deletion="no"/> |
| <description> |
| Method: <code>getActions(final Set foSet)</code> was added, which should |
| provide a Set of <code>FileObject</code>s to run the actions on. This method overloads |
| default behavior of <code>FileSystem.getActions(final Set foSet)</code>. |
| </description> |
| <class package="org.openide.filesystems" name="MultiFileSystem"/> |
| </change> |
| <change> |
| <api name="filesystems"/> |
| <summary>MIME lookup by extension made friendlier for C/C++</summary> |
| <date day="11" month="9" year="2000"/> |
| <author login="jglick"/> |
| <compatibility modification="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" addition="no" deletion="no"/> |
| <description> |
| MIME types no longer include C/C++ extensions by default; and file |
| extension lookups give preference to case-sensitive matches but also work |
| with case-insensitive matches by default. |
| </description> |
| <class package="org.openide.filesystems" name="FileUtil"/> |
| </change> |
| <change> |
| <api name="filesystems"/> |
| <summary>Find a MIME type for a file object using resolvers</summary> |
| <date day="5" month="2" year="2001"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| Added new public method <code>getMIMEType(FileObject)</code>. Resolves |
| MIME type. Registered resolvers are invoked and used to achieve this goal. |
| Resolvers must subclass <a href="#MIMEResolver"> |
| <code>MIMEResolver</code> |
| </a>. If |
| resolvers do not recognize MIME type then MIME type is obtained for a |
| well-known extension. |
| </description> |
| <class package="org.openide.filesystems" name="FileUtil"/> |
| </change> |
| <change id="MultiFileSystem.createWritableOnForRename"> |
| <api name="filesystems"/> |
| <summary>Method createWritableOnForRename in MultiFileSystem was added</summary> |
| <version major="1" minor="34"/> |
| <date day="30" month="8" year="2001"/> |
| <author login="rmatous"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| Protected method <code>createWritableOnForRename</code> in <code>MultiFileSystem</code> |
| was added. This method has the same meaning as <code>createWritableOn</code> but have two parameters: |
| oldName, newName. This method is called from <code>MultiFileObject.rename</code>. |
| </description> |
| <class package="org.openide.filesystems" name="MultiFileSystem"/> |
| </change> |
| <change id="FileEvent.firedFrom"> |
| <api name="filesystems"/> |
| <summary> |
| <code>FileEvent</code>s fired inside atomic actions can report from which atomic actions they were fired</summary> |
| <version major="1" minor="35"/> |
| <date day="21" month="9" year="2001"/> |
| <author login="rmatous"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| Method <code>boolean FileEvent.firedFrom(FileSystem.AtomicAction run)</code> returns true if this |
| <code>FileEvent</code> was fired from <code>run</code>. |
| </description> |
| <class package="org.openide.filesystems" name="FileEvent"/> |
| </change> |
| <change id="FileUtil.toFile-fromFile"> |
| <api name="filesystems"/> |
| <summary>Find a disk file from a file object or vice-versa</summary> |
| <version major="1" minor="29"/> |
| <date day="31" month="7" year="2001"/> |
| <author login="rmatous"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| Added method <code>public File toFile(FileObject)</code>. Finds |
| appropriate <code>java.io.File</code> to <code>FileObject</code> if |
| possible. If not possible then <code>null</code> is returned. |
| Also added method <code>public FileObject[] fromFile(File)</code>. Finds |
| appropriate <code>FileObject</code>s to <code>java.io.File</code> if |
| possible. If not possible then empty array is returned. More than one |
| <code>FileObject</code> may correspond to one <code>java.io.File</code> so |
| an array is returned. |
| </description> |
| <class package="org.openide.filesystems" name="FileUtil"/> |
| </change> |
| <change> |
| <api name="filesystems"/> |
| <summary>FileAttributeEvent's methods getName (), getOldValue (), getNewValue () can return null</summary> |
| <version major="1" minor="33"/> |
| <date day="24" month="8" year="2001"/> |
| <author login="rmatous"/> |
| <compatibility semantic="incompatible" modification="yes" binary="compatible" source="compatible" deprecation="no" addition="no" deletion="no"> |
| Code previously assuming that all <code>FileAttributeEvent</code> |
| fields were non-null may now be broken, and should check for |
| <code>null</code>s. |
| </compatibility> |
| <description> |
| <code>FileAttributeEvent</code>'s methods <code>getName ()</code>, |
| <code>getOldValue ()</code>, <code>getNewValue ()</code> can return <code>null</code>. |
| If <code>getName ()</code> returns null then this means that one of attributes were changed. If |
| <code>getName ()</code> returns <code>null</code> then there is supposed that all <code>FileAttributeEvent</code> |
| fields will return <code>null</code> also. |
| </description> |
| <class package="org.openide.filesystems" name="FileAttributeEvent"/> |
| </change> |
| <change> |
| <api name="filesystems"/> |
| <summary>Discover which filesystem a FileStateInvalidException is associated with</summary> |
| <version major="1" minor="30"/> |
| <date day="17" month="8" year="2001"/> |
| <author login="mschilling"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| Added method <code>public String getFileSystemName()</code>. This will |
| return the name of the filesystem containing the file with invalid |
| state if such information is available. |
| </description> |
| <class package="org.openide.filesystems" name="FileStateInvalidException"/> |
| </change> |
| <change id='repository-adapter-added' > |
| <api name="filesystems"/> |
| <summary> |
| <code>RepositoryAdapter</code> added</summary> |
| <date day="25" month="6" year="2000"/> |
| <author login="jglick"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| Added to make it easier to use <code>RepositoryListener</code>. |
| </description> |
| <class package="org.openide.filesystems" name="RepositoryAdapter"/> |
| </change> |
| <change> |
| <api name="filesystems"/> |
| <summary>Find known file objects starting from some point in the tree</summary> |
| <date day="10" month="8" year="2000"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| Added new protected method <code>existingFileObjects(FileObject)</code>. |
| Can be used to find all <code>FileObject</code>s in this filesystem with |
| the given predecessor. |
| </description> |
| <class package="org.openide.filesystems" name="AbstractFileSystem"/> |
| <branch name="boston"> |
| <date day="10" month="8" year="2000"/> |
| </branch> |
| </change> |
| <change> |
| <api name="filesystems"/> |
| <summary>Customizable references to known file objects</summary> |
| <date day="22" month="8" year="2000"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| Added new protected method |
| <code>Reference createReference(FileObject fo)</code>. This |
| method returns <code>WeakReference</code> of <code>obj</code> |
| (<code>new WeakReference (fo)</code>). If you subclass from |
| <code>AbstractFileSystem</code>, you can overload this method to return |
| another type of <code>Reference</code>. |
| </description> |
| <class package="org.openide.filesystems" name="AbstractFileSystem"/> |
| </change> |
| <change> |
| <api name="filesystems"/> |
| <summary>Find references to file objects by name</summary> |
| <date day="22" month="8" year="2000"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| Added new final protected method |
| <code>Reference findReference(String resourceName)</code>. This |
| method finds the reference associated with <code>resourceName</code>. |
| </description> |
| <class package="org.openide.filesystems" name="AbstractFileSystem"/> |
| </change> |
| <change> |
| <api name="filesystems"/> |
| <summary> |
| <code>AbstractFileSystem.refreshRoot</code> was of the wrong type</summary> |
| <date day="24" month="2" year="2000"/> |
| <compatibility modification="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" addition="no" deletion="no"> |
| First broken, later restored binary compatibility in trunk and |
| <code>boston</code>. The change should be source-code compatible, and is |
| made to be binary compatible as well. |
| </compatibility> |
| <description> |
| <code>refreshRoot</code> now returns <code>FileObject</code> rather than |
| the subclass <code>AbstractFileObject</code>. In fact the returned object |
| currently is always an <code>AbstractFileObject</code> but this subclass |
| is package-private so it was an API bug to mention it from an accessible |
| method. |
| </description> |
| <class package="org.openide.filesystems" name="AbstractFileSystem"/> |
| <!-- No boston branch tag, as change made before it. --> |
| </change> |
| <change> |
| <api name="filesystems"/> |
| <summary>Can mark files as being virtual</summary> |
| <date day="1" month="6" year="2001"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| Added new protected method <code>protected boolean checkVirtual(String |
| name)</code>.Tests if file really exists or is missing. Some operation on |
| it may be restricted if returns true. |
| </description> |
| <class package="org.openide.filesystems" name="AbstractFileSystem"/> |
| </change> |
| <change> |
| <api name="filesystems"/> |
| <summary>Can mark files as being important</summary> |
| <date day="1" month="6" year="2001"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| Added new protected method <code>protected void markImportant(String name, |
| boolean important)</code>. Mark the file as being important or |
| unimportant. |
| </description> |
| <class package="org.openide.filesystems" name="AbstractFileSystem"/> |
| </change> |
| <change> |
| <api name="filesystems"/> |
| <summary>Added <code>XMLFileSystem</code> |
| </summary> |
| <date day="1" month="11" year="2000"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| Added new <code>XMLFileSystem</code> that reads content of special XML |
| file and represents it as filesystem. This filesystem is used by modules |
| to provide their own content of menus, toolbars, templates, component |
| palette, etc. |
| </description> |
| <class package="org.openide.filesystems" name="XMLFileSystem"/> |
| </change> |
| <change> |
| <api name="filesystems"/> |
| <summary>Get default <code>Repository</code> from within Filesystems API</summary> |
| <date day="7" month="2" year="2001"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| Added method <code>Repository.getDefault()</code> that allows standalone |
| tools (using just filesystems library) without access to |
| <code>TopManager</code> to get the default repository of the system. |
| </description> |
| <class package="org.openide.filesystems" name="Repository"/> |
| </change> |
| <change id='not-a-cookie' > |
| <api name="filesystems"/> |
| <summary> |
| <code>Repository</code> is not a cookie</summary> |
| <date day="8" month="1" year="2001"/> |
| <author login="jtulach"/> |
| <compatibility source="incompatible" modification="yes" binary="compatible" semantic="compatible" deprecation="no" addition="no" deletion="no"> |
| Code that used <code>Repository</code> as cookie should be changed to: |
| <pre> |
| ic = (<span class="type">InstanceCookie</span>)node.getCookie(InstanceCookie.<span class="keyword">class</span>); |
| <span class="keyword">if</span> (ic != <span class="constant">null</span> && Repository.<span class="keyword">class</span>.isAssignableFrom(ic.instanceCookie())) { |
| <span class="comment">// do stuff |
| </span>} |
| </pre> |
| </compatibility> |
| <description> |
| <code>Repository</code> has been changed not to implement the |
| <code>Node.Cookie</code> interface. The reason for such change is that |
| this was the only place where filesystems package depended on another part |
| in the IDE. |
| </description> |
| <class package="org.openide.filesystems" name="Repository"/> |
| </change> |
| <change> |
| <api name="filesystems"/> |
| <summary>Test if a file object is virtual</summary> |
| <date day="1" month="6" year="2001"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| Added new method <code>public isVirtual</code>. Tests if file really |
| exists or is missing. Some operation on it may be restricted. Return value |
| true indicates that the file is missing. |
| </description> |
| <class package="org.openide.filesystems" name="FileObject"/> |
| </change> |
| <change id="FileObject.delete-without-lock"> |
| <api name="filesystems"/> |
| <summary>Simplified file object deletion</summary> |
| <version major="1" minor="15"/> |
| <date day="25" month="6" year="2001"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| Added method <code>public final void delete()</code>. |
| <code>FileObject</code> is locked before delete and finally this lock is |
| released. |
| </description> |
| <class package="org.openide.filesystems" name="FileObject"/> |
| </change> |
| <change id="FileObject.createData-without-ext"> |
| <api name="filesystems"/> |
| <summary>Create file object without extension</summary> |
| <version major="1" minor="17"/> |
| <date day="27" month="6" year="2001"/> |
| <author login="rmatous"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| Added convenience method <code>public FileObject createData(String name) |
| throws IOException</code>. Creates new data file in this folder with the |
| specified name. Plainly calls <code>createData(name,"")</code>. |
| </description> |
| <class package="org.openide.filesystems" name="FileObject"/> |
| </change> |
| <change> |
| <api name="filesystems"/> |
| <summary>Create expected file events</summary> |
| <date day="29" month="1" year="2001"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| <code>FileEvent</code> and subclass constructors may take a parameter |
| <code>boolean expected</code>. |
| </description> |
| <class package="org.openide.filesystems" name="FileEvent"/> |
| <class package="org.openide.filesystems" name="FileAttributeEvent"/> |
| <class package="org.openide.filesystems" name="FileRenameEvent"/> |
| </change> |
| <change id="MIMEResolver"> |
| <api name="filesystems"/> |
| <summary>Added <code>MIMEResolver</code> |
| </summary> |
| <date day="5" month="2" year="2001"/> |
| <author login="rmatous"/> |
| <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible" deprecation="no" deletion="no" modification="no"/> |
| <description> |
| Added new <code>MIMEResolver</code>. This class is intended as superclass |
| for individual resolvers. |
| </description> |
| <class package="org.openide.filesystems" name="MIMEResolver"/> |
| </change> |
| </changes> |
| <htmlcontents> |
| <head> |
| <title>Change History for the File Systems API</title> |
| <link rel="stylesheet" href="prose.css" type="text/css"/> |
| </head> |
| <body> |
| <p class="overviewlink"> |
| <a href="overview-summary.html">Overview</a> |
| </p> |
| <h1>Introduction</h1> |
| <h2>What do the Dates Mean?</h2> |
| <p> |
| The supplied dates indicate when the API change was made, on the CVS |
| trunk. From this you can generally tell whether the change should be |
| present in a given build or not; for trunk builds, simply whether it |
| was made before or after the change; for builds on a stabilization |
| branch, whether the branch was made before or after the given date. In |
| some cases corresponding API changes have been made both in the trunk |
| and in an in-progress stabilization branch, if they were needed for a |
| bug fix; this ought to be marked in this list. |
| </p> |
| <ul> |
| <li>The <code>release41</code> branch was made on Apr 03 '05 for use in the NetBeans 4.1 release. |
| Specification versions: 6.0 begins after this point.</li> |
| <li>The <code>release40</code> branch was made on Nov 01 '04 for use in the NetBeans 4.0 release. |
| Specification versions: 5.0 begins after this point.</li> |
| </ul> |
| <hr/> |
| <standard-changelists module-code-name="$codebase"/> |
| <hr/> |
| <p>@FOOTER@</p> |
| </body> |
| </htmlcontents> |
| </apichanges> |