CQEventDispatcher.java 4.39 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  com.adobe.granite.workflow.event.WorkflowEvent
 *  com.adobe.granite.workflow.exec.WorkItem
 *  com.adobe.granite.workflow.exec.WorkflowData
 *  com.day.cq.workflow.event.WorkflowEvent
 *  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.osgi.service.event.Event
 *  org.osgi.service.event.EventAdmin
 *  org.osgi.service.event.EventHandler
 */
package com.day.cq.workflow.compatibility;

import com.adobe.granite.workflow.event.WorkflowEvent;
import com.adobe.granite.workflow.exec.WorkItem;
import com.adobe.granite.workflow.exec.WorkflowData;
import com.day.cq.workflow.impl.exec.CQWorkItemWrapper;
import com.day.cq.workflow.impl.exec.CQWorkflowDataWrapper;
import java.util.Date;
import java.util.Dictionary;
import java.util.Hashtable;
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.osgi.service.event.Event;
import org.osgi.service.event.EventAdmin;
import org.osgi.service.event.EventHandler;

@Component(immediate=1)
@Service
@Property(name="event.topics", value={"com/adobe/granite/workflow/event"})
public class CQEventDispatcher
implements EventHandler {
    @Reference(policy=ReferencePolicy.STATIC)
    private EventAdmin eventAdmin;

    public void handleEvent(Event event) {
        WorkflowEvent graniteWorkflowEvent = (WorkflowEvent)event;
        Hashtable<String, Object> properties = new Hashtable<String, Object>();
        this.addProperty(properties, "Delagatee", graniteWorkflowEvent.getDelegateName());
        this.addProperty(properties, "EventType", graniteWorkflowEvent.getEventType());
        this.addProperty(properties, "fromNodeName", graniteWorkflowEvent.getFromNodeName());
        this.addProperty(properties, "VariableName", graniteWorkflowEvent.getVariableName());
        this.addProperty(properties, "VariableValue", graniteWorkflowEvent.getVariableValue());
        this.addProperty(properties, "ParentWorkflowId", graniteWorkflowEvent.getParentWorkflowId());
        this.addProperty(properties, "TimeStamp", graniteWorkflowEvent.getTimeStamp());
        this.addProperty(properties, "toNodeName", graniteWorkflowEvent.getToNodeName());
        this.addProperty(properties, "User", graniteWorkflowEvent.getUser());
        this.addProperty(properties, "WorkflowName", graniteWorkflowEvent.getWorkflowName());
        this.addProperty(properties, "WorkflowNode", graniteWorkflowEvent.getWorkflowNode());
        this.addProperty(properties, "WorkflowVersion", graniteWorkflowEvent.getWorkflowVersion());
        this.addProperty(properties, "WorkflowInstanceId", graniteWorkflowEvent.getWorkflowInstanceId());
        this.addProperty(properties, "oldPayloadPath", graniteWorkflowEvent.getProperty("oldPayloadPath"));
        this.addProperty(properties, "payloadPath", graniteWorkflowEvent.getProperty("payloadPath"));
        if (graniteWorkflowEvent.getWorkflowData() != null && graniteWorkflowEvent.getWorkflowData() != null) {
            this.addProperty(properties, "Workdata", new CQWorkflowDataWrapper(graniteWorkflowEvent.getWorkflowData()));
        }
        if (graniteWorkflowEvent.getWorkItem() != null && graniteWorkflowEvent.getWorkItem() != null) {
            this.addProperty(properties, "Workitem", new CQWorkItemWrapper(graniteWorkflowEvent.getWorkItem()));
        }
        this.addProperty(properties, "event.application", graniteWorkflowEvent.getProperty("event.application"));
        com.day.cq.workflow.event.WorkflowEvent cqWorkflowEvent = new com.day.cq.workflow.event.WorkflowEvent(properties);
        this.eventAdmin.sendEvent((Event)cqWorkflowEvent);
    }

    private void addProperty(Dictionary<String, Object> dictionary, String key, Object value) {
        if (key != null && value != null) {
            dictionary.put(key, value);
        }
    }

    protected void bindEventAdmin(EventAdmin eventAdmin) {
        this.eventAdmin = eventAdmin;
    }

    protected void unbindEventAdmin(EventAdmin eventAdmin) {
        if (this.eventAdmin == eventAdmin) {
            this.eventAdmin = null;
        }
    }
}