View Javadoc
1   /*
2    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
3    * The software in this package is published under the terms of the CPAL v1.0
4    * license, a copy of which has been included with this distribution in the
5    * LICENSE.txt file.
6    */
7   package org.mule.transport.ajax.config;
8   
9   import org.mule.config.spring.handlers.AbstractMuleNamespaceHandler;
10  import org.mule.config.spring.parsers.MuleDefinitionParserConfiguration;
11  import org.mule.config.spring.parsers.generic.MuleOrphanDefinitionParser;
12  import org.mule.config.spring.parsers.specific.endpoint.TransportEndpointDefinitionParser;
13  import org.mule.config.spring.parsers.specific.endpoint.TransportGlobalEndpointDefinitionParser;
14  import org.mule.config.spring.parsers.specific.endpoint.support.AddressedEndpointDefinitionParser;
15  import org.mule.config.spring.parsers.specific.tls.ClientKeyStoreDefinitionParser;
16  import org.mule.config.spring.parsers.specific.tls.KeyStoreDefinitionParser;
17  import org.mule.config.spring.parsers.specific.tls.ProtocolHandlerDefinitionParser;
18  import org.mule.config.spring.parsers.specific.tls.TrustStoreDefinitionParser;
19  import org.mule.endpoint.URIBuilder;
20  import org.mule.transport.ajax.container.AjaxServletConnector;
21  import org.mule.transport.ajax.embedded.AjaxConnector;
22  
23  /**
24   * Registers a Bean Definition Parser for handling <code>&lt;ajax:connector&gt;</code> elements and
25   * <code>&lt;ajax:servlet-connector&gt;</code> elements.
26   */
27  public class AjaxNamespaceHandler extends AbstractMuleNamespaceHandler
28  {
29  
30      public void init()
31      {
32          //Embedded (default) endpoints
33          MuleDefinitionParserConfiguration mdp = registerStandardTransportEndpoints(AjaxConnector.PROTOCOL, new String[]{"channel"});
34          mdp.addAlias(AjaxConnector.CHANNEL_PROPERTY, URIBuilder.PATH);
35          registerConnectorDefinitionParser(AjaxConnector.class);
36  
37          //SSL support (only for embedded)
38          registerBeanDefinitionParser("key-store", new KeyStoreDefinitionParser());
39          registerBeanDefinitionParser("client", new ClientKeyStoreDefinitionParser());
40          registerBeanDefinitionParser("server", new TrustStoreDefinitionParser());
41          registerBeanDefinitionParser("protocol-handler", new ProtocolHandlerDefinitionParser());
42  
43          //Servlet endpoints
44          registerBeanDefinitionParser("servlet-connector", new MuleOrphanDefinitionParser(AjaxServletConnector.class, true));
45          registerBeanDefinitionParser("servlet-endpoint", createServletGlobalEndpointParser(getGlobalEndpointBuilderBeanClass()));
46          registerBeanDefinitionParser("servlet-inbound-endpoint", createServletEndpointParser(getInboundEndpointFactoryBeanClass()));
47          registerBeanDefinitionParser("servlet-outbound-endpoint", createServletEndpointParser(getOutboundEndpointFactoryBeanClass()));
48      }
49  
50  
51      protected AddressedEndpointDefinitionParser createServletEndpointParser(Class factoryBean)
52      {
53          AddressedEndpointDefinitionParser parser = new TransportEndpointDefinitionParser(AjaxServletConnector.PROTOCOL, false, factoryBean, new String[]{"channel"}, new String[]{});
54          parser.addAlias(AjaxConnector.CHANNEL_PROPERTY, URIBuilder.PATH);
55          return parser;
56      }
57  
58      protected AddressedEndpointDefinitionParser createServletGlobalEndpointParser(Class factoryBean)
59      {
60          AddressedEndpointDefinitionParser parser = new TransportGlobalEndpointDefinitionParser(AjaxServletConnector.PROTOCOL, false, factoryBean, new String[]{"channel"}, new String[]{});
61          parser.addAlias(AjaxConnector.CHANNEL_PROPERTY, URIBuilder.PATH);
62          return parser;
63      }
64  
65  }