You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by ge...@apache.org on 2009/02/10 12:55:50 UTC
svn commit: r742943 - in
/servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-eip/src:
main/java/org/apache/servicemix/eip/patterns/ContentEnricher.java
test/java/org/apache/servicemix/eip/ContentEnricherTest.java
Author: gertv
Date: Tue Feb 10 11:55:33 2009
New Revision: 742943
URL: http://svn.apache.org/viewvc?rev=742943&view=rev
Log:
SM-1796: Content enricher does not handle StreamSource correctly
Modified:
servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-eip/src/main/java/org/apache/servicemix/eip/patterns/ContentEnricher.java
servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-eip/src/test/java/org/apache/servicemix/eip/ContentEnricherTest.java
Modified: servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-eip/src/main/java/org/apache/servicemix/eip/patterns/ContentEnricher.java
URL: http://svn.apache.org/viewvc/servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-eip/src/main/java/org/apache/servicemix/eip/patterns/ContentEnricher.java?rev=742943&r1=742942&r2=742943&view=diff
==============================================================================
--- servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-eip/src/main/java/org/apache/servicemix/eip/patterns/ContentEnricher.java (original)
+++ servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-eip/src/main/java/org/apache/servicemix/eip/patterns/ContentEnricher.java Tue Feb 10 11:55:33 2009
@@ -195,6 +195,9 @@
InOut enricherTargetME = getExchangeFactory().createInOutExchange();
enricherTarget.configureTarget(enricherTargetME, getContext());
+
+ //ensure that both this class and the enricher target can read the message content
+ MessageUtil.enableContentRereadability(exchange.getMessage("in"));
MessageUtil.transferInToIn(exchange, enricherTargetME);
sendSync(enricherTargetME);
Modified: servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-eip/src/test/java/org/apache/servicemix/eip/ContentEnricherTest.java
URL: http://svn.apache.org/viewvc/servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-eip/src/test/java/org/apache/servicemix/eip/ContentEnricherTest.java?rev=742943&r1=742942&r2=742943&view=diff
==============================================================================
--- servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-eip/src/test/java/org/apache/servicemix/eip/ContentEnricherTest.java (original)
+++ servicemix/smx3/branches/servicemix-3.2/deployables/serviceengines/servicemix-eip/src/test/java/org/apache/servicemix/eip/ContentEnricherTest.java Tue Feb 10 11:55:33 2009
@@ -19,6 +19,7 @@
import javax.jbi.messaging.ExchangeStatus;
import javax.jbi.messaging.InOnly;
import javax.jbi.messaging.InOut;
+import javax.jbi.messaging.MessageExchange;
import javax.jbi.messaging.NormalizedMessage;
import javax.xml.namespace.QName;
import javax.xml.transform.dom.DOMSource;
@@ -26,20 +27,24 @@
import org.w3c.dom.Document;
import org.w3c.dom.Element;
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
+import org.apache.servicemix.components.util.TransformComponentSupport;
import org.apache.servicemix.eip.patterns.ContentEnricher;
+import org.apache.servicemix.jbi.jaxp.SourceTransformer;
import org.apache.servicemix.jbi.util.DOMUtil;
import org.apache.servicemix.tck.ReceiverComponent;
public class ContentEnricherTest extends AbstractEIPTest {
+ private static final Logger ROOT_LOGGER = Logger.getRootLogger();
protected ContentEnricher enricher;
protected void setUp() throws Exception {
super.setUp();
enricher = new ContentEnricher();
- enricher.setEnricherTarget(createServiceExchangeTarget(new QName(
- "enricherTarget")));
+ enricher.setEnricherTarget(createServiceExchangeTarget(new QName("enricherTarget")));
enricher.setTarget(createServiceExchangeTarget(new QName("target")));
configurePattern(enricher);
@@ -47,10 +52,35 @@
}
public void testInOnly() throws Exception {
+ activateComponent(new ReturnMockComponent("<halloMock/>"), "enricherTarget");
+ sendAndAssertInOnly();
+ }
+
+ public void testInOnlyEnricherTargetConsumerStreamSource() throws Exception {
+ //disable debug level to avoid StreamSource conversion
+ Level original = ROOT_LOGGER.getLevel();
+ ROOT_LOGGER.setLevel(Level.INFO);
+ try {
+ activateComponent(new TransformComponentSupport() {
+
+ private final SourceTransformer transformer = new SourceTransformer();
+
+ public boolean transform(MessageExchange exchange, NormalizedMessage in, NormalizedMessage out) throws Exception {
+ //let's consume the in message's content stream and set the out message's content to another stream
+ transformer.toString(in.getContent());
+ out.setContent(createSource("<halloMock/>"));
+ return true;
+ }
+
+ }, "enricherTarget");
+ sendAndAssertInOnly();
+ } finally {
+ //restore the original log level
+ ROOT_LOGGER.setLevel(original);
+ }
+ }
- activateComponent(new ReturnMockComponent("<halloMock/>"),
- "enricherTarget");
-
+ private void sendAndAssertInOnly() throws Exception {
ReceiverComponent rec = activateReceiver("target");
InOnly me = client.createInOnlyExchange();
@@ -63,8 +93,7 @@
assertEquals(1, rec.getMessageList().getMessageCount());
- NormalizedMessage object = (NormalizedMessage) rec.getMessageList()
- .getMessages().get(0);
+ NormalizedMessage object = (NormalizedMessage) rec.getMessageList().getMessages().get(0);
DOMSource domSource = (DOMSource) object.getContent();
Document doc = (Document) domSource.getNode();
@@ -81,8 +110,7 @@
public void testInOut() throws Exception {
- activateComponent(new ReturnMockComponent("<halloMock/>"),
- "enricherTarget");
+ activateComponent(new ReturnMockComponent("<halloMock/>"), "enricherTarget");
InOut me = client.createInOutExchange();