diff --git a/core/src/main/java/org/springframework/ws/server/endpoint/adapter/method/MethodArgumentResolver.java b/core/src/main/java/org/springframework/ws/server/endpoint/adapter/method/MethodArgumentResolver.java new file mode 100644 index 00000000..6f42549d --- /dev/null +++ b/core/src/main/java/org/springframework/ws/server/endpoint/adapter/method/MethodArgumentResolver.java @@ -0,0 +1,52 @@ +/* + * Copyright 2005-2010 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ws.server.endpoint.adapter.method; + +import org.springframework.core.MethodParameter; +import org.springframework.ws.context.MessageContext; + +/** + * Strategy interface used to resolve method parameters into arguments. This interface is used to allow the {@link + * org.springframework.ws.server.endpoint.adapter.DefaultMethodEndpointAdapter DefaultMethodEndpointAdapter} to be + * indefinitely extensible. + * + * @author Arjen Poutsma + * @since 2.0 + */ +public interface MethodArgumentResolver { + + /** + * Indicates whether the given {@linkplain MethodParameter method parameter} is supported by this resolver. + * + * @param parameter the method parameter to check + * @return {@code true} if this resolver supports the supplied parameter; {@code false} otherwise + */ + boolean supportsMethodParameter(MethodParameter parameter); + + /** + * Resolves the given parameter into a method argument. + * + * @param messageContext the current message context + * @param parameter the parameter to resolve to an argument. This parameter must have previously been passed to + * the {@link #supportsMethodParameter(MethodParameter)} method of this interface, which must + * have returned {@code true}. + * @return the resolved argument. May be {@code null}. + * @throws Exception in case of errors + */ + Object resolveArgument(MessageContext messageContext, MethodParameter parameter) throws Exception; + +} diff --git a/core/src/main/java/org/springframework/ws/server/endpoint/adapter/method/MethodReturnValueResolver.java b/core/src/main/java/org/springframework/ws/server/endpoint/adapter/method/MethodReturnValueResolver.java new file mode 100644 index 00000000..38f5134a --- /dev/null +++ b/core/src/main/java/org/springframework/ws/server/endpoint/adapter/method/MethodReturnValueResolver.java @@ -0,0 +1,54 @@ +/* + * Copyright 2005-2010 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ws.server.endpoint.adapter.method; + +import org.springframework.core.MethodParameter; +import org.springframework.ws.context.MessageContext; + +/** + * Strategy interface used to resolve method return values. This interface is used to allow the {@link + * org.springframework.ws.server.endpoint.adapter.DefaultMethodEndpointAdapter DefaultMethodEndpointAdapter} to be + * indefinitely extensible. + * + * @author Arjen Poutsma + * @since 2.0 + */ +public interface MethodReturnValueResolver { + + /** + * Indicates whether the given {@linkplain MethodParameter method return type} is supported by this resolver. + * + * @param returnType the method return type to check + * @return {@code true} if this resolver supports the supplied return type; {@code false} otherwise + */ + boolean supportsReturnType(MethodParameter returnType); + + /** + * Resolves the given return value into a method argument. + * + * @param messageContext the current message context + * @param returnType the return type to resolve. This type must have previously been passed to the {@link + * #supportsReturnType(MethodParameter)} method of this interface, which must have returned + * {@code true}. + * @param returnValue the return value to resolve. + * @throws Exception in case of errors + */ + void resolveReturnValue(MessageContext messageContext, MethodParameter returnType, Object returnValue) + throws Exception; + + +}