package org.atomnuke.service.resolution; import org.atomnuke.lifecycle.resolution.ResolutionAction; import org.atomnuke.lifecycle.resolution.ResolutionActionType; import org.atomnuke.service.ServiceManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * * @author zinic */ public class RequiresAction implements ResolutionAction { private static final Logger LOG = LoggerFactory.getLogger(RequiresAction.class); private final ResolutionActionType actionType; public RequiresAction(ServiceManager serviceManager, Class... requiredInterfaces) { actionType = resolveAction(serviceManager, requiredInterfaces); } private static ResolutionActionType resolveAction(ServiceManager serviceManager, Class... requiredInterfaces) { for (Class requiredInterface : requiredInterfaces) { if (!serviceManager.serviceRegistered(requiredInterface)) { LOG.info("Unable to locate service for: " + requiredInterface.getName() + " - deferring."); return ResolutionActionType.DEFER; } } return ResolutionActionType.INIT; } @Override public ResolutionActionType type() { return actionType; } }