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.GrandchildDefinitionParser;
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.configuration.spring.SimpleBeanDefinitionParser;
28 import org.springframework.beans.factory.BeanDefinitionStoreException;
29 import org.springframework.beans.factory.support.AbstractBeanDefinition;
30 import org.springframework.beans.factory.xml.ParserContext;
31 import org.w3c.dom.Element;
32
33 public class CxfNamespaceHandler extends AbstractMuleNamespaceHandler
34 {
35
36 public void init()
37 {
38 MuleOrphanDefinitionParser configParser = new MuleOrphanDefinitionParser(CxfConfiguration.class, true) {
39
40 @Override
41 protected String resolveId(Element element,
42 AbstractBeanDefinition definition,
43 ParserContext parserContext) throws BeanDefinitionStoreException
44 {
45 return CxfConstants.DEFAULT_CXF_CONFIGURATION;
46 }
47
48 };
49 configParser.addIgnored("name");
50 registerMuleBeanDefinitionParser("configuration", configParser);
51
52 MessageProcessorDefinitionParser jsParser = new MessageProcessorDefinitionParser(WebServiceFactoryBean.class);
53 jsParser.registerPreProcessor(new AddAttribute("frontend", CxfConstants.JAX_WS_FRONTEND));
54 registerBeanDefinitionParser("jaxws-service", jsParser);
55
56 MessageProcessorDefinitionParser ssParser = new MessageProcessorDefinitionParser(WebServiceFactoryBean.class);
57 ssParser.registerPreProcessor(new AddAttribute("frontend", CxfConstants.SIMPLE_FRONTEND));
58 registerBeanDefinitionParser("simple-service", ssParser);
59
60 registerBeanDefinitionParser("proxy-service", new MessageProcessorDefinitionParser(ProxyServiceFactoryBean.class));
61
62 registerBeanDefinitionParser("simple-client", new MessageProcessorDefinitionParser(SimpleClientFactoryBean.class));
63 registerBeanDefinitionParser("jaxws-client", new MessageProcessorDefinitionParser(JaxWsClientFactoryBean.class));
64 registerBeanDefinitionParser("proxy-client", new MessageProcessorDefinitionParser(ProxyClientFactoryBean.class));
65
66 registerBeanDefinitionParser(CxfConstants.FEATURES, new ChildListDefinitionParser(CxfConstants.FEATURES));
67
68
69 registerBeanDefinitionParser(CxfConstants.IN_INTERCEPTORS, new ChildListDefinitionParser(CxfConstants.IN_INTERCEPTORS));
70 registerBeanDefinitionParser(CxfConstants.IN_FAULT_INTERCEPTORS, new ChildListDefinitionParser(CxfConstants.IN_FAULT_INTERCEPTORS));
71 registerBeanDefinitionParser(CxfConstants.OUT_INTERCEPTORS, new ChildListDefinitionParser(CxfConstants.OUT_INTERCEPTORS));
72 registerBeanDefinitionParser(CxfConstants.OUT_FAULT_INTERCEPTORS, new ChildListDefinitionParser(CxfConstants.OUT_FAULT_INTERCEPTORS));
73
74 registerBeanDefinitionParser("stax", new SimpleBeanDefinitionParser(StaxFeature.class));
75
76 registerBeanDefinitionParser("wrapper-component", new ComponentDefinitionParser(WebServiceWrapperComponent.class));
77
78 OrphanDefinitionParser parser = new OrphanDefinitionParser(MuleSecurityManagerCallbackHandler.class, true);
79 parser.registerPreProcessor(new AddAttribute("securityManager-ref", "_muleSecurityManager"));
80 registerBeanDefinitionParser("security-manager-callback", parser);
81
82 }
83 }