Class BuilderBase<T extends BuilderBase<T>>

    • Field Detail

      • loadedExtensions

        private final java.util.HashSet<java.lang.Class<?>> loadedExtensions
      • extensionApiPoints

        private final java.util.HashMap<java.lang.Class<?>,​java.util.HashSet<java.lang.Object>> extensionApiPoints
      • currentExtension

        private Extension currentExtension
    • Constructor Detail

      • BuilderBase

        protected BuilderBase​(@Nullable
                              @Nullable DataHolder options)
      • BuilderBase

        protected BuilderBase()
    • Method Detail

      • removeApiPoint

        protected abstract void removeApiPoint​(@NotNull
                                               @NotNull java.lang.Object apiPoint)
        Remove apiPoint from state information
        Parameters:
        apiPoint - api point object
      • preloadExtension

        protected abstract void preloadExtension​(@NotNull
                                                 @NotNull Extension extension)
        Preload operation for extension, perform any data config and other operation needed for loading extension
        Parameters:
        extension - to preload
      • loadExtension

        protected abstract boolean loadExtension​(@NotNull
                                                 @NotNull Extension extension)
        Load extension if it is valid
        Parameters:
        extension - to load
        Returns:
        true if extension was loaded
      • extensions

        @NotNull
        public final T extensions​(@NotNull
                                  @NotNull java.util.Collection<? extends Extension> extensions)
        Parameters:
        extensions - extensions to load
        Returns:
        this
      • build

        @NotNull
        public abstract @NotNull java.lang.Object build()
        Returns:
        actual instance the builder is supposed to build
      • addExtensionApiPoint

        protected void addExtensionApiPoint​(@NotNull
                                            @NotNull java.lang.Object apiPoint)
        Call to add extension API point to track
        Parameters:
        apiPoint - point registered
      • set

        @NotNull
        public <V> @NotNull MutableDataSet set​(@NotNull
                                               @NotNull DataKey<V> key,
                                               @NotNull
                                               V value)
        Tracks keys set by extension initialization
        Specified by:
        set in interface MutableDataHolder
        Overrides:
        set in class MutableDataSet
        Type Parameters:
        V - data type of the data referred by the key
        Parameters:
        key - data key
        value - value for the key
        Returns:
        builder
      • set

        @NotNull
        public <V> @NotNull MutableDataSet set​(@NotNull
                                               @NotNull NullableDataKey<V> key,
                                               @Nullable
                                               V value)
        Description copied from interface: MutableDataHolder
        Store the given value for the key
        Specified by:
        set in interface MutableDataHolder
        Overrides:
        set in class MutableDataSet
        Type Parameters:
        V - data type of the data referred by the key
        Parameters:
        key - data key
        value - value to store
        Returns:
        mutable data holder for chained calls
      • get

        @Deprecated
        public <V> V get​(@NotNull
                         @NotNull DataKey<V> key)
        Deprecated.
        use key.get(dataHolder) instead, which will do the same thing an carries nullable information for the data
        Get the given key, if it does not exist then use the key's factory to create a new value and put it into the collection so that the following get of the same key will find a value
        Type Parameters:
        V - Type returned by key
        Parameters:
        key - data key
        Returns:
        return stored value or newly created value
      • loadExtensions

        protected void loadExtensions()
      • removeExtensions

        public static DataHolder removeExtensions​(@NotNull
                                                  @NotNull DataHolder options,
                                                  @NotNull
                                                  @NotNull java.util.Collection<java.lang.Class<? extends Extension>> excludeExtensions)
        Remove given extensions from options[EXTENSIONS] data key.
        Parameters:
        options - options where EXTENSIONS key is set
        excludeExtensions - collection of extension classes to remove from extensions
        Returns:
        modified options if removed and options were immutable or the same options if nothing to remove or options were mutable.