1
2
3
4
5
6
7
8
9
10
11 package org.mule.module.cxf.builder;
12
13 import org.mule.module.cxf.CxfConstants;
14 import org.mule.module.cxf.support.CopyAttachmentInInterceptor;
15 import org.mule.module.cxf.support.CopyAttachmentOutInterceptor;
16 import org.mule.module.cxf.support.CxfUtils;
17 import org.mule.module.cxf.support.OutputPayloadInterceptor;
18 import org.mule.module.cxf.support.ProxyService;
19 import org.mule.module.cxf.support.ProxyServiceFactoryBean;
20 import org.mule.module.cxf.support.ResetStaxInterceptor;
21 import org.mule.module.cxf.support.ReversibleStaxInInterceptor;
22
23 import org.apache.cxf.binding.soap.interceptor.SoapOutInterceptor;
24 import org.apache.cxf.databinding.stax.StaxDataBinding;
25 import org.apache.cxf.databinding.stax.StaxDataBindingFeature;
26 import org.apache.cxf.endpoint.Server;
27 import org.apache.cxf.frontend.ServerFactoryBean;
28
29
30
31
32
33
34
35
36
37
38 public class ProxyServiceMessageProcessorBuilder extends AbstractInboundMessageProcessorBuilder
39 {
40 private String payload;
41
42 @Override
43 protected ServerFactoryBean createServerFactory() throws Exception
44 {
45 ServerFactoryBean sfb = new ServerFactoryBean();
46 sfb.setDataBinding(new StaxDataBinding());
47 sfb.getFeatures().add(new StaxDataBindingFeature());
48 sfb.setServiceFactory(new ProxyServiceFactoryBean());
49 sfb.setServiceClass(ProxyService.class);
50
51 addProxyInterceptors(sfb);
52
53 return sfb;
54 }
55
56 @Override
57 protected Class<?> getServiceClass()
58 {
59 return ProxyService.class;
60 }
61
62 @Override
63 protected void configureServer(Server server)
64 {
65 if (isProxyEnvelope())
66 {
67 CxfUtils.removeInterceptor(server.getEndpoint().getBinding().getOutInterceptors(), SoapOutInterceptor.class.getName());
68 }
69
70 }
71
72 @Override
73 public boolean isProxy()
74 {
75 return true;
76 }
77
78 protected void addProxyInterceptors(ServerFactoryBean sfb)
79 {
80 sfb.getOutInterceptors().add(new OutputPayloadInterceptor());
81 sfb.getInInterceptors().add(new CopyAttachmentInInterceptor());
82 sfb.getOutInterceptors().add(new CopyAttachmentOutInterceptor());
83
84 if (isProxyEnvelope())
85 {
86 sfb.getInInterceptors().add(new ReversibleStaxInInterceptor());
87 sfb.getInInterceptors().add(new ResetStaxInterceptor());
88 }
89 }
90
91 public boolean isProxyEnvelope()
92 {
93 return CxfConstants.PAYLOAD_ENVELOPE.equals(payload);
94 }
95
96 public String getPayload()
97 {
98 return payload;
99 }
100
101 public void setPayload(String payload)
102 {
103 this.payload = payload;
104 }
105
106 }