1 /* 2 * Copyright 2005-2010 the original author or authors. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package org.springframework.ws.server.endpoint.adapter; 18 19 import org.springframework.ws.context.MessageContext; 20 import org.springframework.ws.server.EndpointAdapter; 21 import org.springframework.ws.server.endpoint.MethodEndpoint; 22 import org.springframework.xml.transform.TransformerObjectSupport; 23 24 /** 25 * Abstract base class for {@link EndpointAdapter} implementations that support {@link MethodEndpoint}s. Contains 26 * template methods for handling these method endpoints. 27 * 28 * @author Arjen Poutsma 29 * @since 1.0.0 30 */ 31 public abstract class AbstractMethodEndpointAdapter extends TransformerObjectSupport implements EndpointAdapter { 32 33 /** 34 * Delegates to {@link #supportsInternal(org.springframework.ws.server.endpoint.MethodEndpoint)}. 35 * 36 * @param endpoint endpoint object to check 37 * @return whether or not this adapter can adapt the given endpoint 38 */ 39 public final boolean supports(Object endpoint) { 40 return endpoint instanceof MethodEndpoint && supportsInternal((MethodEndpoint) endpoint); 41 } 42 43 /** 44 * Delegates to {@link #invokeInternal(org.springframework.ws.context.MessageContext,MethodEndpoint)}. 45 * 46 * @param messageContext the current message context 47 * @param endpoint the endpoint to use. This object must have previously been passed to the 48 * <code>supportsInternal</code> method of this interface, which must have returned 49 * <code>true</code> 50 * @throws Exception in case of errors 51 */ 52 public final void invoke(MessageContext messageContext, Object endpoint) throws Exception { 53 invokeInternal(messageContext, (MethodEndpoint) endpoint); 54 } 55 56 /** 57 * Given a method endpoint, return whether or not this adapter can support it. 58 * 59 * @param methodEndpoint method endpoint to check 60 * @return whether or not this adapter can adapt the given method 61 */ 62 protected abstract boolean supportsInternal(MethodEndpoint methodEndpoint); 63 64 /** 65 * Use the given method endpoint to handle the request. 66 * 67 * @param messageContext the current message context 68 * @param methodEndpoint the method endpoint to use 69 * @throws Exception in case of errors 70 */ 71 protected abstract void invokeInternal(MessageContext messageContext, MethodEndpoint methodEndpoint) 72 throws Exception; 73 74 }