package org.infinispan.server.test.task.servertask; import java.util.Map; import java.util.Optional; import javax.transaction.TransactionManager; import org.infinispan.Cache; import org.infinispan.tasks.ServerTask; import org.infinispan.tasks.TaskContext; import org.infinispan.tasks.TaskExecutionMode; /** * Task verifying that the marshaller is passed properly and the value is properly put into the cache. * * @author Anna Manukyan */ public class DistributedCacheUsingTask implements ServerTask { public static final String NAME = "serverTask_distributed_cacheUsage"; public static final String CACHE_NAME = "customTaskReplTx"; public static final String VALUE_PREFIX = "modified:"; public static final String PARAM_KEY = "param"; private TaskContext taskContext; @Override @SuppressWarnings("unchecked") public Object call() throws Exception { Cache<Object, Object> cache = (Cache<Object, Object>) taskContext.getCache().get(); Map<String, String> parameters = (Map<String, String>) taskContext.getParameters().get(); assert taskContext.getMarshaller().isPresent(); Map.Entry<Object, Object> entry = cache.getCacheManager().getCache(CACHE_NAME).entrySet().iterator().next(); TransactionManager transactionManager = cache.getAdvancedCache().getTransactionManager(); transactionManager.begin(); cache.getCacheManager().getCache(CACHE_NAME).getAdvancedCache().lock(entry.getKey()); cache.getCacheManager().getCache(CACHE_NAME).put(entry.getKey(), VALUE_PREFIX + entry.getValue() + ":" + parameters.get(PARAM_KEY)); transactionManager.commit(); return null; } @Override public void setTaskContext(TaskContext taskContext) { this.taskContext = taskContext; } @Override public String getName() { return NAME; } @Override public Optional<String> getAllowedRole() { return Optional.empty(); } @Override public TaskExecutionMode getExecutionMode() { return TaskExecutionMode.ALL_NODES; } }