1   /*
2    * $Id: QuartzNamespaceHandlerTestCase.java 11811 2008-05-20 19:51:58Z rossmason $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSource, Inc.  All rights reserved.  http://www.mulesource.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
9    */
10  package org.mule.transport.quartz.config;
11  
12  import org.mule.tck.FunctionalTestCase;
13  import org.mule.transport.quartz.QuartzConnector;
14  import org.mule.transport.quartz.jobs.EventGeneratorJobConfig;
15  import org.mule.transport.quartz.jobs.CustomJobConfig;
16  import org.mule.transport.quartz.jobs.CustomJobFromMessageConfig;
17  import org.mule.transport.quartz.jobs.EventGeneratorJob;
18  import org.mule.transport.quartz.jobs.EndpointPollingJobConfig;
19  import org.mule.transport.quartz.jobs.EndpointPollingJob;
20  import org.mule.transport.quartz.jobs.ScheduledDispatchJobConfig;
21  import org.mule.transport.quartz.jobs.ScheduledDispatchJob;
22  import org.mule.api.endpoint.EndpointBuilder;
23  import org.mule.api.endpoint.InboundEndpoint;
24  import org.mule.api.endpoint.OutboundEndpoint;
25  import org.mule.api.service.Service;
26  import org.mule.api.routing.OutboundRouter;
27  
28  import org.quartz.impl.StdScheduler;
29  
30  
31  /**
32   * Tests the "quartz" namespace.
33   */
34  public class QuartzNamespaceHandlerTestCase extends FunctionalTestCase
35  {
36      protected String getConfigResources()
37      {
38          return "quartz-namespace-config.xml";
39      }
40  
41      public void testDefaultConfig() throws Exception
42      {
43          QuartzConnector c = (QuartzConnector)muleContext.getRegistry().lookupConnector("quartzConnectorDefaults");
44          assertNotNull(c);
45          
46          assertNotNull(c.getQuartzScheduler());
47          assertEquals(StdScheduler.class, c.getQuartzScheduler().getClass());
48          StdScheduler scheduler = (StdScheduler) c.getQuartzScheduler();
49          assertEquals("DefaultQuartzScheduler", scheduler.getSchedulerName());
50          
51          assertTrue(c.isConnected());
52          assertTrue(c.isStarted());
53      }
54      
55      public void testInjectedSchedulerBean() throws Exception
56      {
57          QuartzConnector c = (QuartzConnector)muleContext.getRegistry().lookupConnector("quartzConnector1");
58          assertNotNull(c);
59          
60          assertNotNull(c.getQuartzScheduler());
61          assertEquals(StdScheduler.class, c.getQuartzScheduler().getClass());
62          StdScheduler scheduler = (StdScheduler) c.getQuartzScheduler();
63          assertEquals("MuleScheduler1", scheduler.getSchedulerName());
64          
65          assertTrue(c.isConnected());
66          assertTrue(c.isStarted());
67      }
68      
69      public void testFactoryProperties() throws Exception
70      {
71          QuartzConnector c = (QuartzConnector)muleContext.getRegistry().lookupConnector("quartzConnector2");
72          assertNotNull(c);
73          
74          assertNotNull(c.getQuartzScheduler());
75          assertEquals(StdScheduler.class, c.getQuartzScheduler().getClass());
76          StdScheduler scheduler = (StdScheduler) c.getQuartzScheduler();
77          assertEquals("MuleScheduler2", scheduler.getSchedulerName());
78          
79          assertTrue(c.isConnected());
80          assertTrue(c.isStarted());
81      }
82  
83      public void testEndpoint1Config() throws Exception
84      {
85          Service service = muleContext.getRegistry().lookupService("testService1");
86          assertNotNull(service);
87  
88          InboundEndpoint ep = service.getInboundRouter().getEndpoint("qEP1");
89          assertNotNull(ep);
90          assertNotNull(ep.getProperty("jobConfig"));
91          assertTrue(ep.getProperty("jobConfig") instanceof EventGeneratorJobConfig);
92          EventGeneratorJobConfig config = (EventGeneratorJobConfig)ep.getProperty("jobConfig");
93          assertEquals("foo", config.getPayload());
94      }
95  
96      public void testEndpoint2Config() throws Exception
97      {
98          Service service = muleContext.getRegistry().lookupService("testService2");
99          assertNotNull(service);
100 
101         InboundEndpoint ep = service.getInboundRouter().getEndpoint("qEP2");
102         assertNotNull(ep.getProperty("jobConfig"));
103         assertTrue(ep.getProperty("jobConfig") instanceof EventGeneratorJobConfig);
104         EventGeneratorJobConfig config = (EventGeneratorJobConfig)ep.getProperty("jobConfig");
105         assertEquals("foo bar", config.getPayload());
106     }
107 
108 
109     public void testEndpoint3Config() throws Exception
110     {
111         Service service = muleContext.getRegistry().lookupService("testService3");
112         assertNotNull(service);
113 
114         OutboundEndpoint ep = ((OutboundRouter)service.getOutboundRouter().getRouters().get(0)).getEndpoint("qEP3");
115         assertNotNull(ep.getProperty("jobConfig"));
116         assertTrue(ep.getProperty("jobConfig") instanceof CustomJobFromMessageConfig);
117         CustomJobFromMessageConfig config = (CustomJobFromMessageConfig)ep.getProperty("jobConfig");
118         assertEquals("header", config.getEvaluator());
119         assertEquals("jobConfig", config.getExpression());
120         assertNull(config.getCustomEvaluator());
121         //Test grabbing the Job instance
122     }
123 
124 
125 
126     public void testEndpoint4Config() throws Exception
127     {
128         Service service = muleContext.getRegistry().lookupService("testService4");
129         assertNotNull(service);
130 
131         OutboundEndpoint ep = ((OutboundRouter)service.getOutboundRouter().getRouters().get(0)).getEndpoint("qEP4");
132 
133         assertNotNull(ep.getProperty("jobConfig"));
134         assertTrue(ep.getProperty("jobConfig") instanceof CustomJobConfig);
135         CustomJobConfig config = (CustomJobConfig)ep.getProperty("jobConfig");
136         assertTrue(config.getJob() instanceof EventGeneratorJob);
137     }
138 
139     public void testEndpoint5Config() throws Exception
140     {
141         Service service = muleContext.getRegistry().lookupService("testService5");
142         assertNotNull(service);
143 
144         InboundEndpoint ep = service.getInboundRouter().getEndpoint("qEP5");
145         assertNotNull(ep.getProperty("jobConfig"));
146         assertTrue(ep.getProperty("jobConfig") instanceof EndpointPollingJobConfig);
147         EndpointPollingJobConfig config = (EndpointPollingJobConfig)ep.getProperty("jobConfig");
148         assertEquals(EndpointPollingJob.class, config.getJobClass());
149         assertEquals("file:///N/drop-data/in", config.getEndpointRef());
150         assertEquals(4000, config.getTimeout());
151     }
152 
153     public void testEndpoint6Config() throws Exception
154     {
155         Service service = muleContext.getRegistry().lookupService("testService6");
156         assertNotNull(service);
157 
158         OutboundEndpoint ep = ((OutboundRouter)service.getOutboundRouter().getRouters().get(0)).getEndpoint("qEP6");
159         
160         assertNotNull(ep.getProperty("jobConfig"));
161         assertTrue(ep.getProperty("jobConfig") instanceof ScheduledDispatchJobConfig);
162         ScheduledDispatchJobConfig config = (ScheduledDispatchJobConfig)ep.getProperty("jobConfig");
163         assertEquals(ScheduledDispatchJob.class, config.getJobClass());
164         assertEquals("scheduledDispatchEndpoint", config.getEndpointRef());
165     }
166 }