Interface ContentWriter

All Superinterfaces:
ContentAccessor

@AlfrescoPublicApi public interface ContentWriter extends ContentAccessor
Represents a handle to write specific content. Content may only be accessed once per instance.

Implementations of this interface might be Serializable but client code could should check suitability before attempting to serialize it.

Implementations that are able to provide inter-VM streaming, such as accessing WebDAV, would be Serializable. An accessor that has to access a local file on the server could not provide inter-VM streaming unless it specifically makes remote calls and opens sockets, etc.

Author:
Derek Hulley
See Also:
  • Method Details

    • getReader

      ContentReader getReader() throws ContentIOException
      Convenience method to get a reader onto newly written content. This method will return null if the content has not yet been written by the writer or if the output stream is still open.
      Returns:
      Returns a reader onto the underlying content that this writer will or has written to
      Throws:
      ContentIOException
    • isClosed

      boolean isClosed()
      Convenience method to find out if this writer has been closed. Once closed, the content can no longer be written to and it become possible to get readers onto the written content.
      Returns:
      Return true if the content output stream has been used and closed otherwise false.
    • getWritableChannel

      WritableByteChannel getWritableChannel() throws ContentIOException
      Provides low-level access to write to repository content.

      The channel returned to the client should remain open (subject to timeouts) until closed by the client. All lock detection, read-only access and other concurrency issues are dealt with during this operation. It remains possible that implementations will throw exceptions when the channel is closed.

      The stream will notify any listeners according to the listener interface.

      Returns:
      Returns a channel with which to write content
      Throws:
      ContentIOException
    • getFileChannel

      FileChannel getFileChannel(boolean truncate) throws ContentIOException
      Provides read-write, random-access to the underlying content. In general, this method should be considered more expensive than the sequential-access method, getWritableChannel().

      Underlying implementations use the truncate parameter to determine the most effective means of providing access to the content.

      Parameters:
      truncate - true to start with zero length content
      Returns:
      Returns a random-access channel onto the content
      Throws:
      ContentIOException
      See Also:
    • getContentOutputStream

      OutputStream getContentOutputStream() throws ContentIOException
      Get a stream to write to the underlying channel.
      Returns:
      Returns an output stream onto the underlying channel
      Throws:
      ContentIOException
      See Also:
    • putContent

      void putContent(ContentReader reader) throws ContentIOException
      Copies content from the reader.

      All resources will be closed automatically.

      Parameters:
      reader - the reader acting as the source of the content
      Throws:
      ContentIOException
      See Also:
    • putContent

      void putContent(InputStream is) throws ContentIOException
      Puts content to the repository

      All resources will be closed automatically.

      Parameters:
      is - the input stream from which the content will be read
      Throws:
      ContentIOException
      See Also:
    • putContent

      void putContent(File file) throws ContentIOException
      Puts content to the repository direct from file

      All resources will be closed automatically.

      Parameters:
      file - the file to load the content from
      Throws:
      ContentIOException
      See Also:
    • putContent

      void putContent(String content) throws ContentIOException
      Puts content to the repository direct from String.

      If the encoding is known then it will be used otherwise the default system String to byte[] conversion will be used.

      All resources will be closed automatically.

      Parameters:
      content - a string representation of the content
      Throws:
      ContentIOException
      See Also:
    • guessMimetype

      void guessMimetype(String filename)
      Attempts to guess the mimetype of the Content based on the contents and the filename.

      If the content has already been written, then the mimetype guessing will occur immediately. If the content has yet to be written, then the guessing will occur once the content write has completed.

      Parameters:
      filename - The filename of the content (if known)
    • guessEncoding

      void guessEncoding()
      Attempts to guess the encoding of the Content based on the contents.

      If the content has already been written, then the encoding guessing will occur immediately. If the content has yet to be written, then the guessing will occur once the content write has completed.