View Javadoc

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