1
2
3
4
5
6
7
8
9
10
11 package org.mule.transport.quartz.jobs;
12
13 import org.mule.DefaultMuleMessage;
14 import org.mule.RegistryContext;
15 import org.mule.transport.AbstractConnector;
16 import org.mule.transport.AbstractMessageReceiver;
17 import org.mule.transport.NullPayload;
18 import org.mule.transport.quartz.QuartzConnector;
19 import org.mule.transport.quartz.QuartzMessageReceiver;
20 import org.mule.transport.quartz.i18n.QuartzMessages;
21
22 import org.apache.commons.logging.Log;
23 import org.apache.commons.logging.LogFactory;
24 import org.quartz.Job;
25 import org.quartz.JobDataMap;
26 import org.quartz.JobExecutionContext;
27 import org.quartz.JobExecutionException;
28
29
30
31
32
33
34
35
36 public class EventGeneratorJob implements Job
37 {
38
39
40
41
42 protected transient Log logger = LogFactory.getLog(getClass());
43
44 public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException
45 {
46 JobDataMap map = jobExecutionContext.getJobDetail().getJobDataMap();
47
48 String receiverKey = (String)map.get(QuartzMessageReceiver.QUARTZ_RECEIVER_PROPERTY);
49 if (receiverKey == null)
50 throw new JobExecutionException(QuartzMessages.receiverNotInJobDataMap().getMessage());
51
52 String connectorName = (String)map.get(QuartzMessageReceiver.QUARTZ_CONNECTOR_PROPERTY);
53 if (connectorName == null)
54 throw new JobExecutionException(QuartzMessages.connectorNotInJobDataMap().getMessage());
55
56 AbstractConnector connector = (AbstractConnector) RegistryContext.getRegistry().lookupConnector(connectorName);
57 if (connector == null)
58 throw new JobExecutionException(QuartzMessages.noConnectorFound(connectorName).getMessage());
59
60 AbstractMessageReceiver receiver = (AbstractMessageReceiver)connector.lookupReceiver(receiverKey);
61 if (receiver == null)
62 throw new JobExecutionException(
63 QuartzMessages.noReceiverInConnector(receiverKey, connectorName).getMessage());
64
65 Object payload = jobExecutionContext.getJobDetail().getJobDataMap().get(
66 QuartzConnector.PROPERTY_PAYLOAD);
67
68 try
69 {
70 if (payload == null)
71 {
72 String ref = jobExecutionContext.getJobDetail().getJobDataMap().getString(
73 QuartzConnector.PROPERTY_PAYLOAD);
74
75 if (ref == null)
76 {
77 payload = NullPayload.getInstance();
78 }
79 else
80 {
81 payload = RegistryContext.getRegistry().lookupObject(ref);
82 }
83
84 if (payload==null)
85 {
86 logger.warn("There is no payload attached to this quartz job. Sending Null payload");
87 payload = NullPayload.getInstance();
88 }
89 }
90 receiver.routeMessage(new DefaultMuleMessage(receiver.getConnector().getMessageAdapter(payload)));
91 }
92 catch (Exception e)
93 {
94 receiver.handleException(e);
95 }
96 }
97 }