View Javadoc

1   /*
2    * $Id: AjaxNamespaceHandler.java 20321 2010-11-24 15:21:24Z dfeist $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.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.ajax.config;
11  
12  import org.mule.config.spring.handlers.AbstractMuleNamespaceHandler;
13  import org.mule.config.spring.parsers.MuleDefinitionParserConfiguration;
14  import org.mule.config.spring.parsers.generic.MuleOrphanDefinitionParser;
15  import org.mule.config.spring.parsers.specific.endpoint.TransportEndpointDefinitionParser;
16  import org.mule.config.spring.parsers.specific.endpoint.TransportGlobalEndpointDefinitionParser;
17  import org.mule.config.spring.parsers.specific.endpoint.support.AddressedEndpointDefinitionParser;
18  import org.mule.config.spring.parsers.specific.tls.ClientKeyStoreDefinitionParser;
19  import org.mule.config.spring.parsers.specific.tls.KeyStoreDefinitionParser;
20  import org.mule.config.spring.parsers.specific.tls.ProtocolHandlerDefinitionParser;
21  import org.mule.config.spring.parsers.specific.tls.TrustStoreDefinitionParser;
22  import org.mule.endpoint.URIBuilder;
23  import org.mule.transport.ajax.container.AjaxServletConnector;
24  import org.mule.transport.ajax.embedded.AjaxConnector;
25  
26  /**
27   * Registers a Bean Definition Parser for handling <code>&lt;ajax:connector&gt;</code> elements and
28   * <code>&lt;ajax:servlet-connector&gt;</code> elements.
29   */
30  public class AjaxNamespaceHandler extends AbstractMuleNamespaceHandler
31  {
32  
33      public void init()
34      {
35          //Embedded (default) endpoints
36          MuleDefinitionParserConfiguration mdp = registerStandardTransportEndpoints(AjaxConnector.PROTOCOL, new String[]{"channel"});
37          mdp.addAlias(AjaxConnector.CHANNEL_PROPERTY, URIBuilder.PATH);
38          registerConnectorDefinitionParser(AjaxConnector.class);
39  
40          //SSL support (only for embedded)
41          registerBeanDefinitionParser("key-store", new KeyStoreDefinitionParser());
42          registerBeanDefinitionParser("client", new ClientKeyStoreDefinitionParser());
43          registerBeanDefinitionParser("server", new TrustStoreDefinitionParser());
44          registerBeanDefinitionParser("protocol-handler", new ProtocolHandlerDefinitionParser());
45  
46          //Servlet endpoints
47          registerBeanDefinitionParser("servlet-connector", new MuleOrphanDefinitionParser(AjaxServletConnector.class, true));
48          registerBeanDefinitionParser("servlet-endpoint", createServletGlobalEndpointParser(getGlobalEndpointBuilderBeanClass()));
49          registerBeanDefinitionParser("servlet-inbound-endpoint", createServletEndpointParser(getInboundEndpointFactoryBeanClass()));
50          registerBeanDefinitionParser("servlet-outbound-endpoint", createServletEndpointParser(getOutboundEndpointFactoryBeanClass()));
51      }
52  
53  
54      protected AddressedEndpointDefinitionParser createServletEndpointParser(Class factoryBean)
55      {
56          AddressedEndpointDefinitionParser parser = new TransportEndpointDefinitionParser(AjaxServletConnector.PROTOCOL, false, factoryBean, new String[]{"channel"}, new String[]{});
57          parser.addAlias(AjaxConnector.CHANNEL_PROPERTY, URIBuilder.PATH);
58          return parser;
59      }
60  
61      protected AddressedEndpointDefinitionParser createServletGlobalEndpointParser(Class factoryBean)
62      {
63          AddressedEndpointDefinitionParser parser = new TransportGlobalEndpointDefinitionParser(AjaxServletConnector.PROTOCOL, false, factoryBean, new String[]{"channel"}, new String[]{});
64          parser.addAlias(AjaxConnector.CHANNEL_PROPERTY, URIBuilder.PATH);
65          return parser;
66      }
67  
68  }