< prev index next >

src/java.compiler/share/classes/javax/tools/JavaFileManager.java

Print this page




  62  *   <cite>The Java&trade; Language Specification</cite>,
  63  *   section 13.1 "The Form of a Binary".
  64  * </p></blockquote>
  65  *
  66  * <p>The case of names is significant.  All names should be treated
  67  * as case-sensitive.  For example, some file systems have
  68  * case-insensitive, case-aware file names.  File objects representing
  69  * such files should take care to preserve case by using {@link
  70  * java.io.File#getCanonicalFile} or similar means.  If the system is
  71  * not case-aware, file objects must use other means to preserve case.
  72  *
  73  * <p><em><a id="relative_name">Relative names</a>:</em> some
  74  * methods in this interface use relative names.  A relative name is a
  75  * non-null, non-empty sequence of path segments separated by '/'.
  76  * '.' or '..'  are invalid path segments.  A valid relative name must
  77  * match the "path-rootless" rule of <a
  78  * href="http://www.ietf.org/rfc/rfc3986.txt">RFC&nbsp;3986</a>,
  79  * section&nbsp;3.3.  Informally, this should be true:
  80  *
  81  * <!-- URI.create(relativeName).normalize().getPath().equals(relativeName) -->
  82  * <pre>  URI.{@linkplain java.net.URI#create create}(relativeName).{@linkplain java.net.URI#normalize normalize}().{@linkplain java.net.URI#getPath getPath}().equals(relativeName)</pre>
  83  *
  84  * <p>All methods in this interface might throw a SecurityException.
  85  *
  86  * <p>An object of this interface is not required to support
  87  * multi-threaded access, that is, be synchronized.  However, it must
  88  * support concurrent access to different file objects created by this
  89  * object.
  90  *
  91  * <p><em>Implementation note:</em> a consequence of this requirement
  92  * is that a trivial implementation of output to a {@linkplain
  93  * java.util.jar.JarOutputStream} is not a sufficient implementation.
  94  * That is, rather than creating a JavaFileObject that returns the
  95  * JarOutputStream directly, the contents must be cached until closed
  96  * and then written to the JarOutputStream.
  97  *
  98  * <p>Unless explicitly allowed, all methods in this interface might
  99  * throw a NullPointerException if given a {@code null} argument.
 100  *
 101  * @author Peter von der Ah&eacute;
 102  * @author Jonathan Gibbons




  62  *   <cite>The Java&trade; Language Specification</cite>,
  63  *   section 13.1 "The Form of a Binary".
  64  * </p></blockquote>
  65  *
  66  * <p>The case of names is significant.  All names should be treated
  67  * as case-sensitive.  For example, some file systems have
  68  * case-insensitive, case-aware file names.  File objects representing
  69  * such files should take care to preserve case by using {@link
  70  * java.io.File#getCanonicalFile} or similar means.  If the system is
  71  * not case-aware, file objects must use other means to preserve case.
  72  *
  73  * <p><em><a id="relative_name">Relative names</a>:</em> some
  74  * methods in this interface use relative names.  A relative name is a
  75  * non-null, non-empty sequence of path segments separated by '/'.
  76  * '.' or '..'  are invalid path segments.  A valid relative name must
  77  * match the "path-rootless" rule of <a
  78  * href="http://www.ietf.org/rfc/rfc3986.txt">RFC&nbsp;3986</a>,
  79  * section&nbsp;3.3.  Informally, this should be true:
  80  *
  81  * <!-- URI.create(relativeName).normalize().getPath().equals(relativeName) -->
  82  * <pre>  URI.{@linkplain java.net.URI#create create}(relativeName).{@linkplain java.net.URI#normalize() normalize}().{@linkplain java.net.URI#getPath getPath}().equals(relativeName)</pre>
  83  *
  84  * <p>All methods in this interface might throw a SecurityException.
  85  *
  86  * <p>An object of this interface is not required to support
  87  * multi-threaded access, that is, be synchronized.  However, it must
  88  * support concurrent access to different file objects created by this
  89  * object.
  90  *
  91  * <p><em>Implementation note:</em> a consequence of this requirement
  92  * is that a trivial implementation of output to a {@linkplain
  93  * java.util.jar.JarOutputStream} is not a sufficient implementation.
  94  * That is, rather than creating a JavaFileObject that returns the
  95  * JarOutputStream directly, the contents must be cached until closed
  96  * and then written to the JarOutputStream.
  97  *
  98  * <p>Unless explicitly allowed, all methods in this interface might
  99  * throw a NullPointerException if given a {@code null} argument.
 100  *
 101  * @author Peter von der Ah&eacute;
 102  * @author Jonathan Gibbons


< prev index next >