CQPayloadMap.java 5.87 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  com.adobe.granite.workflow.PayloadMap
 *  com.adobe.granite.workflow.exec.Workflow
 *  com.day.cq.workflow.PayloadMap
 *  com.day.cq.workflow.exec.Workflow
 *  javax.jcr.RepositoryException
 *  javax.jcr.Session
 *  org.apache.felix.scr.annotations.Component
 *  org.apache.felix.scr.annotations.Reference
 *  org.apache.felix.scr.annotations.ReferencePolicy
 *  org.apache.felix.scr.annotations.Service
 *  org.apache.sling.api.adapter.AdapterManager
 *  org.apache.sling.jcr.api.SlingRepository
 *  org.slf4j.Logger
 *  org.slf4j.LoggerFactory
 */
package com.day.cq.workflow.impl;

import com.day.cq.workflow.PayloadMap;
import com.day.cq.workflow.exec.Workflow;
import com.day.cq.workflow.impl.ServiceLoginUtil;
import com.day.cq.workflow.impl.exec.CQWorkflowWrapper;
import java.util.ArrayList;
import java.util.List;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.ReferencePolicy;
import org.apache.felix.scr.annotations.Service;
import org.apache.sling.api.adapter.AdapterManager;
import org.apache.sling.jcr.api.SlingRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@Component(metatype=1)
@Service(value={PayloadMap.class})
public class CQPayloadMap
implements PayloadMap {
    private static final Logger log = LoggerFactory.getLogger(CQPayloadMap.class);
    @Reference(policy=ReferencePolicy.STATIC)
    private SlingRepository repository = null;
    @Reference(policy=ReferencePolicy.STATIC)
    private AdapterManager adapterManager = null;

    private com.adobe.granite.workflow.PayloadMap getGranitePayloadMap(Session session) throws RepositoryException {
        return (com.adobe.granite.workflow.PayloadMap)this.adapterManager.getAdapter((Object)session, com.adobe.granite.workflow.PayloadMap.class);
    }

    public boolean isInWorkflow(String path) {
        return this.isInWorkflow(path, true);
    }

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     */
    public boolean isInWorkflow(String path, boolean excludeSystemWorkflows) {
        Session session = null;
        boolean isThere = false;
        try {
            session = ServiceLoginUtil.createWorkflowServiceSession(this.repository);
            isThere = this.getGranitePayloadMap(session).isInWorkflow(path, excludeSystemWorkflows);
        }
        catch (RepositoryException e) {
            log.error("Unable to determined if {} is being used in a running workflow.", (Object)path, (Object)e);
        }
        finally {
            if (session != null && session.isLive()) {
                session.logout();
            }
        }
        return isThere;
    }

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     */
    public Workflow getWorkflowInstance(String path) {
        Session session = null;
        try {
            session = ServiceLoginUtil.createWorkflowServiceSession(this.repository);
            List workflows = this.getGranitePayloadMap(session).getWorkflowInstances(path, true);
            if (workflows != null && workflows.size() > 0) {
                CQWorkflowWrapper cQWorkflowWrapper = new CQWorkflowWrapper((com.adobe.granite.workflow.exec.Workflow)workflows.get(0), false, this.repository, this.adapterManager);
                return cQWorkflowWrapper;
            }
        }
        catch (RepositoryException e) {
            log.error("Unable to get workflow instance for {}", (Object)path, (Object)e);
        }
        finally {
            if (session != null && session.isLive()) {
                session.logout();
            }
        }
        return null;
    }

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     * Enabled force condition propagation
     * Lifted jumps to return sites
     */
    public List<Workflow> getWorkflowInstances(String path, boolean excludeSystemWorkflows) {
        Session session = null;
        ArrayList<Workflow> workflows = new ArrayList<Workflow>();
        try {
            session = ServiceLoginUtil.createWorkflowServiceSession(this.repository);
            List graniteWorkflows = this.getGranitePayloadMap(session).getWorkflowInstances(path, excludeSystemWorkflows);
            if (graniteWorkflows.size() > 0) {
                for (com.adobe.granite.workflow.exec.Workflow workflow : graniteWorkflows) {
                    if (workflow == null) continue;
                    workflows.add(new CQWorkflowWrapper(workflow, false, this.repository, this.adapterManager));
                }
            }
            if (!(session != null & session.isLive())) return workflows;
        }
        catch (RepositoryException e) {
            try {
                log.error("Unable to get workflow instances for {}", (Object)path, (Object)e);
                if (!(session != null & session.isLive())) return workflows;
            }
            catch (Throwable var8_9) {
                if (!(session != null & session.isLive())) throw var8_9;
                session.logout();
                throw var8_9;
            }
            session.logout();
            return workflows;
        }
        session.logout();
        return workflows;
    }

    protected void bindRepository(SlingRepository slingRepository) {
        this.repository = slingRepository;
    }

    protected void unbindRepository(SlingRepository slingRepository) {
        if (this.repository == slingRepository) {
            this.repository = null;
        }
    }

    protected void bindAdapterManager(AdapterManager adapterManager) {
        this.adapterManager = adapterManager;
    }

    protected void unbindAdapterManager(AdapterManager adapterManager) {
        if (this.adapterManager == adapterManager) {
            this.adapterManager = null;
        }
    }
}