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.module.cxf.config;
8   
9   import org.mule.config.spring.handlers.AbstractMuleNamespaceHandler;
10  import org.mule.config.spring.parsers.collection.ChildListDefinitionParser;
11  import org.mule.config.spring.parsers.generic.ChildDefinitionParser;
12  import org.mule.config.spring.parsers.generic.MuleOrphanDefinitionParser;
13  import org.mule.config.spring.parsers.generic.OrphanDefinitionParser;
14  import org.mule.config.spring.parsers.processors.AddAttribute;
15  import org.mule.config.spring.parsers.specific.ComponentDefinitionParser;
16  import org.mule.config.spring.parsers.specific.MessageProcessorDefinitionParser;
17  import org.mule.module.cxf.CxfConfiguration;
18  import org.mule.module.cxf.CxfConstants;
19  import org.mule.module.cxf.component.WebServiceWrapperComponent;
20  import org.mule.module.cxf.support.MuleSecurityManagerCallbackHandler;
21  import org.mule.module.cxf.support.StaxFeature;
22  
23  import org.apache.cxf.aegis.databinding.AegisDatabinding;
24  import org.apache.cxf.configuration.spring.SimpleBeanDefinitionParser;
25  import org.apache.cxf.configuration.spring.StringBeanDefinitionParser;
26  import org.apache.cxf.databinding.source.SourceDataBinding;
27  import org.apache.cxf.databinding.stax.StaxDataBinding;
28  import org.apache.cxf.jaxb.JAXBDataBinding;
29  import org.springframework.beans.factory.BeanDefinitionStoreException;
30  import org.springframework.beans.factory.support.AbstractBeanDefinition;
31  import org.springframework.beans.factory.xml.ParserContext;
32  import org.w3c.dom.Element;
33  
34  public class CxfNamespaceHandler extends AbstractMuleNamespaceHandler
35  {
36  
37      public void init()
38      {
39          MuleOrphanDefinitionParser configParser = new MuleOrphanDefinitionParser(CxfConfiguration.class, true) {
40  
41              @Override
42              protected String resolveId(Element element,
43                                         AbstractBeanDefinition definition,
44                                         ParserContext parserContext) throws BeanDefinitionStoreException
45              {
46                  return CxfConstants.DEFAULT_CXF_CONFIGURATION;
47              }
48  
49          };
50          configParser.addIgnored("name");
51          registerMuleBeanDefinitionParser("configuration", configParser);
52          
53          MessageProcessorDefinitionParser jsParser = new MessageProcessorDefinitionParser(WebServiceFactoryBean.class);
54          jsParser.registerPreProcessor(new AddAttribute("frontend", CxfConstants.JAX_WS_FRONTEND));
55          registerBeanDefinitionParser("jaxws-service", jsParser);
56          
57          MessageProcessorDefinitionParser ssParser = new MessageProcessorDefinitionParser(WebServiceFactoryBean.class);
58          ssParser.registerPreProcessor(new AddAttribute("frontend", CxfConstants.SIMPLE_FRONTEND));
59          registerBeanDefinitionParser("simple-service", ssParser);
60  
61          registerBeanDefinitionParser("proxy-service", new MessageProcessorDefinitionParser(ProxyServiceFactoryBean.class));
62          
63          registerBeanDefinitionParser("simple-client", new MessageProcessorDefinitionParser(SimpleClientFactoryBean.class));
64          registerBeanDefinitionParser("jaxws-client", new MessageProcessorDefinitionParser(JaxWsClientFactoryBean.class));
65          registerBeanDefinitionParser("proxy-client", new MessageProcessorDefinitionParser(ProxyClientFactoryBean.class));
66  
67          registerBeanDefinitionParser(CxfConstants.FEATURES, new ChildListDefinitionParser(CxfConstants.FEATURES));
68          registerBeanDefinitionParser("schemaLocations", new ChildListDefinitionParser("schemaLocations"));
69          registerBeanDefinitionParser("schemaLocation", new StringBeanDefinitionParser());
70          
71          registerBeanDefinitionParser("jaxb-databinding", new ChildDefinitionParser(CxfConstants.DATA_BINDING, JAXBDataBinding.class));
72          registerBeanDefinitionParser("stax-databinding", new ChildDefinitionParser(CxfConstants.DATA_BINDING, StaxDataBinding.class));
73          registerBeanDefinitionParser("source-databinding", new ChildDefinitionParser(CxfConstants.DATA_BINDING, SourceDataBinding.class));
74          registerBeanDefinitionParser("aegis-databinding", new ChildDefinitionParser(CxfConstants.DATA_BINDING, AegisDatabinding.class));
75          registerBeanDefinitionParser("custom-databinding", new ChildDefinitionParser(CxfConstants.DATA_BINDING));
76          
77          registerBeanDefinitionParser(CxfConstants.IN_INTERCEPTORS, new ChildListDefinitionParser(CxfConstants.IN_INTERCEPTORS));
78          registerBeanDefinitionParser(CxfConstants.IN_FAULT_INTERCEPTORS, new ChildListDefinitionParser(CxfConstants.IN_FAULT_INTERCEPTORS));
79          registerBeanDefinitionParser(CxfConstants.OUT_INTERCEPTORS, new ChildListDefinitionParser(CxfConstants.OUT_INTERCEPTORS));
80          registerBeanDefinitionParser(CxfConstants.OUT_FAULT_INTERCEPTORS, new ChildListDefinitionParser(CxfConstants.OUT_FAULT_INTERCEPTORS));
81          
82          registerBeanDefinitionParser("stax", new SimpleBeanDefinitionParser(StaxFeature.class));
83          
84          registerBeanDefinitionParser("wrapper-component", new ComponentDefinitionParser(WebServiceWrapperComponent.class));
85          
86          OrphanDefinitionParser parser = new OrphanDefinitionParser(MuleSecurityManagerCallbackHandler.class, true);
87          parser.registerPreProcessor(new AddAttribute("securityManager-ref", "_muleSecurityManager"));
88          registerBeanDefinitionParser("security-manager-callback", parser);
89          
90      }
91  }