Author: janstey
Date: Thu Oct 30 07:32:55 2008
New Revision: 709173
URL: http://svn.apache.org/viewvc?rev=709173&view=rev
Log:
CAMEL-1034 - Fix issue with the StreamResequencer. Many thanks to Martin
Krasser for providing the patch for this!
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/StreamResequencer.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/resequencer/ResequencerEngine.java
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/StreamResequencer.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/StreamResequencer.java?rev=709173&r1=709172&r2=709173&view=diff
==============================================================================
---
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/StreamResequencer.java
(original)
+++
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/StreamResequencer.java
Thu Oct 30 07:32:55 2008
@@ -200,7 +200,7 @@
}
public void process(Exchange exchange) throws Exception {
- // empty since exchanges come from endpoint's polling consumer
+ engine.insert(exchange);
}
}
\ No newline at end of file
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/resequencer/ResequencerEngine.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/resequencer/ResequencerEngine.java?rev=709173&r1=709172&r2=709173&view=diff
==============================================================================
---
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/resequencer/ResequencerEngine.java
(original)
+++
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/resequencer/ResequencerEngine.java
Thu Oct 30 07:32:55 2008
@@ -53,9 +53,6 @@
* element needs <code>timeout</code> milliseconds in any case for becoming
* <i>ready-for-delivery</i>.
* <p>
- * <strong>Note:</strong> Instances of this class are not thread-safe.
- * Resequencing should be done by calling [EMAIL PROTECTED] #insert(Object)}
and
- * [EMAIL PROTECTED] #deliver()} or [EMAIL PROTECTED] #deliverNext()} from a
single thread.
*
* @author Martin Krasser
*
@@ -117,7 +114,7 @@
*
* @return the number of elements currently maintained by this resequencer.
*/
- public int size() {
+ public synchronized int size() {
return sequence.size();
}
@@ -186,7 +183,7 @@
*
* @param o an element.
*/
- public void insert(E o) {
+ public synchronized void insert(E o) {
// wrap object into internal element
Element<E> element = new Element<E>(o);
// add element to sequence in proper order
@@ -217,7 +214,7 @@
*
* @see ResequencerEngine#deliverNext()
*/
- public void deliver() throws Exception {
+ public synchronized void deliver() throws Exception {
while (deliverNext()) {
// do nothing here
}