CQEventDispatcher.java
4.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
/*
* 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;
}
}
}