1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.springframework.ws.soap.server.endpoint.adapter.method;
18
19 import org.springframework.core.MethodParameter;
20 import org.springframework.util.Assert;
21 import org.springframework.ws.context.MessageContext;
22 import org.springframework.ws.server.endpoint.adapter.method.MethodArgumentResolver;
23 import org.springframework.ws.soap.SoapBody;
24 import org.springframework.ws.soap.SoapEnvelope;
25 import org.springframework.ws.soap.SoapHeader;
26 import org.springframework.ws.soap.SoapMessage;
27
28
29
30
31
32
33
34
35 public class SoapMethodArgumentResolver implements MethodArgumentResolver {
36
37 public boolean supportsParameter(MethodParameter parameter) {
38 Class<?> parameterType = parameter.getParameterType();
39 return SoapMessage.class.equals(parameterType) || SoapBody.class.equals(parameterType) ||
40 SoapEnvelope.class.equals(parameterType) || SoapHeader.class.equals(parameterType);
41 }
42
43 public Object resolveArgument(MessageContext messageContext, MethodParameter parameter) {
44 Assert.isInstanceOf(SoapMessage.class, messageContext.getRequest());
45 SoapMessage request = (SoapMessage) messageContext.getRequest();
46
47 Class<?> parameterType = parameter.getParameterType();
48
49 if (SoapMessage.class.equals(parameterType)) {
50 return request;
51 }
52 else if (SoapBody.class.equals(parameterType)) {
53 return request.getSoapBody();
54 }
55 else if (SoapEnvelope.class.equals(parameterType)) {
56 return request.getEnvelope();
57 }
58 else if (SoapHeader.class.equals(parameterType)) {
59 return request.getSoapHeader();
60 }
61
62 throw new UnsupportedOperationException();
63 }
64 }