package org.infinispan.server.test.task.servertask;
import java.io.IOException;
import java.util.Map;
import java.util.Optional;
import org.infinispan.Cache;
import org.infinispan.tasks.ServerTask;
import org.infinispan.tasks.TaskContext;
/**
* Author: Michal Szynkiewicz, michal.l.szynkiewicz@gmail.com
* Date: 1/20/16
* Time: 6:33 AM
*/
public class LocalTestServerTask implements ServerTask {
public static final String NAME = "serverTask8234892";
public static final String TASK_EXECUTED = "taskExecuted";
public static final String CACHE_NAME = "taskAccessible";
public static final String MODIFIED_PREFIX = "modified:";
private TaskContext taskContext;
@Override
@SuppressWarnings("unchecked")
public Object call() throws IOException, ClassNotFoundException {
Cache<Object, Object> cache = (Cache<Object, Object>) taskContext.getCache().get();
Map.Entry<Object, Object> entry = cache.entrySet().iterator().next();
assert taskContext.getMarshaller().isPresent();
String existingKey = (String) taskContext.getMarshaller().get().objectFromByteBuffer((byte[]) entry.getKey());
String existingValue = (String) taskContext.getMarshaller().get().objectFromByteBuffer((byte[]) entry.getValue());
cache.getCacheManager().getCache(CACHE_NAME).put(existingKey, MODIFIED_PREFIX + existingValue);
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();
}
}