/* * Copyright 2002-2016 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.integration.handler; import org.springframework.messaging.Message; /** * This defines the lowest-level strategy of processing a Message and returning * some Object (or null). Implementations will be focused on generic concerns, * such as invoking a method, running a script, or evaluating an expression. * <p> * Higher level MessageHandler implementations can delegate to these processors * for such functionality, but it is the responsibility of each handler type to * add the semantics such as routing, splitting, transforming, etc. * <p> * In some cases the return value might be a Message itself, but it does not * need to be. It is the responsibility of the caller to determine how to treat * the return value. That may require creating a Message or even creating * multiple Messages from that value. * <p> * This strategy and its various implementations are considered part of the * internal "support" API, intended for use by Spring Integration's various * message-handling components. As such, it is subject to change. * * @author Mark Fisher * @since 2.0 */ @FunctionalInterface public interface MessageProcessor<T> { /** * Process the Message and return a value (or null). * * @param message The message to process. * @return The result. */ T processMessage(Message<?> message); }