1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.springframework.ws.server.endpoint.adapter;
18
19 import java.lang.reflect.Method;
20 import javax.xml.transform.Source;
21
22 import org.springframework.ws.WebServiceMessage;
23 import org.springframework.ws.context.MessageContext;
24 import org.springframework.ws.server.MessageDispatcher;
25 import org.springframework.ws.server.endpoint.MethodEndpoint;
26 import org.springframework.ws.soap.server.SoapMessageDispatcher;
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 public class PayloadMethodEndpointAdapter extends AbstractMethodEndpointAdapter {
46
47 protected boolean supportsInternal(MethodEndpoint methodEndpoint) {
48 Method method = methodEndpoint.getMethod();
49 return (Void.TYPE.isAssignableFrom(method.getReturnType()) ||
50 Source.class.isAssignableFrom(method.getReturnType())) && method.getParameterTypes().length == 1 &&
51 Source.class.isAssignableFrom(method.getParameterTypes()[0]);
52
53 }
54
55 protected void invokeInternal(MessageContext messageContext, MethodEndpoint methodEndpoint) throws Exception {
56 Source requestSource = messageContext.getRequest().getPayloadSource();
57 Object result = methodEndpoint.invoke(new Object[]{requestSource});
58 if (result != null) {
59 Source responseSource = (Source) result;
60 WebServiceMessage response = messageContext.getResponse();
61 transform(responseSource, response.getPayloadResult());
62 }
63 }
64 }