org.apache.commons.collections

## Class BufferUtils

- java.lang.Object
- - org.apache.commons.collections.BufferUtils

-     public class BufferUtils
      extends Object

  Provides utility methods and decorators for `Buffer` instances.
  Since:
    Commons Collections 2.1
  Version:
    $Revision: 646777 $ $Date: 2008-04-10 14:33:15 +0200 (Thu, 10 Apr 2008) $
  Author:
    Paul Jack, Stephen Colebourne

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static Buffer` | `EMPTY_BUFFER` An empty unmodifiable buffer.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `BufferUtils()` `BufferUtils` should not normally be instantiated.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `static Buffer` | `blockingBuffer(Buffer buffer)` Returns a synchronized buffer backed by the given buffer that will block on `Buffer.get()` and `Buffer.remove()` operations.
    `static Buffer` | `blockingBuffer(Buffer buffer, long timeoutMillis)` Returns a synchronized buffer backed by the given buffer that will block on `Buffer.get()` and `Buffer.remove()` operations until `timeout` expires.
    `static Buffer` | `boundedBuffer(Buffer buffer, int maximumSize)` Returns a synchronized buffer backed by the given buffer that will block on `Collection.add(Object)` and `Collection.addAll(java.util.Collection)` until enough object(s) are removed from the buffer to allow the object(s) to be added and still maintain the maximum size.
    `static Buffer` | `boundedBuffer(Buffer buffer, int maximumSize, long timeoutMillis)` Returns a synchronized buffer backed by the given buffer that will block on `Collection.add(Object)` and `Collection.addAll(java.util.Collection)` until enough object(s) are removed from the buffer to allow the object(s) to be added and still maintain the maximum size or the timeout expires.
    `static Buffer` | `predicatedBuffer(Buffer buffer, Predicate predicate)` Returns a predicated (validating) buffer backed by the given buffer.
    `static Buffer` | `synchronizedBuffer(Buffer buffer)` Returns a synchronized buffer backed by the given buffer.
    `static Buffer` | `transformedBuffer(Buffer buffer, Transformer transformer)` Returns a transformed buffer backed by the given buffer.
    `static Buffer` | `typedBuffer(Buffer buffer, Class type)` Returns a typed buffer backed by the given buffer.
    `static Buffer` | `unmodifiableBuffer(Buffer buffer)` Returns an unmodifiable buffer backed by the given buffer.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### EMPTY_BUFFER

          public static final Buffer EMPTY_BUFFER

      An empty unmodifiable buffer.

  - ### Constructor Detail

    - #### BufferUtils

          public BufferUtils()

      `BufferUtils` should not normally be instantiated.

  - ### Method Detail

    - #### synchronizedBuffer

          public static Buffer synchronizedBuffer(Buffer buffer)

      Returns a synchronized buffer backed by the given buffer. Much like the synchronized collections returned by `Collections`, you must manually synchronize on the returned buffer's iterator to avoid non-deterministic behavior:

           Buffer b = BufferUtils.synchronizedBuffer(myBuffer);
           synchronized (b) {
               Iterator i = b.iterator();
               while (i.hasNext()) {
                   process (i.next());
               }
           }

      Parameters:
        `buffer` - the buffer to synchronize, must not be null
      Returns:
        a synchronized buffer backed by that buffer
      Throws:
        `IllegalArgumentException` - if the Buffer is null

    - #### blockingBuffer

          public static Buffer blockingBuffer(Buffer buffer)

      Returns a synchronized buffer backed by the given buffer that will block on `Buffer.get()` and `Buffer.remove()` operations. If the buffer is empty, then the `Buffer.get()` and `Buffer.remove()` operations will block until new elements are added to the buffer, rather than immediately throwing a `BufferUnderflowException`.
      Parameters:
        `buffer` - the buffer to synchronize, must not be null
      Returns:
        a blocking buffer backed by that buffer
      Throws:
        `IllegalArgumentException` - if the Buffer is null

    - #### blockingBuffer

          public static Buffer blockingBuffer(Buffer buffer,
                              long timeoutMillis)

      Returns a synchronized buffer backed by the given buffer that will block on `Buffer.get()` and `Buffer.remove()` operations until `timeout` expires. If the buffer is empty, then the `Buffer.get()` and `Buffer.remove()` operations will block until new elements are added to the buffer, rather than immediately throwing a `BufferUnderflowException`.
      Parameters:
        `buffer` - the buffer to synchronize, must not be null
        `timeoutMillis` - the timeout value in milliseconds, zero or less for no timeout
      Returns:
        a blocking buffer backed by that buffer
      Throws:
        `IllegalArgumentException` - if the Buffer is null
      Since:
        Commons Collections 3.2

    - #### boundedBuffer

          public static Buffer boundedBuffer(Buffer buffer,
                             int maximumSize)

      Returns a synchronized buffer backed by the given buffer that will block on `Collection.add(Object)` and `Collection.addAll(java.util.Collection)` until enough object(s) are removed from the buffer to allow the object(s) to be added and still maintain the maximum size.
      Parameters:
        `buffer` - the buffer to make bounded, must not be null
        `maximumSize` - the maximum size
      Returns:
        a bounded buffer backed by the given buffer
      Throws:
        `IllegalArgumentException` - if the given buffer is null
      Since:
        Commons Collections 3.2

    - #### boundedBuffer

          public static Buffer boundedBuffer(Buffer buffer,
                             int maximumSize,
                             long timeoutMillis)

      Returns a synchronized buffer backed by the given buffer that will block on `Collection.add(Object)` and `Collection.addAll(java.util.Collection)` until enough object(s) are removed from the buffer to allow the object(s) to be added and still maintain the maximum size or the timeout expires.
      Parameters:
        `buffer` - the buffer to make bounded, must not be null
        `maximumSize` - the maximum size
        `timeoutMillis` - the timeout value in milliseconds, zero or less for no timeout
      Returns:
        a bounded buffer backed by the given buffer
      Throws:
        `IllegalArgumentException` - if the given buffer is null
      Since:
        Commons Collections 3.2

    - #### unmodifiableBuffer

          public static Buffer unmodifiableBuffer(Buffer buffer)

      Returns an unmodifiable buffer backed by the given buffer.
      Parameters:
        `buffer` - the buffer to make unmodifiable, must not be null
      Returns:
        an unmodifiable buffer backed by that buffer
      Throws:
        `IllegalArgumentException` - if the Buffer is null

    - #### predicatedBuffer

          public static Buffer predicatedBuffer(Buffer buffer,
                                Predicate predicate)

      Returns a predicated (validating) buffer backed by the given buffer.

      Only objects that pass the test in the given predicate can be added to the buffer. Trying to add an invalid object results in an IllegalArgumentException. It is important not to use the original buffer after invoking this method, as it is a backdoor for adding invalid objects.

      Parameters:
        `buffer` - the buffer to predicate, must not be null
        `predicate` - the predicate used to evaluate new elements, must not be null
      Returns:
        a predicated buffer
      Throws:
        `IllegalArgumentException` - if the Buffer or Predicate is null

    - #### typedBuffer

          public static Buffer typedBuffer(Buffer buffer,
                           Class type)

      Returns a typed buffer backed by the given buffer.

      Only elements of the specified type can be added to the buffer.

      Parameters:
        `buffer` - the buffer to predicate, must not be null
        `type` - the type to allow into the buffer, must not be null
      Returns:
        a typed buffer
      Throws:
        `IllegalArgumentException` - if the buffer or type is null

    - #### transformedBuffer

          public static Buffer transformedBuffer(Buffer buffer,
                                 Transformer transformer)

      Returns a transformed buffer backed by the given buffer.

      Each object is passed through the transformer as it is added to the Buffer. It is important not to use the original buffer after invoking this method, as it is a backdoor for adding untransformed objects.

      Parameters:
        `buffer` - the buffer to predicate, must not be null
        `transformer` - the transformer for the buffer, must not be null
      Returns:
        a transformed buffer backed by the given buffer
      Throws:
        `IllegalArgumentException` - if the Buffer or Transformer is null

Copyright © 2001–2015 The Apache Software Foundation. All rights reserved.