TSDKSynchronizedTaskRunner.java 2.06 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  com.adobe.tsdk.common.task.SynchronizedTaskRunner
 *  com.adobe.tsdk.common.task.Task
 */
package com.day.cq.analytics.testandtarget.impl.util;

import com.adobe.tsdk.common.task.SynchronizedTaskRunner;
import com.adobe.tsdk.common.task.Task;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;

public class TSDKSynchronizedTaskRunner
implements SynchronizedTaskRunner {
    private static Map<String, AtomicInteger> locks = new HashMap<String, AtomicInteger>();

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     */
    public void executeTasks(List<Task> list, String activityId) {
        AtomicInteger lockObj;
        AtomicInteger atomicInteger = lockObj = this.getLockObject(activityId);
        synchronized (atomicInteger) {
            for (Task task : list) {
                task.execute();
            }
        }
        this.cleanupLockObject(lockObj, activityId);
    }

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     */
    private AtomicInteger getLockObject(String activityId) {
        AtomicInteger lockObj = locks.get(activityId);
        if (lockObj == null) {
            Map<String, AtomicInteger> map = locks;
            synchronized (map) {
                lockObj = locks.get(activityId);
                if (lockObj == null) {
                    lockObj = new AtomicInteger();
                    locks.put(activityId, lockObj);
                }
            }
        }
        lockObj.incrementAndGet();
        return lockObj;
    }

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     */
    private void cleanupLockObject(AtomicInteger lockObj, String activityId) {
        int currentVal = lockObj.decrementAndGet();
        if (currentVal <= 0) {
            Map<String, AtomicInteger> map = locks;
            synchronized (map) {
                locks.remove(activityId);
            }
        }
    }
}