Removed MessageHandlerDecorator (the target object of any Method-invoking adapter can now use standard AOP).

This commit is contained in:
Mark Fisher
2008-09-02 20:54:38 +00:00
parent 30c244aefb
commit 6f2f1640bd
2 changed files with 1 additions and 97 deletions

View File

@@ -1,65 +0,0 @@
/*
* 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.handler;
import org.springframework.integration.message.Message;
import org.springframework.integration.message.MessageHandlingException;
import org.springframework.util.Assert;
/**
* A message handler implementation that intercepts calls to another handler.
*
* @author Mark Fisher
*/
public abstract class MessageHandlerDecorator implements MessageHandler {
private MessageHandler handler;
public MessageHandlerDecorator(MessageHandler handler) {
Assert.notNull(handler, "handler must not be null");
this.handler = handler;
}
public MessageHandlerDecorator() {
}
public void setHandler(MessageHandler handler) {
Assert.notNull(handler, "handler must not be null");
this.handler = handler;
}
public final Message<?> handle(Message<?> message) {
if (this.handler == null) {
throw new MessageHandlingException(message,
"MessageHandlerDecorator's handler must not be null");
}
return this.handleInternal(message, this.handler);
}
/**
* The handler method for subclasses to implement.
*
* @param message the message to handle
* @param handler the intercepted handler
* @return a reply message or null
*/
public abstract Message<?> handleInternal(Message<?> message, MessageHandler handler);
}

View File

@@ -29,7 +29,7 @@ import org.springframework.integration.message.StringMessage;
public class MessageHandlerChainTests {
@Test
public void testSimpleChain() {
public void testChain() {
MessageHandlerChain chain = new MessageHandlerChain();
chain.add(new TestHandler("a"));
chain.add(new TestHandler("b"));
@@ -39,20 +39,6 @@ public class MessageHandlerChainTests {
assertEquals("!abcd", result.getPayload());
}
@Test
public void testChainWithDecorators() {
MessageHandler handler1 = new TestHandler("*");
MessageHandler handler2 = new TestHandlerDecorator("2", handler1);
MessageHandler handler3 = new TestHandlerDecorator("3", handler2);
MessageHandler handler4 = new TestHandlerDecorator("4", handler3);
MessageHandlerChain chain = new MessageHandlerChain();
chain.add(new TestHandler("a"));
chain.add(handler4);
chain.add(new TestHandler("b"));
Message<?> result = chain.handle(new StringMessage("!"));
assertEquals("234!a*234b", result.getPayload());
}
private static class TestHandler implements MessageHandler {
@@ -67,21 +53,4 @@ public class MessageHandlerChainTests {
}
}
private static class TestHandlerDecorator extends MessageHandlerDecorator {
private String text;
TestHandlerDecorator(String text, MessageHandler handler) {
super(handler);
this.text = text;
}
@Override
public Message<?> handleInternal(Message<?> message, MessageHandler handler) {
message = handler.handle(new StringMessage(text + message.getPayload()));
return new StringMessage(message.getPayload() + text);
}
}
}