Author: hadrian
Date: Tue Jul 28 23:55:20 2009
New Revision: 798728
URL: http://svn.apache.org/viewvc?rev=798728&view=rev
Log:
CAMEL-316. Implement the Fault api as Out. Added a fault flag to Message.
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/Exchange.java
camel/trunk/camel-core/src/main/java/org/apache/camel/Message.java
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java
camel/trunk/camel-core/src/main/java/org/apache/camel/util/ExchangeHelper.java
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/PipelineTest.java
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/enricher/EnricherTest.java
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/non_wrapper/PersonProcessor.java
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/wsdl_first/PersonProcessor.java
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/Exchange.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/Exchange.java?rev=798728&r1=798727&r2=798728&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/Exchange.java
(original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/Exchange.java Tue Jul
28 23:55:20 2009
@@ -222,6 +222,7 @@
*
* @return the fault
*/
+ @Deprecated
Message getFault();
/**
@@ -229,6 +230,7 @@
*
* @return <tt>true</tt> if a FAULT message exists, <tt>false</tt>
otherwise.
*/
+ @Deprecated
boolean hasFault();
/**
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/Message.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/Message.java?rev=798728&r1=798727&r2=798728&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/Message.java
(original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/Message.java Tue Jul
28 23:55:20 2009
@@ -48,6 +48,16 @@
Exchange getExchange();
/**
+ * Returns true if this message represents a fault
+ */
+ boolean isFault();
+
+ /**
+ * Sets the fault flag on this message
+ */
+ void setFault(boolean fault);
+
+ /**
* Accesses a specific header
*
* @param name name of header
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java?rev=798728&r1=798727&r2=798728&view=diff
==============================================================================
---
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
(original)
+++
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java
Tue Jul 28 23:55:20 2009
@@ -45,7 +45,6 @@
private Map<String, Object> properties;
private Message in;
private Message out;
- private Message fault;
private Exception exception;
private String exchangeId;
private UnitOfWork unitOfWork;
@@ -266,7 +265,8 @@
}
public boolean hasFault() {
- return fault != null;
+ Message out = getOut(false);
+ return out != null && out.isFault();
}
public Message getFault() {
@@ -274,17 +274,18 @@
}
public Message getFault(boolean lazyCreate) {
- if (fault == null && lazyCreate) {
- fault = (in != null && in instanceof MessageSupport)
- ? ((MessageSupport)in).newInstance() : new DefaultMessage();
- configureMessage(fault);
+ Message fault = getOut(lazyCreate);
+ if (fault != null) {
+ fault.setFault(true);
}
return fault;
}
public void setFault(Message fault) {
- this.fault = fault;
- configureMessage(fault);
+ if (fault != null) {
+ fault.setFault(true);
+ }
+ setOut(fault);
}
public String getExchangeId() {
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java?rev=798728&r1=798727&r2=798728&view=diff
==============================================================================
---
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java
(original)
+++
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java
Tue Jul 28 23:55:20 2009
@@ -30,6 +30,7 @@
* @version $Revision$
*/
public class DefaultMessage extends MessageSupport {
+ private boolean fault = false;
private Map<String, Object> headers;
private Map<String, DataHandler> attachments;
@@ -38,6 +39,17 @@
return MessageHelper.extractBodyForLogging(this);
}
+ public boolean isFault() {
+ return fault;
+ }
+
+ /**
+ * Sets the fault flag on this message
+ */
+ public void setFault(boolean fault) {
+ this.fault = fault;
+ }
+
public Object getHeader(String name) {
return getHeaders().get(name);
}
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/util/ExchangeHelper.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/util/ExchangeHelper.java?rev=798728&r1=798727&r2=798728&view=diff
==============================================================================
---
camel/trunk/camel-core/src/main/java/org/apache/camel/util/ExchangeHelper.java
(original)
+++
camel/trunk/camel-core/src/main/java/org/apache/camel/util/ExchangeHelper.java
Tue Jul 28 23:55:20 2009
@@ -243,7 +243,7 @@
result.getIn().copyFrom(source.getIn());
// copy out message
- if (source.hasOut()) {
+ if (source.hasOut() && !source.getOut().isFault()) {
// exchange pattern sensitive
getResultMessage(result).copyFrom(source.getOut());
}
Modified:
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/PipelineTest.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/PipelineTest.java?rev=798728&r1=798727&r2=798728&view=diff
==============================================================================
---
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/PipelineTest.java
(original)
+++
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/PipelineTest.java
Tue Jul 28 23:55:20 2009
@@ -104,10 +104,6 @@
// Check the fault..
assertEquals("Fault Message", exchange.getFault().getBody());
assertEquals(2, exchange.getFault().getHeader("copy-counter"));
-
- // Check the out Message.. It should have only been processed once.
- // since the fault should stop it from going to the next process.
- assertEquals(1, exchange.getOut().getHeader("copy-counter"));
}
public void testOnlyProperties() {
Modified:
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/enricher/EnricherTest.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/enricher/EnricherTest.java?rev=798728&r1=798727&r2=798728&view=diff
==============================================================================
---
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/enricher/EnricherTest.java
(original)
+++
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/enricher/EnricherTest.java
Tue Jul 28 23:55:20 2009
@@ -60,7 +60,6 @@
mock.assertIsSatisfied();
assertEquals("test", exchange.getIn().getBody());
assertEquals("failed", exchange.getFault().getBody());
- assertFalse(exchange.hasOut());
assertNull(exchange.getException());
}
@@ -108,7 +107,6 @@
});
assertEquals("test", exchange.getIn().getBody());
assertEquals("failed", exchange.getFault().getBody());
- assertFalse(exchange.hasOut());
assertNull(exchange.getException());
}
Modified:
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java?rev=798728&r1=798727&r2=798728&view=diff
==============================================================================
---
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java
(original)
+++
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java
Tue Jul 28 23:55:20 2009
@@ -89,13 +89,10 @@
// check failure
if (camelExchange.isFailed()) {
- Throwable t =
(Throwable)camelExchange.getFault().getBody();
- if (t instanceof Fault) {
- throw (Fault)t;
- } else if (t == null) {
- t = camelExchange.getException();
- }
- throw new Fault(t);
+ // either Fault or Exception
+ Throwable t = (camelExchange.hasFault())
+ ? (Throwable)camelExchange.getFault().getBody() :
camelExchange.getException();
+ throw (t instanceof Fault) ? (Fault)t : new Fault(t);
}
// bind the Camel response into a CXF response
Modified:
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/non_wrapper/PersonProcessor.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/non_wrapper/PersonProcessor.java?rev=798728&r1=798727&r2=798728&view=diff
==============================================================================
---
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/non_wrapper/PersonProcessor.java
(original)
+++
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/non_wrapper/PersonProcessor.java
Tue Jul 28 23:55:20 2009
@@ -50,8 +50,9 @@
org.apache.camel.non_wrapper.UnknownPersonFault fault =
new org.apache.camel.non_wrapper.UnknownPersonFault("Get the
null value of person name", personFault);
// Since camel has its own exception handler framework, we can't
throw the exception to trigger it
- // We just set the fault message in the exchange for camel-cxf
component handling
+ // We just set the fault message in the exchange for camel-cxf
component handling and return
exchange.getFault().setBody(fault);
+ return;
}
response.setPersonId(personId);
response.setName("Bonjour");
Modified:
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/wsdl_first/PersonProcessor.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/wsdl_first/PersonProcessor.java?rev=798728&r1=798727&r2=798728&view=diff
==============================================================================
---
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/wsdl_first/PersonProcessor.java
(original)
+++
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/wsdl_first/PersonProcessor.java
Tue Jul 28 23:55:20 2009
@@ -52,8 +52,9 @@
org.apache.camel.wsdl_first.UnknownPersonFault fault =
new org.apache.camel.wsdl_first.UnknownPersonFault("Get the
null value of person name", personFault);
// Since camel has its own exception handler framework, we can't
throw the exception to trigger it
- // We just set the fault message in the exchange for camel-cxf
component handling
+ // We just set the fault message in the exchange for camel-cxf
component handling and return
exchange.getFault().setBody(fault);
+ return;
}
name.value = "Bonjour";