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

org.infinispan.scripting.impl.ScriptingTaskEngine Maven / Gradle / Ivy

package org.infinispan.scripting.impl;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CompletableFuture;

import org.infinispan.tasks.Task;
import org.infinispan.tasks.TaskContext;
import org.infinispan.tasks.TaskExecutionMode;
import org.infinispan.tasks.spi.TaskEngine;
import org.infinispan.util.concurrent.BlockingManager;

/**
 * ScriptingTaskEngine.
 *
 * @author Tristan Tarrant
 * @since 8.1
 */
public class ScriptingTaskEngine implements TaskEngine {
   private final ScriptingManagerImpl scriptingManager;

   public ScriptingTaskEngine(ScriptingManagerImpl scriptingManager) {
      this.scriptingManager = scriptingManager;
   }

   @Override
   public String getName() {
      return "Script";
   }

   @Override
   public List getTasks() {
      List tasks = new ArrayList<>();
      scriptingManager.getScriptNames().forEach(s -> {
         ScriptMetadata scriptMetadata = scriptingManager.getScriptMetadata(s);
         tasks.add(new ScriptTask(s, scriptMetadata.mode().isClustered() ? TaskExecutionMode.ALL_NODES : TaskExecutionMode.ONE_NODE, scriptMetadata.parameters()));
      });

      return tasks;
   }

   @Override
   public  CompletableFuture runTask(String taskName, TaskContext context, BlockingManager blockingManager) {
      return scriptingManager.runScript(taskName, context);
   }

   @Override
   public boolean handles(String taskName) {
      return scriptingManager.containsScript(taskName);
   }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy