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