From commits-return-8635-apmail-activemq-commits-archive=activemq.apache.org@activemq.apache.org Fri May 16 09:22:06 2008 Return-Path: Delivered-To: apmail-activemq-commits-archive@www.apache.org Received: (qmail 60383 invoked from network); 16 May 2008 09:22:06 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 16 May 2008 09:22:06 -0000 Received: (qmail 45795 invoked by uid 500); 16 May 2008 09:22:08 -0000 Delivered-To: apmail-activemq-commits-archive@activemq.apache.org Received: (qmail 45768 invoked by uid 500); 16 May 2008 09:22:08 -0000 Mailing-List: contact commits-help@activemq.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@activemq.apache.org Delivered-To: mailing list commits@activemq.apache.org Received: (qmail 45759 invoked by uid 99); 16 May 2008 09:22:07 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 16 May 2008 02:22:07 -0700 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 16 May 2008 09:21:30 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 64CDD23889C4; Fri, 16 May 2008 02:21:45 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r656980 - in /activemq/trunk/activemq-core/src/main/java/org/apache/activemq: ActiveMQMessageConsumer.java ActiveMQSession.java Date: Fri, 16 May 2008 09:21:45 -0000 To: commits@activemq.apache.org From: rajdavies@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20080516092145.64CDD23889C4@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: rajdavies Date: Fri May 16 02:21:44 2008 New Revision: 656980 URL: http://svn.apache.org/viewvc?rev=656980&view=rev Log: Fix for https://issues.apache.org/activemq/browse/AMQ-1732 Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQMessageConsumer.java activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQSession.java Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQMessageConsumer.java URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQMessageConsumer.java?rev=656980&r1=656979&r2=656980&view=diff ============================================================================== --- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQMessageConsumer.java (original) +++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQMessageConsumer.java Fri May 16 02:21:44 2008 @@ -477,7 +477,7 @@ m = ActiveMQMessageTransformation.transformMessage(transformedMessage, session.connection); } } - if (session.isClientAcknowledge()) { + if (session.isClientAcknowledge() || session.isIndividualAcknowledge()) { m.setAcknowledgeCallback(new Callback() { public void execute() throws Exception { session.checkClosed(); @@ -767,7 +767,14 @@ ackLater(md, MessageAck.STANDARD_ACK_TYPE); } else if (session.isClientAcknowledge()) { ackLater(md, MessageAck.DELIVERED_ACK_TYPE); - } else { + } else if (session.isIndividualAcknowledge()){ + MessageAck ack = new MessageAck(md,MessageAck.STANDARD_ACK_TYPE,deliveredMessages.size()); + session.asyncSendPacket(ack); + synchronized(deliveredMessages){ + deliveredMessages.remove(md); + } + } + else { throw new IllegalStateException("Invalid session state."); } } @@ -968,7 +975,7 @@ } afterMessageIsConsumed(md, expired); } catch (RuntimeException e) { - if (session.isDupsOkAcknowledge() || session.isAutoAcknowledge()) { + if (session.isDupsOkAcknowledge() || session.isAutoAcknowledge() || session.isIndividualAcknowledge()) { // Redeliver the message } else { // Transacted or Client ack: Deliver the Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQSession.java URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQSession.java?rev=656980&r1=656979&r2=656980&view=diff ============================================================================== --- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQSession.java (original) +++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQSession.java Fri May 16 02:21:44 2008 @@ -132,6 +132,8 @@ * @see javax.jms.XASession */ public class ActiveMQSession implements Session, QueueSession, TopicSession, StatsCapable, ActiveMQDispatcher { + + public static final int INDIVIDUAL_ACKNOWLEDGE=4; public static interface DeliveryListener { void beforeDelivery(ActiveMQSession session, Message msg); @@ -710,7 +712,7 @@ continue; } - if (isClientAcknowledge()) { + if (isClientAcknowledge()||isIndividualAcknowledge()) { message.setAcknowledgeCallback(new Callback() { public void execute() throws Exception { } @@ -1705,6 +1707,10 @@ public boolean isDupsOkAcknowledge() { return acknowledgementMode == Session.DUPS_OK_ACKNOWLEDGE; } + + public boolean isIndividualAcknowledge(){ + return acknowledgementMode == ActiveMQSession.INDIVIDUAL_ACKNOWLEDGE; + } /** * Returns the message delivery listener.