ProcessorConfigurer

ProcessorConfigurer allows you to write your own class processor.

import xyz.failutee.mineject.bean.BeanProcessor;
import xyz.failutee.mineject.dependency.DependencyProvider;
import xyz.failutee.mineject.processor.ProcessorConfigurer;

public class ExampleProcessorConfigurer implements ProcessorConfigurer {

    private final DependencyProvider dependencyProvider;

    public ExampleProcessorConfigurer(DependencyProvider dependencyProvider) {
        this.dependencyProvider = dependencyProvider;
    }

    @Override
    public void configureProcessor(BeanProcessor beanProcessor) {
        /*
         * The parameters (TestAnnotation.class & Object.class)
         * simply mean that any class that has TestAnnotation annotations
         * and is an Object (really any class) will be processed
        */
        beanProcessor.onProcess(TestAnnotation.class, Object.class, ((testAnnotation, object) -> {
            /*
             * You want to use the #getOrCreate method here because
             * the object you want to gett may not be created yet
            */
            TestManager testManager = this.dependencyProvider.getOrCreate(TestManager.class);
            testManager.test();
        }))
        // The annotation parameter is optional, and you do not need to use it
        .onProcess(Object.class, (object) -> {
            // Code...
        });
    }
}

Register ProcessorConfigurer

Mineject mineject = MinejectFactory.create()
  .dependencySettings((settings, context) -> {
      settings.packageName("xyz.failutee.test");
      settings.processorConfigurer(new ExampleProcessorConfigurer(context.dependencyProvider()));
  })
  ...

Last updated