AbsoluteTimeoutHandlerProxyImpl.java 3.74 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  com.adobe.granite.workflow.exec.WorkItem
 *  com.adobe.granite.workflow.job.AbsoluteTimeoutHandler
 *  com.adobe.granite.workflow.job.AbsoluteTimeoutHandlerProxy
 *  com.day.cq.workflow.exec.WorkItem
 *  com.day.cq.workflow.job.AbsoluteTimeoutHandler
 *  org.apache.felix.scr.annotations.Component
 *  org.apache.felix.scr.annotations.Property
 *  org.apache.felix.scr.annotations.Reference
 *  org.apache.felix.scr.annotations.ReferenceCardinality
 *  org.apache.felix.scr.annotations.ReferencePolicy
 *  org.apache.felix.scr.annotations.References
 *  org.apache.felix.scr.annotations.Service
 */
package com.day.cq.workflow.compatibility;

import com.adobe.granite.workflow.exec.WorkItem;
import com.adobe.granite.workflow.job.AbsoluteTimeoutHandler;
import com.adobe.granite.workflow.job.AbsoluteTimeoutHandlerProxy;
import com.day.cq.workflow.impl.exec.CQWorkItemWrapper;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
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.ReferenceCardinality;
import org.apache.felix.scr.annotations.ReferencePolicy;
import org.apache.felix.scr.annotations.References;
import org.apache.felix.scr.annotations.Service;

@Component(metatype=1, label="%cq.workflow.compat.absolutetimeoutproxy.name", description="%cq.workflow.compat.absolutetimeoutproxy.description")
@Property(name="service.description", value={"%cq.workflow.compat.absolutetimeoutproxy.description"})
@References(value={@Reference(name="AbsoluteTimeoutHandler", cardinality=ReferenceCardinality.OPTIONAL_MULTIPLE, referenceInterface=com.day.cq.workflow.job.AbsoluteTimeoutHandler.class, policy=ReferencePolicy.DYNAMIC)})
@Service
public class AbsoluteTimeoutHandlerProxyImpl
implements AbsoluteTimeoutHandlerProxy {
    protected List<com.day.cq.workflow.job.AbsoluteTimeoutHandler> timeoutHandlers = new CopyOnWriteArrayList<com.day.cq.workflow.job.AbsoluteTimeoutHandler>();

    public void bindAbsoluteTimeoutHandler(com.day.cq.workflow.job.AbsoluteTimeoutHandler timeoutHandler) {
        this.timeoutHandlers.add(timeoutHandler);
    }

    public void unbindAbsoluteTimeoutHandler(com.day.cq.workflow.job.AbsoluteTimeoutHandler timeoutHandler) {
        this.timeoutHandlers.remove((Object)timeoutHandler);
    }

    public boolean canExecute(String handlerName) {
        if (this.timeoutHandlers != null) {
            for (com.day.cq.workflow.job.AbsoluteTimeoutHandler handler : this.timeoutHandlers) {
                if (!handler.getClass().getCanonicalName().equals(handlerName)) continue;
                return true;
            }
        }
        return false;
    }

    public long getTimeoutDate(WorkItem workItem) {
        return 0;
    }

    public AbsoluteTimeoutHandler findHandler(String handlerName) {
        if (this.timeoutHandlers != null) {
            for (com.day.cq.workflow.job.AbsoluteTimeoutHandler handler : this.timeoutHandlers) {
                if (!handler.getClass().getCanonicalName().equals(handlerName)) continue;
                return new AbsoluteTimeoutHandlerWrapper(handler);
            }
        }
        return null;
    }

    class AbsoluteTimeoutHandlerWrapper
    implements AbsoluteTimeoutHandler {
        private com.day.cq.workflow.job.AbsoluteTimeoutHandler handler;

        public AbsoluteTimeoutHandlerWrapper(com.day.cq.workflow.job.AbsoluteTimeoutHandler handler) {
            this.handler = handler;
        }

        public long getTimeoutDate(WorkItem workItem) {
            return this.handler.getTimeoutDate((com.day.cq.workflow.exec.WorkItem)new CQWorkItemWrapper(workItem));
        }
    }

}