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

com.github.chanhohang.akka.spring.SpringExtensions Maven / Gradle / Ivy

package com.github.chanhohang.akka.spring;

import akka.actor.AbstractExtensionId;
import akka.actor.ExtendedActorSystem;
import akka.actor.Extension;
import akka.actor.Props;

import org.springframework.context.ApplicationContext;

public class SpringExtensions extends AbstractExtensionId {

  /**
   * The identifier used to access the SpringExtension.
   */
  public static final SpringExtensions springExtProvider = new SpringExtensions();

  /**
   * Is used by Akka to instantiate the Extension identified by this ExtensionId, internal use only.
   */
  @Override
  public SpringExt createExtension(ExtendedActorSystem system) {
    return new SpringExt();
  }

  /**
   * The Extension implementation.
   */
  public static class SpringExt implements Extension {
    private volatile ApplicationContext applicationContext;

    /**
     * Used to initialize the Spring application context for the extension.
     * 
     * @param applicationContext
     *          see {@link ApplicationContext}
     */
    public void initialize(ApplicationContext applicationContext) {
      this.applicationContext = applicationContext;
    }

    /**
     * Create a Props for the specified actorBeanName using the SpringActorProducer class.
     *
     * @param actorBeanName
     *          The name of the actor bean to create Props for
     * @return a Props that will create the named actor bean using Spring
     */
    public Props props(String actorBeanName) {
      return Props.create(SpringActorProducer.class, applicationContext, actorBeanName);
    }
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy