Class DefaultSegmentWriter

  • All Implemented Interfaces:
    SegmentWriter

    public class DefaultSegmentWriter
    extends java.lang.Object
    implements SegmentWriter
    Converts nodes, properties, values, etc. to records and persists them with the help of a WriteOperationHandler. All public methods of this class are thread safe if and only if the WriteOperationHandler passed to the constructor is thread safe.
    • Field Detail

      • MAX_MAP_RECORD_SIZE_KEY

        protected static final java.lang.String MAX_MAP_RECORD_SIZE_KEY
        See Also:
        Constant Field Values
    • Constructor Detail

      • DefaultSegmentWriter

        public DefaultSegmentWriter​(@NotNull
                                    @NotNull SegmentStore store,
                                    @NotNull
                                    @NotNull SegmentReader reader,
                                    @NotNull
                                    @NotNull SegmentIdProvider idProvider,
                                    @Nullable
                                    @Nullable BlobStore blobStore,
                                    @NotNull
                                    @NotNull WriterCacheManager cacheManager,
                                    @NotNull
                                    @NotNull org.apache.jackrabbit.oak.segment.WriteOperationHandler writeOperationHandler,
                                    int binariesInlineThreshold)
        Create a new instance of a SegmentWriter. Note the thread safety properties pointed out in the class comment.
        Parameters:
        store - store to write to
        reader - segment reader for the store
        idProvider - segment id provider for the store
        blobStore - the blob store or null for inlined blobs
        cacheManager - cache manager instance for the de-duplication caches used by this writer
        writeOperationHandler - handler for write operations.
        binariesInlineThreshold - threshold in bytes, specifying the limit up to which blobs will be inlined
    • Method Detail

      • flush

        public void flush()
                   throws java.io.IOException
        Specified by:
        flush in interface SegmentWriter
        Throws:
        java.io.IOException
      • writeBlob

        @NotNull
        public @NotNull RecordId writeBlob​(@NotNull
                                           @NotNull Blob blob)
                                    throws java.io.IOException
        Description copied from interface: SegmentWriter
        Write a blob (as list of block records)
        Specified by:
        writeBlob in interface SegmentWriter
        Parameters:
        blob - blob to write
        Returns:
        the record id of the blob written
        Throws:
        java.io.IOException
      • writeStream

        @NotNull
        public @NotNull RecordId writeStream​(@NotNull
                                             @NotNull java.io.InputStream stream)
                                      throws java.io.IOException
        Description copied from interface: SegmentWriter
        Writes a stream value record. The given stream is consumed and closed by this method.
        Specified by:
        writeStream in interface SegmentWriter
        Parameters:
        stream - stream to be written
        Returns:
        the record id of the stream written
        Throws:
        java.io.IOException - if the input stream could not be read or the output could not be written
      • writeNode

        @NotNull
        public @NotNull RecordId writeNode​(@NotNull
                                           @NotNull NodeState state,
                                           @Nullable
                                           @Nullable Buffer stableIdBytes)
                                    throws java.io.IOException
        Description copied from interface: SegmentWriter
        Write a node state. If non null, the passed stableId will be assigned to the persisted node. Otherwise the stable id will be inferred from state.
        Specified by:
        writeNode in interface SegmentWriter
        Parameters:
        state - node state to write
        stableIdBytes - the stableId that should be assigned to the node or null.
        Returns:
        the record id of the segment node state written
        Throws:
        java.io.IOException