LockProcess.java 2.52 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  com.day.cq.workflow.WorkflowException
 *  com.day.cq.workflow.WorkflowService
 *  com.day.cq.workflow.WorkflowSession
 *  com.day.cq.workflow.exec.WorkItem
 *  com.day.cq.workflow.exec.WorkflowData
 *  com.day.cq.workflow.exec.WorkflowProcess
 *  com.day.cq.workflow.metadata.MetaDataMap
 *  org.apache.felix.scr.annotations.Component
 *  org.apache.felix.scr.annotations.Property
 *  org.apache.felix.scr.annotations.Reference
 *  org.apache.felix.scr.annotations.ReferencePolicy
 *  org.apache.felix.scr.annotations.Service
 *  org.slf4j.Logger
 *  org.slf4j.LoggerFactory
 */
package com.day.cq.workflow.impl.process;

import com.day.cq.workflow.WorkflowException;
import com.day.cq.workflow.WorkflowService;
import com.day.cq.workflow.WorkflowSession;
import com.day.cq.workflow.exec.WorkItem;
import com.day.cq.workflow.exec.WorkflowData;
import com.day.cq.workflow.exec.WorkflowProcess;
import com.day.cq.workflow.impl.CQWorkflowService;
import com.day.cq.workflow.impl.process.LockUtil;
import com.day.cq.workflow.metadata.MetaDataMap;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Property;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.ReferencePolicy;
import org.apache.felix.scr.annotations.Service;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@Component(metatype=0)
@Service(value={WorkflowProcess.class})
@Property(name="process.label", value={"Lock Payload Process"})
public class LockProcess
implements WorkflowProcess {
    Logger log = LoggerFactory.getLogger(LockProcess.class);
    @Reference(policy=ReferencePolicy.STATIC)
    private WorkflowService wfService = null;
    private LockUtil lockUtil = LockUtil.getInstance();

    public void execute(WorkItem item, WorkflowSession session, MetaDataMap args) throws WorkflowException {
        if (this.wfService instanceof CQWorkflowService && ((CQWorkflowService)this.wfService).isAllowLocking()) {
            WorkflowData workflowData = item.getWorkflowData();
            this.lockUtil.lock(workflowData, session);
        } else {
            this.log.info("Locking is not currently enabled.  This is a No-Op");
        }
    }

    protected void bindWfService(WorkflowService workflowService) {
        this.wfService = workflowService;
    }

    protected void unbindWfService(WorkflowService workflowService) {
        if (this.wfService == workflowService) {
            this.wfService = null;
        }
    }
}