001package io.avaje.inject.spi;
002
003import io.avaje.inject.BeanScopeBuilder;
004
005import java.lang.reflect.Type;
006
007/**
008 * A Plugin that can be applied when creating a bean scope.
009 *
010 * <p>Typically, a plugin might provide a default dependency via {@link
011 * BeanScopeBuilder#provideDefault(Type, java.util.function.Supplier)}.
012 *
013 * @deprecated migrate to {@link InjectPlugin}
014 */
015@Deprecated(forRemoval = true)
016public interface Plugin extends InjectPlugin {
017
018  /**
019   * Apply the plugin to the scope builder.
020   */
021  @Override
022  void apply(BeanScopeBuilder builder);
023
024  /**
025   * Return the classes that the plugin provides.
026   */
027  @Override
028  default Class<?>[] provides() {
029    return EMPTY_CLASSES;
030  }
031
032  /**
033   * Return the aspect classes that the plugin provides.
034   */
035  @Override
036  default Class<?>[] providesAspects() {
037    return EMPTY_CLASSES;
038  }
039}