Added PayloadTransformer strategy interface, MethodInvokingPayloadTransformer, and PayloadTransformingMessageHandler.

This commit is contained in:
Mark Fisher
2008-07-18 18:09:24 +00:00
parent 9487837186
commit a9a498f3fc
5 changed files with 131 additions and 43 deletions

View File

@@ -16,24 +16,15 @@
package org.springframework.integration.transformer;
import org.springframework.integration.handler.MessageHandler;
import org.springframework.integration.message.Message;
import org.springframework.integration.util.AbstractMethodInvokingAdapter;
/**
* @author Mark Fisher
*/
public class TransformerMessageHandlerAdapter implements MessageHandler {
public class MethodInvokingPayloadTransformer extends AbstractMethodInvokingAdapter implements PayloadTransformer<Object, Object> {
private final MessageTransformer transformer;
public TransformerMessageHandlerAdapter(MessageTransformer transformer) {
this.transformer = transformer;
}
public Message<?> handle(Message<?> message) {
return this.transformer.transform(message);
public Object transform(Object payload) throws Exception {
return this.invokeMethod(payload);
}
}

View File

@@ -0,0 +1,26 @@
/*
* Copyright 2002-2008 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.transformer;
/**
* @author Mark Fisher
*/
public interface PayloadTransformer<T, U> {
U transform(T payload) throws Exception;
}

View File

@@ -16,20 +16,30 @@
package org.springframework.integration.transformer;
import org.springframework.integration.handler.MessageHandler;
import org.springframework.integration.message.Message;
import org.springframework.integration.message.MessageBuilder;
import org.springframework.integration.message.MessagingException;
import org.springframework.integration.util.AbstractMethodInvokingAdapter;
import org.springframework.util.Assert;
/**
* @author Mark Fisher
*/
public class PayloadTransformerAdapter extends AbstractMethodInvokingAdapter implements MessageTransformer {
@SuppressWarnings("unchecked")
public class PayloadTransformingMessageHandler implements MessageHandler {
@SuppressWarnings("unchecked")
public Message<?> transform(Message<?> message) {
private final PayloadTransformer transformer;
public PayloadTransformingMessageHandler(PayloadTransformer transformer) {
Assert.notNull(transformer, "transformer must not be null");
this.transformer = transformer;
}
public Message<?> handle(Message<?> message) {
try {
Object result = this.invokeMethod(message.getPayload());
Object result = this.transformer.transform(message.getPayload());
return MessageBuilder.fromPayload(result).copyHeaders(message.getHeaders()).build();
} catch (Exception e) {
throw new MessagingException(message, "failed to transform message payload", e);