Class CacheMap<T,K>

java.lang.Object
com.jidesoft.utils.CacheMap<T,K>
Direct Known Subclasses:
CacheMap

public class CacheMap<T,K> extends Object
CacheMap is a two-level HashMap. It uses Class as the key and you can map the key to an object and a context as a pair. We use context because we want to register multiple objects with the same Class. register(Class, Object, Object) is the method to register a new entry. getRegisteredObject(Class, Object) will allow you to look up the object by specifying the Class and the context.
  • Field Details

  • Constructor Details

    • CacheMap

      public CacheMap(K defaultContext)
      Constructs a CacheMap.
      Parameters:
      defaultContext - the default context.
  • Method Details

    • getCache

      protected com.jidesoft.utils.CacheMap.Cache<K,T> getCache(Class<?> clazz)
    • getKeys

      public K[] getKeys(Class<?> clazz, K[] a)
      Gets the secondary keys that are registered with the class in CacheMap.
      Parameters:
      clazz - the class
      a - the array to receive the keys.
      Returns:
      the secondary keys.
    • initCache

      protected com.jidesoft.utils.CacheMap.Cache<K,T> initCache(Class<?> clazz)
    • register

      public void register(Class<?> clazz, T object, K context)
      Registers an object with the specified clazz and object.
      Parameters:
      clazz - the class which is used as the key.
      object - the object, or the value of the mapping
      context - the secondary key. It is used to register multiple objects to the same primary key (the clazz parameter in this case).
    • unregister

      public void unregister(Class<?> clazz, K context)
      Unregisters the object associated with the specified class and context.
      Parameters:
      clazz - the class
      context - the context
    • getRegisteredObject

      public T getRegisteredObject(Class<?> clazz, K context)
      Gets registered object from CacheMap. The algorithm used to look up is
      1. First check for exact match with clazz and context.
      2. If didn't find, look for interfaces that clazz implements using the exact context.
      3. If still didn't find, look for super class of clazz using the exact context.
      4. If still didn't find, using the exact clazz with default context.
      5. If still didn't find, return null.
      If found a match in step 1, 2, 3 or 4, it will return the registered object immediately.
      Parameters:
      clazz - the class which is used as the primary key.
      context - the context which is used as the secondary key. This parameter could be null in which case the default context is used.
      Returns:
      registered object the object associated with the class and the context.
    • getMatchRegisteredObject

      public T getMatchRegisteredObject(Class<?> clazz, K context)
      Gets the exact match registered object. Different from getRegisteredObject(Class, Object) which will try different context and super classes and interfaces to find match. This method will do an exact match.
      Parameters:
      clazz - the class which is used as the primary key.
      context - the context which is used as the secondary key. This parameter could be null in which case the default context is used.
      Returns:
      registered object the object associated with the class and the context.
    • getValues

      public List<T> getValues()
    • remove

      public void remove(Class<?> clazz)
      Remove all registrations for the designated class.
      Parameters:
      clazz - the class
    • clear

      public void clear()
    • addRegistrationListener

      public void addRegistrationListener(RegistrationListener l)
      Adds a listener to the list that's notified each time a change to the registration occurs.
      Parameters:
      l - the RegistrationListener
    • removeRegistrationListener

      public void removeRegistrationListener(RegistrationListener l)
      Removes a listener from the list that's notified each time a change to the registration occurs.
      Parameters:
      l - the RegistrationListener
    • getRegistrationListeners

      public RegistrationListener[] getRegistrationListeners()
      Returns an array of all the registration listeners registered on this registration.
      Returns:
      all of this registration's RegistrationListeners or an empty array if no registration listeners are currently registered
      See Also:
    • fireRegistrationChanged

      public void fireRegistrationChanged(RegistrationEvent e)
      Forwards the given notification event to all RegistrationListeners that registered themselves as listeners for this table model.
      Parameters:
      e - the event to be forwarded
      See Also: