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

com.talanlabs.taskmanager.engine.taskservice.AbstractLockTaskService Maven / Gradle / Ivy

The newest version!
package com.talanlabs.taskmanager.engine.taskservice;

import com.talanlabs.taskmanager.engine.task.ICommonTask;
import de.jkeylockmanager.manager.KeyLockManager;
import de.jkeylockmanager.manager.KeyLockManagers;

public abstract class AbstractLockTaskService extends AbstractTaskService {

    private final KeyLockManager keyLockManager;

    public AbstractLockTaskService() {
        super();

        this.keyLockManager = KeyLockManagers.newLock();
    }

    /**
     * Return lock key, not NULL
     *
     * @param task task link with service
     * @return key
     */
    protected abstract String getLockKey(ICommonTask task);

    @Override
    public final IExecutionResult execute(final IEngineContext context, final ICommonTask task) {
        return keyLockManager.executeLocked(getLockKey(task), () -> executeInLock(context, task));
    }

    protected abstract IExecutionResult executeInLock(IEngineContext context, ICommonTask task);

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy