Package hermes.providers.file

Source Code of hermes.providers.file.FileSession

/*
* Copyright 2003,2004 Colin Crist
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
*  Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/

package hermes.providers.file;

import hermes.HermesException;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.QueueBrowser;
import javax.jms.QueueReceiver;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.jms.TemporaryQueue;
import javax.jms.TemporaryTopic;
import javax.jms.Topic;
import javax.jms.TopicSubscriber;

import org.apache.log4j.Logger;

/**
* An XML file provider.
*
* @author colincrist@hermesjms.com
* @version $Id: FileSession.java,v 1.7 2005/07/08 19:42:54 colincrist Exp $
*/

public class FileSession extends FileMessageFactory implements QueueSession {
  private static final Logger log = Logger.getLogger(FileSession.class);
  private static final String SEPARATOR = System.getProperty("file.separator");
  private FileConnection connection;
  private MessageListener listener;
  private boolean transacted;
  private int ackMode;
  private Collection onCommit = new ArrayList();

  public FileSession(FileConnection connection, boolean transacted, int ackMode, String baseDirectory) {
    super(baseDirectory) ;
    this.connection = connection;
    this.transacted = transacted;
    this.ackMode = ackMode;
  }

 

  /*
   * (non-Javadoc)
   *
   * @see javax.jms.Session#close()
   */
  public void close() throws JMSException {
    onCommit.clear();
  }

  /*
   * (non-Javadoc)
   *
   * @see javax.jms.Session#commit()
   */
  public void commit() throws JMSException {
    for (Iterator iter = onCommit.iterator(); iter.hasNext();) {
      Commitable c = (Commitable) iter.next();

      c.commit();
    }
  }

  /*
   * (non-Javadoc)
   *
   * @see javax.jms.Session#getMessageListener()
   */
  public MessageListener getMessageListener() throws JMSException {
    return listener;
  }

  /*
   * (non-Javadoc)
   *
   * @see javax.jms.Session#getTransacted()
   */
  public boolean getTransacted() throws JMSException {
    return transacted;
  }

  /*
   * (non-Javadoc)
   *
   * @see javax.jms.Session#recover()
   */
  public void recover() throws JMSException {

  }

  /*
   * (non-Javadoc)
   *
   * @see javax.jms.Session#rollback()
   */
  public void rollback() throws JMSException {
    for (Iterator iter = onCommit.iterator(); iter.hasNext();) {
      Commitable c = (Commitable) iter.next();

      c.rollback();
    }
  }

  /*
   * (non-Javadoc)
   *
   * @see java.lang.Runnable#run()
   */
  public void run() {

  }

  /*
   * (non-Javadoc)
   *
   * @see javax.jms.Session#setMessageListener(javax.jms.MessageListener)
   */
  public void setMessageListener(MessageListener listener) throws JMSException {
    this.listener = listener;
  }

  /*
   * (non-Javadoc)
   *
   * @see javax.jms.QueueSession#createBrowser(javax.jms.Queue,
   * java.lang.String)
   */
  public QueueBrowser createBrowser(Queue arg0, String arg1) throws JMSException {
    return new FileQueueBrowser(this, (FileQueue) arg0, arg1);
  }

  /*
   * (non-Javadoc)
   *
   * @see javax.jms.QueueSession#createBrowser(javax.jms.Queue)
   */
  public QueueBrowser createBrowser(Queue arg0) throws JMSException {
    return new FileQueueBrowser(this, (FileQueue) arg0);
  }

  /*
   * (non-Javadoc)
   *
   * @see javax.jms.QueueSession#createReceiver(javax.jms.Queue,
   * java.lang.String)
   */
  public QueueReceiver createReceiver(Queue arg0, String arg1) throws JMSException {
    try {
      FileMessageConsumer rval = new FileMessageConsumer(this, (FileQueue) arg0, arg1);
      onCommit.add(rval);
      return rval;
    } catch (IOException e) {
      throw new HermesException(e);
    }
  }

  /*
   * (non-Javadoc)
   *
   * @see javax.jms.QueueSession#createReceiver(javax.jms.Queue)
   */
  public QueueReceiver createReceiver(Queue arg0) throws JMSException {
    try {
      FileMessageConsumer rval = new FileMessageConsumer(this, (FileQueue) arg0, null);
      onCommit.add(rval);
      return rval;
    } catch (IOException e) {
      throw new HermesException(e);
    }
  }

  /*
   * (non-Javadoc)
   *
   * @see javax.jms.QueueSession#createSender(javax.jms.Queue)
   */
  public QueueSender createSender(Queue arg0) throws JMSException {
    FileMessageProducer rval = new FileMessageProducer(this, (FileQueue) arg0);
    onCommit.add(rval);
    return rval;
  }

  /*
   * (non-Javadoc)
   *
   * @see javax.jms.QueueSession#createTemporaryQueue()
   */
  public TemporaryQueue createTemporaryQueue() throws JMSException {
    try {
      return new FileQueue();
    } catch (IOException e) {
      throw new HermesException(e);
    }
  }

  /**
   * @return Returns the connection.
   */
  public FileConnection getConnection() {
    return connection;
  }

  /*
   * (non-Javadoc)
   *
   * @see javax.jms.Session#createConsumer(javax.jms.Destination,
   * java.lang.String, boolean)
   */
  public MessageConsumer createConsumer(Destination arg0, String arg1, boolean arg2) throws JMSException {
    try {
      FileMessageConsumer rval = new FileMessageConsumer(this, (FileQueue) arg0, null);
      onCommit.add(rval);
      return rval;
    } catch (IOException e) {
      throw new HermesException(e);
    }
  }

  /*
   * (non-Javadoc)
   *
   * @see javax.jms.Session#createConsumer(javax.jms.Destination,
   * java.lang.String)
   */
  public MessageConsumer createConsumer(Destination arg0, String arg1) throws JMSException {
    try {
      FileMessageConsumer rval = new FileMessageConsumer(this, (FileQueue) arg0, null);
      onCommit.add(rval);
      return rval;
    } catch (IOException e) {
      throw new HermesException(e);
    }
  }

  /*
   * (non-Javadoc)
   *
   * @see javax.jms.Session#createConsumer(javax.jms.Destination)
   */
  public MessageConsumer createConsumer(Destination arg0) throws JMSException {
    try {
      FileMessageConsumer rval = new FileMessageConsumer(this, (FileQueue) arg0, null);
      onCommit.add(rval);
      return rval;
    } catch (IOException e) {
      throw new HermesException(e);
    }
  }

  /*
   * (non-Javadoc)
   *
   * @see javax.jms.Session#createDurableSubscriber(javax.jms.Topic,
   * java.lang.String, java.lang.String, boolean)
   */
  public TopicSubscriber createDurableSubscriber(Topic arg0, String arg1, String arg2, boolean arg3) throws JMSException {
    // TODO Auto-generated method stub
    return null;
  }

  /*
   * (non-Javadoc)
   *
   * @see javax.jms.Session#createDurableSubscriber(javax.jms.Topic,
   * java.lang.String)
   */
  public TopicSubscriber createDurableSubscriber(Topic arg0, String arg1) throws JMSException {
    // TODO Auto-generated method stub
    return null;
  }

  /*
   * (non-Javadoc)
   *
   * @see javax.jms.Session#createProducer(javax.jms.Destination)
   */
  public MessageProducer createProducer(Destination arg0) throws JMSException {
    FileMessageProducer rval = new FileMessageProducer(this, (FileQueue) arg0);
    onCommit.add(rval);
    return rval;
  }

  /*
   * (non-Javadoc)
   *
   * @see javax.jms.Session#createTemporaryTopic()
   */
  public TemporaryTopic createTemporaryTopic() throws JMSException {
    // TODO Auto-generated method stub
    return null;
  }

  /*
   * (non-Javadoc)
   *
   * @see javax.jms.Session#getAcknowledgeMode()
   */
  public int getAcknowledgeMode() throws JMSException {
    // TODO Auto-generated method stub
    return 0;
  }

  /*
   * (non-Javadoc)
   *
   * @see javax.jms.Session#unsubscribe(java.lang.String)
   */
  public void unsubscribe(String arg0) throws JMSException {
    // TODO Auto-generated method stub

  }
}
TOP

Related Classes of hermes.providers.file.FileSession

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.