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