Coverage Report - org.mule.transport.quartz.config.QuartzNamespaceHandler
 
Classes in this File Line Coverage Branch Coverage Complexity
QuartzNamespaceHandler
100%
24/24
N/A
1
 
 1  
 /*
 2  
  * $Id: QuartzNamespaceHandler.java 11620 2008-04-22 02:37:40Z dfeist $
 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  
 
 11  
 package org.mule.transport.quartz.config;
 12  
 
 13  
 import org.mule.config.spring.factories.InboundEndpointFactoryBean;
 14  
 import org.mule.config.spring.factories.OutboundEndpointFactoryBean;
 15  
 import org.mule.config.spring.handlers.AbstractMuleNamespaceHandler;
 16  
 import org.mule.config.spring.parsers.MuleDefinitionParser;
 17  
 import org.mule.config.spring.parsers.collection.ChildMapDefinitionParser;
 18  
 import org.mule.config.spring.parsers.collection.ChildSingletonMapDefinitionParser;
 19  
 import org.mule.config.spring.parsers.generic.MuleOrphanDefinitionParser;
 20  
 import org.mule.config.spring.parsers.generic.ParentDefinitionParser;
 21  
 import org.mule.config.spring.parsers.specific.DataObjectDefinitionParser;
 22  
 import org.mule.config.spring.parsers.specific.endpoint.EndpointPropertyElementDefinitionParser;
 23  
 import org.mule.config.spring.parsers.specific.endpoint.EndpointRefParser;
 24  
 import org.mule.config.spring.parsers.specific.endpoint.TransportEndpointDefinitionParser;
 25  
 import org.mule.config.spring.parsers.specific.endpoint.TransportGlobalEndpointDefinitionParser;
 26  
 import org.mule.endpoint.URIBuilder;
 27  
 import org.mule.transport.quartz.QuartzConnector;
 28  
 import org.mule.transport.quartz.jobs.CustomJobConfig;
 29  
 import org.mule.transport.quartz.jobs.CustomJobFromMessageConfig;
 30  
 import org.mule.transport.quartz.jobs.EndpointPollingJobConfig;
 31  
 import org.mule.transport.quartz.jobs.EventGeneratorJobConfig;
 32  
 import org.mule.transport.quartz.jobs.ScheduledDispatchJobConfig;
 33  
 
 34  
 /**
 35  
  * Registers Bean Definition Parsers for the "quartz" namespace
 36  
  */
 37  28
 public class QuartzNamespaceHandler extends AbstractMuleNamespaceHandler
 38  
 {
 39  
 
 40  
     public static final String JOB_NAME_ATTRIBUTE = "jobName";
 41  2
     public static final String[][] QUARTZ_ATTRIBUTES = new String[][]{new String[]{JOB_NAME_ATTRIBUTE}};
 42  
 
 43  
     public void init()
 44  
     {
 45  28
         registerQuartzTransportEndpoints();
 46  28
         registerMuleBeanDefinitionParser("connector", new MuleOrphanDefinitionParser(QuartzConnector.class, true)).addAlias("scheduler", "quartzScheduler");
 47  
         // note that we use the singular (factoryProperty) for the setter so that we auto-detect a collection
 48  28
         registerBeanDefinitionParser("factory-property", new ChildSingletonMapDefinitionParser("factoryProperty"));
 49  28
         registerBeanDefinitionParser("factory-properties", new ChildMapDefinitionParser("factoryProperty"));
 50  
 
 51  28
         registerBeanDefinitionParser("event-generator-job", new EndpointPropertyElementDefinitionParser(QuartzConnector.PROPERTY_JOB_CONFIG, EventGeneratorJobConfig.class));
 52  28
         registerBeanDefinitionParser("endpoint-polling-job", new EndpointPropertyElementDefinitionParser(QuartzConnector.PROPERTY_JOB_CONFIG, EndpointPollingJobConfig.class));
 53  28
         registerBeanDefinitionParser("scheduled-dispatch-job", new EndpointPropertyElementDefinitionParser(QuartzConnector.PROPERTY_JOB_CONFIG, ScheduledDispatchJobConfig.class));
 54  28
         registerBeanDefinitionParser("custom-job", new EndpointPropertyElementDefinitionParser(QuartzConnector.PROPERTY_JOB_CONFIG, CustomJobConfig.class));
 55  28
         registerBeanDefinitionParser("custom-job-from-message", new EndpointPropertyElementDefinitionParser(QuartzConnector.PROPERTY_JOB_CONFIG, CustomJobFromMessageConfig.class));
 56  
 
 57  28
         ParentDefinitionParser parser = new ParentDefinitionParser();
 58  28
         parser.addAlias("address", "endpointRef");
 59  28
         parser.addAlias("ref", "endpointRef");
 60  28
         registerBeanDefinitionParser("job-endpoint", new EndpointRefParser("endpointRef"));
 61  
 
 62  28
         registerBeanDefinitionParser("payload", new DataObjectDefinitionParser("payload"));
 63  28
     }
 64  
 
 65  
     /**
 66  
      * Need to use the most complex constructors as have mutually exclusive address
 67  
      * aattributes
 68  
      */
 69  
     protected void registerQuartzTransportEndpoints()
 70  
     {
 71  28
         registerQuartzEndpointDefinitionParser("endpoint",
 72  
             new TransportGlobalEndpointDefinitionParser(QuartzConnector.QUARTZ,
 73  
                 TransportGlobalEndpointDefinitionParser.PROTOCOL,
 74  
                 TransportGlobalEndpointDefinitionParser.RESTRICTED_ENDPOINT_ATTRIBUTES, QUARTZ_ATTRIBUTES,
 75  
                 new String[][]{}));
 76  28
         registerQuartzEndpointDefinitionParser("inbound-endpoint", new TransportEndpointDefinitionParser(
 77  
             QuartzConnector.QUARTZ, TransportEndpointDefinitionParser.PROTOCOL, InboundEndpointFactoryBean.class,
 78  
             TransportEndpointDefinitionParser.RESTRICTED_ENDPOINT_ATTRIBUTES, QUARTZ_ATTRIBUTES, new String[][]{}));
 79  28
         registerQuartzEndpointDefinitionParser("outbound-endpoint", new TransportEndpointDefinitionParser(
 80  
             QuartzConnector.QUARTZ, TransportEndpointDefinitionParser.PROTOCOL, OutboundEndpointFactoryBean.class,
 81  
             TransportEndpointDefinitionParser.RESTRICTED_ENDPOINT_ATTRIBUTES, QUARTZ_ATTRIBUTES, new String[][]{}));
 82  28
     }
 83  
 
 84  
     protected void registerQuartzEndpointDefinitionParser(String element, MuleDefinitionParser parser)
 85  
     {
 86  84
         parser.addAlias(JOB_NAME_ATTRIBUTE, URIBuilder.PATH);
 87  84
         registerBeanDefinitionParser(element, parser);
 88  84
     }
 89  
 }