001 /** 002 * 003 * Copyright 2005 LogicBlaze, Inc. 004 * 005 * Licensed under the Apache License, Version 2.0 (the "License"); 006 * you may not use this file except in compliance with the License. 007 * You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 * 017 **/ 018 package org.jencks; 019 020 import javax.jms.JMSException; 021 import javax.jms.Message; 022 import javax.jms.MessageListener; 023 import javax.resource.ResourceException; 024 import javax.resource.spi.endpoint.MessageEndpoint; 025 import java.lang.reflect.Method; 026 027 /** 028 * An endpoint which uses a JMS {@link javax.jms.Message#acknowledge()} to 029 * acknowledge that a message is delivered. 030 * 031 * @version $Revision: 1.1.1.1 $ 032 */ 033 public class AcknowledgeEndpoint implements MessageEndpoint, MessageListener { 034 035 private MessageListener messageListener; 036 private Message message; 037 038 public AcknowledgeEndpoint(MessageListener messageListener) { 039 this.messageListener = messageListener; 040 } 041 042 public void beforeDelivery(Method method) throws NoSuchMethodException, ResourceException { 043 } 044 045 public void afterDelivery() throws ResourceException { 046 if (message == null) { 047 throw new ResourceException("No message has been delivered yet"); 048 } 049 try { 050 message.acknowledge(); 051 } 052 catch (JMSException e) { 053 throw new ResourceException(e); 054 } 055 finally { 056 message = null; 057 } 058 } 059 060 public void release() { 061 } 062 063 public void onMessage(Message message) { 064 messageListener.onMessage(message); 065 this.message = message; 066 } 067 }