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:
    ContentReader
    • Method Detail

      • 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:
        getWritableChannel(), RandomAccessFile.getChannel()
      • 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.