All Downloads are FREE. Search and download functionalities are using the official Maven repository.

me.tfeng.play.plugins.AbstractPlugin Maven / Gradle / Ivy

package me.tfeng.play.plugins;

import org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor;
import org.springframework.context.ConfigurableApplicationContext;

import play.Application;
import play.Configuration;
import play.Plugin;

public class AbstractPlugin extends Plugin {

  private Application application;

  public AbstractPlugin(Application application) {
    this.application = application;
  }

  public  A getBean(Class clazz) {
    return getBean(null, clazz);
  }

  public  A getBean(String beanNameProperty, Class clazz) {
    String beanName =
        beanNameProperty == null ? null : getConfiguration().getString(beanNameProperty);
    if (beanName == null) {
      return getApplicationContext().getBean(clazz);
    } else {
      return getApplicationContext().getBean(beanName, clazz);
    }
  }

  @Override
  public void onStart() {
    AutowiredAnnotationBeanPostProcessor beanPostProcessor =
        new AutowiredAnnotationBeanPostProcessor();
    beanPostProcessor.setBeanFactory(getApplicationContext().getBeanFactory());
    beanPostProcessor.processInjection(this);
  }

  protected Application getApplication() {
    return application;
  }

  protected ConfigurableApplicationContext getApplicationContext() {
    return SpringPlugin.getInstance().getApplicationContext();
  }

  protected Configuration getConfiguration() {
    return application.configuration();
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy