Class LazyMetadataValue

  • All Implemented Interfaces:
    MetadataValue
    Direct Known Subclasses:
    FixedMetadataValue

    public class LazyMetadataValue
    extends MetadataValueAdapter
    The LazyMetadataValue class implements a type of metadata that is not computed until another plugin asks for it.

    By making metadata values lazy, no computation is done by the providing plugin until absolutely necessary (if ever). Additionally, LazyMetadataValue objects cache their values internally unless overridden by a LazyMetadataValue.CacheStrategy or invalidated at the individual or plugin level. Once invalidated, the LazyMetadataValue will recompute its value when asked.

    • Constructor Detail

      • LazyMetadataValue

        public LazyMetadataValue​(@NotNull
                                 Plugin owningPlugin,
                                 @NotNull
                                 Callable<Object> lazyValue)
        Initialized a LazyMetadataValue object with the default CACHE_AFTER_FIRST_EVAL cache strategy.
        Parameters:
        owningPlugin - the Plugin that created this metadata value.
        lazyValue - the lazy value assigned to this metadata value.
      • LazyMetadataValue

        public LazyMetadataValue​(@NotNull
                                 Plugin owningPlugin,
                                 @NotNull
                                 LazyMetadataValue.CacheStrategy cacheStrategy,
                                 @NotNull
                                 Callable<Object> lazyValue)
        Initializes a LazyMetadataValue object with a specific cache strategy.
        Parameters:
        owningPlugin - the Plugin that created this metadata value.
        cacheStrategy - determines the rules for caching this metadata value.
        lazyValue - the lazy value assigned to this metadata value.
      • LazyMetadataValue

        protected LazyMetadataValue​(@NotNull
                                    Plugin owningPlugin)
        Protected special constructor used by FixedMetadataValue to bypass standard setup.
        Parameters:
        owningPlugin - the owning plugin
    • Method Detail

      • value

        @Nullable
        public Object value()
        Description copied from interface: MetadataValue
        Fetches the value of this metadata item.
        Returns:
        the metadata value.
      • invalidate

        public void invalidate()
        Description copied from interface: MetadataValue
        Invalidates this metadata item, forcing it to recompute when next accessed.