package won.matcher.service.common.spring; import akka.actor.Actor; import akka.actor.IndirectActorProducer; import org.springframework.context.ApplicationContext; /** * An actor producer that lets Spring create the Actor instances. */ public final class SpringActorProducer implements IndirectActorProducer { private final ApplicationContext applicationContext; private final Class<? extends Actor> actorClass; private final Object params[]; public SpringActorProducer(final ApplicationContext applicationContext, final Class<? extends Actor> actorClass) { this.applicationContext = applicationContext; this.actorClass = actorClass; this.params = null; } public SpringActorProducer(final ApplicationContext applicationContext, final Class<? extends Actor> actorClass, Object... params) { this.applicationContext = applicationContext; this.actorClass = actorClass; this.params = params; } @Override public Actor produce() { if (params != null) { return applicationContext.getBean(actorClass, params); } return applicationContext.getBean(actorClass); } @Override public Class<? extends Actor> actorClass() { return actorClass; } }