Class DoubleCheckedCreator<T>

java.lang.Object
org.jasig.portlet.newsreader.spring.DoubleCheckedCreator<T>
Direct Known Subclasses:
SingletonDoubleCheckedCreator

public abstract class DoubleCheckedCreator<T> extends Object
Implementation of double-checked locking for object creation using a ReadWriteLock
Since:
5.1.1
Version:
$Revision$
Author:
Eric Dalquist
  • Field Details

    • logger

      protected final org.slf4j.Logger logger
    • readLock

      protected final Lock readLock
    • writeLock

      protected final Lock writeLock
  • Constructor Details

    • DoubleCheckedCreator

      public DoubleCheckedCreator()

      Constructor for DoubleCheckedCreator.

    • DoubleCheckedCreator

      public DoubleCheckedCreator(ReadWriteLock readWriteLock)

      Constructor for DoubleCheckedCreator.

      Parameters:
      readWriteLock - a ReadWriteLock object
  • Method Details

    • create

      protected abstract T create(Object... args)

      create.

      Parameters:
      args - Arguments to use when creating the object
      Returns:
      A newly created object
    • retrieve

      protected abstract T retrieve(Object... args)

      retrieve.

      Parameters:
      args - Arguments to use when retrieving the object
      Returns:
      An existing object if available
    • invalid

      protected boolean invalid(T value, Object... args)
      The default impl returns true if value is null.
      Parameters:
      value - The object to validate
      args - Arguments to use when validating the object
      Returns:
      true if the object is invalid and should be created, false if not.
    • get

      public final T get(Object... args)
      Double checking retrieval/creation of an object
      Parameters:
      args - Optional arguments to pass to retrieve(Object...), create(Object...), and invalid(Object, Object...).
      Returns:
      A retrieved or created object.