1
2
3
4
5
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 }