Author: arnaudsimon
Date: Wed Jul 25 07:30:19 2007
New Revision: 559476

URL: http://svn.apache.org/viewvc?view=rev&rev=559476
Log:
first implementation 

Added:
    
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/
    
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/ConnectionImpl.java
   (with props)
    
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/ConnectionMetaDataImpl.java
   (with props)
    
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/CustomJMSXProperty.java
   (with props)
    
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/ExceptionHelper.java
   (with props)
    
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/QpidExceptionListenerImpl.java
   (with props)
    
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/SessionImpl.java
   (with props)

Added: 
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/ConnectionImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/ConnectionImpl.java?view=auto&rev=559476
==============================================================================
--- 
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/ConnectionImpl.java
 (added)
+++ 
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/ConnectionImpl.java
 Wed Jul 25 07:30:19 2007
@@ -0,0 +1,410 @@
+/* Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.apache.qpid.nclient.jms;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.apache.qpid.nclient.exception.QpidException;
+import org.apache.qpid.nclient.api.QueueSessionImpl;
+
+import javax.jms.*;
+import javax.jms.IllegalStateException;
+import javax.jms.Session;
+import javax.jms.ExceptionListener;
+import java.util.Vector;
+
+
+/**
+ * Created by Arnaud Simon
+ * Date: 25-Jul-2007
+ * Time: 09:47:17
+ */
+public class ConnectionImpl implements Connection, QueueConnection, 
TopicConnection
+{
+    /**
+     * This class's logger
+     */
+    private static final Logger _logger = 
LoggerFactory.getLogger(ConnectionImpl.class);
+
+    /**
+     * Maps from session id (Integer) to SessionImpl instance
+     */
+    private final Vector<SessionImpl> _sessions = new Vector<SessionImpl>();
+
+    /**
+     * This is the clientID
+     */
+    private String _clientID;
+
+    /**
+     * The user name to use for authentication
+     */
+    private String _username;
+
+    /**
+     * The password to use for authentication
+     */
+    private String _password;
+
+    /**
+     * The Exception listenr get informed when a serious problem is detected
+     */
+    private ExceptionListener _exceptionListener;
+
+    /**
+     * Whether this connection is started, i.e. whether messages are flowing 
to consumers.
+     * It has no meaning for message publication.
+     */
+    private boolean _started;
+
+    /**
+     * set to true if this Connection has been closed.
+     * <p/>
+     * A closed Connection cannot accept invocations to any of its methods 
with the exception
+     * of close(). All other methods should throw 
javax.jms.IllegalStateExceptions if the
+     * Connection has been closed.
+     * <p/>
+     * A Connection is open after creation, but not started. Once it has been 
closed, a Connection
+     * cannot be reused any more.
+     */
+    private boolean _isClosed = false;
+
+
+    /**
+     * The QpidConeection instance that is mapped with thie JMS connection
+     */
+    org.apache.qpid.nclient.api.Connection _qpidConnection;
+
+    /**
+     * This is the exception listener for this qpid connection.
+     * The jms exception listener is registered with this listener.
+     */
+    QpidExceptionListenerImpl _qpidExceptionListener;
+
+    //------ Constructors ---//
+    /**
+     * TODO define the parameters
+     */
+    public ConnectionImpl()
+    {
+    }
+
+    //---- Interface javax.jms.Connection ---//
+
+    public Session createSession(boolean b, int i)
+            throws
+            JMSException
+    {
+        return null;  //To change body of implemented methods use File | 
Settings | File Templates.
+    }
+
+    /**
+     * Gets the client identifier for this connection.
+     * <P>It is either preconfigured as a JNDI property or assigned 
dynamically by the application
+     * by calling the <code>setClientID</code> method.
+     * <p/>
+     * TODO: Make sure that the client identifier can be set on the 
<CODE>ConnectionFactory</CODE>
+     *
+     * @return The unique client identifier.
+     * @throws JMSException If this connection is closed.
+     */
+    public String getClientID()
+            throws
+            JMSException
+    {
+        checkNotClosed();
+
+        return _clientID;
+    }
+
+    /**
+     * Sets the client identifier for this connection.
+     * <p/>
+     * <P>The preferred way to assign a JMS client's client identifier is for
+     * it to be configured in a client-specific <CODE>ConnectionFactory</CODE>
+     * object and transparently assigned to the <CODE>Connection</CODE> object
+     * it creates.
+     * <p> In AMQP it is not possible to change the client ID. If one is not 
specified
+     * upon connection construction, an id is generated automatically. 
Therefore
+     * we can always throw an exception.
+     * TODO: Make sure that the client identifier can be set on the 
<CODE>ConnectionFactory</CODE>
+     *
+     * @param clientID the unique client identifier
+     * @throws JMSException Always as clientID is always set at construction 
time.
+     */
+    public void setClientID(String clientID)
+            throws
+            JMSException
+    {
+        checkNotClosed();
+        throw new IllegalStateException("Client name cannot be changed after 
being set");
+    }
+
+    /**
+     * Gets the metadata for this connection.
+     *
+     * @return The connection metadata
+     * @throws JMSException If there ie a problem getting the connection 
metadata for this connection.
+     * @see javax.jms.ConnectionMetaData
+     */
+    public ConnectionMetaData getMetaData()
+            throws
+            JMSException
+    {
+        checkNotClosed();
+        return ConnectionMetaDataImpl.getInstance();
+    }
+
+    /**
+     * Gets the <CODE>ExceptionListener</CODE> object for this connection.
+     *
+     * @return the <CODE>ExceptionListener</CODE> for this connection
+     * @throws JMSException In case of unforeseen problem
+     */
+    public ExceptionListener getExceptionListener()
+            throws
+            JMSException
+    {
+        checkNotClosed();
+        return _exceptionListener;
+    }
+
+    /**
+     * Sets an exception listener for this connection.
+     * <p/>
+     * <p> The JMS specification says:
+     * <P>If a JMS provider detects a serious problem with a connection, it
+     * informs the connection's <CODE>ExceptionListener</CODE>, if one has been
+     * registered. It does this by calling the listener's
+     * <CODE>onException</CODE> method, passing it a <CODE>JMSException</CODE>
+     * object describing the problem.
+     * <p/>
+     * <P>A connection serializes execution of its
+     * <CODE>ExceptionListener</CODE>.
+     * <p/>
+     * <P>A JMS provider should attempt to resolve connection problems
+     * itself before it notifies the client of them.
+     *
+     * @param exceptionListener The connection listener.
+     * @throws JMSException If the connection is closed.
+     */
+    public void setExceptionListener(ExceptionListener exceptionListener)
+            throws
+            JMSException
+    {
+        checkNotClosed();
+        _exceptionListener = exceptionListener;
+        _qpidExceptionListener.setJMSExceptionListner(_exceptionListener);
+    }
+
+    /**
+     * Starts (or restarts) a connection's delivery of incoming messages.
+     * A call to start on a connection that has already been
+     * started is ignored.
+     *
+     * @throws JMSException In case of a problem due to some internal error.
+     */
+    public void start()
+            throws
+            JMSException
+    {
+        checkNotClosed();
+        if (!_started)
+        {
+            // start all the sessions
+            for (SessionImpl session : _sessions)
+            {
+                //TODO session.start();
+                //TODO Exception handling
+            }
+            _started = true;
+        }
+    }
+
+    /**
+     * Temporarily stops a connection's delivery of incoming messages.
+     * <p> The JMS specification says:
+     * <p> Delivery can be restarted using the connection's <CODE>start</CODE>
+     * method. When the connection is stopped, delivery to all the 
connection's message consumers is inhibited:
+     * synchronous receives block, and messages are not delivered to message 
listeners.
+     * <P>This call blocks until receives and/or message listeners in progress 
have completed.
+     *
+     * @throws JMSException In case of a problem due to some internal error.
+     */
+    public void stop()
+            throws
+            JMSException
+    {
+        checkNotClosed();
+        if (_started)
+        {
+            // start all the sessions
+            for (SessionImpl session : _sessions)
+            {
+                //TODO session.stop();
+                //TODO Exception handling
+            }
+            _started = false;
+        }
+    }
+
+    /**
+     * Closes the connection.
+     * <p/>
+     * <p> The JMS specification says:
+     * <P>Since a provider typically allocates significant resources outside
+     * the JVM on behalf of a connection, clients should close these resources
+     * when they are not needed. Relying on garbage collection to eventually
+     * reclaim these resources may not be timely enough.
+     * <P>There is no need to close the sessions, producers, and consumers of 
a closed connection.
+     * <P>Closing a connection causes all temporary destinations to be deleted.
+     * <P>When this method is invoked, it should not return until message
+     * processing has been shut down in an orderly fashion.
+     *
+     * @throws JMSException In case of a problem due to some internal error.
+     */
+    public void close()
+            throws
+            JMSException
+    {
+        checkNotClosed();
+        if (!_isClosed)
+        {
+            _isClosed = true;
+            _started = false;
+            // close all the sessions
+            for (SessionImpl session : _sessions)
+            {
+                //TODO session.close();
+                //TODO Exception handling
+            }
+            // close the underlaying Qpid connection
+            try
+            {
+                _qpidConnection.close();
+            }
+            catch (QpidException e)
+            {
+                throw ExceptionHelper.convertQpidExceptionToJMSException(e);
+            }
+        }
+    }
+
+    /**
+     * Creates a connection consumer for this connection (optional operation).
+     * This is an expert facility for App server integration.
+     *
+     * @param destination     The destination to access.
+     * @param messageSelector Only messages with properties matching the 
message selector expression are delivered.
+     * @param sessionPool     The session pool to associate with this 
connection consumer.
+     * @param maxMessages     The maximum number of messages that can be 
assigned to a server session at one time.
+     * @return Null for the moment.
+     * @throws JMSException In case of a problem due to some internal error.
+     */
+    public ConnectionConsumer createConnectionConsumer(Destination 
destination, String messageSelector,
+                                                       ServerSessionPool 
sessionPool, int maxMessages)
+            throws
+            JMSException
+    {
+        checkNotClosed();
+        return null;
+    }
+
+    /**
+     * Create a durable connection consumer for this connection (optional 
operation).
+     *
+     * @param topic            The topic to access.
+     * @param subscriptionName Durable subscription name.
+     * @param messageSelector  Only messages with properties matching the 
message selector expression are delivered.
+     * @param sessionPool      The server session pool to associate with this 
durable connection consumer.
+     * @param maxMessages      The maximum number of messages that can be 
assigned to a server session at one time.
+     * @return Null for the moment.
+     * @throws JMSException In case of a problem due to some internal error.
+     */
+    public ConnectionConsumer createDurableConnectionConsumer(Topic topic, 
String subscriptionName,
+                                                              String 
messageSelector, ServerSessionPool sessionPool,
+                                                              int maxMessages)
+            throws
+            JMSException
+    {
+        checkNotClosed();
+        return null;
+    }
+
+    //-------------- QueueConnection API
+
+    public QueueSession createQueueSession(boolean b, int i)
+            throws
+            JMSException
+    {
+        checkNotClosed();
+        //TODO: create a queue session
+        QueueSessionImpl queueSession = null;
+        _sessions.add(queueSession);
+        return null;  //To change body of implemented methods use File | 
Settings | File Templates.
+    }
+
+    public ConnectionConsumer createConnectionConsumer(Queue queue, String 
string, ServerSessionPool serverSessionPool, int i)
+            throws
+            JMSException
+    {
+        return null;  //To change body of implemented methods use File | 
Settings | File Templates.
+    }
+
+    //-------------- TopicConnection API
+
+    public TopicSession createTopicSession(boolean b, int i)
+            throws
+            JMSException
+    {
+        return null;  //To change body of implemented methods use File | 
Settings | File Templates.
+    }
+
+    public ConnectionConsumer createConnectionConsumer(Topic topic, String 
string, ServerSessionPool serverSessionPool, int i)
+            throws
+            JMSException
+    {
+        return null;  //To change body of implemented methods use File | 
Settings | File Templates.
+    }
+
+    //-------------- protected and private methods
+
+    /**
+     * Validate that the Connection is not closed.
+     * <p/>
+     * If the Connection has been closed, throw a 
javax.jms.IllegalStateException. This behaviour is
+     * required by the JMS specification.
+     *
+     * @throws javax.jms.IllegalStateException
+     *          If the session is closed.
+     */
+    protected synchronized void checkNotClosed()
+            throws
+            IllegalStateException
+    {
+        if (_isClosed)
+        {
+            if (_logger.isDebugEnabled())
+            {
+                _logger.debug("Connection has been closed. Cannot invoke any 
further operations.");
+            }
+            throw new javax.jms.IllegalStateException("Connection has been 
closed. Cannot invoke any further operations.");
+        }
+    }
+
+}

Propchange: 
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/ConnectionImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/ConnectionMetaDataImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/ConnectionMetaDataImpl.java?view=auto&rev=559476
==============================================================================
--- 
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/ConnectionMetaDataImpl.java
 (added)
+++ 
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/ConnectionMetaDataImpl.java
 Wed Jul 25 07:30:19 2007
@@ -0,0 +1,186 @@
+/* Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.apache.qpid.nclient.jms;
+
+import org.apache.qpid.common.QpidProperties;
+
+import javax.jms.ConnectionMetaData;
+import javax.jms.JMSException;
+import java.util.Enumeration;
+
+/**
+ * A <CODE>ConnectionMetaDataImpl</CODE> object provides information 
describing the
+ * JMS <CODE>Connection</CODE>.
+ * <p/>
+ * Created by Arnaud Simon
+ * Date: 25-Jul-2007
+ * Time: 10:47:20
+ */
+public class ConnectionMetaDataImpl implements ConnectionMetaData
+{
+
+    /**
+     * A singleton instance.
+     */
+    static ConnectionMetaDataImpl _singleton = new ConnectionMetaDataImpl();
+
+    // ------------------------  The metadata
+    // JMS major version
+    private static final int JMS_MAJOR_VERSION = 1;
+    // JMS minor version
+    private static final int JMS_MINOR_VERSION = 1;
+    // JMS version
+    private static final String JMS_VERSION = "1.1";
+    // Provider name
+    private static final String PROVIDER_NAME = "Apache " + 
QpidProperties.getProductName();
+    // Provider major version
+    private static final int PROVIDER_MAJOR_VERSION = 0;
+    // Provider minor version
+    private static final int PROVIDER_MINOR_VERSION = 10;
+    // Provider version
+    private static final String PROVIDER_VERSION = 
QpidProperties.getProductName() + " (Client: ["
+            + QpidProperties.getBuildVersion() + "]  ; Protocol: [ 0.10 ] )";
+
+    /**
+     * Prevent instantiation.
+     */
+    private ConnectionMetaDataImpl()
+    {
+    }
+
+    /**
+     * Get the singleton instance of ConnectionMetaDataImpl.
+     *
+     * @return the singleton instance of ConnectionMetaDataImpl.
+     */
+    public static ConnectionMetaDataImpl getInstance()
+    {
+        return _singleton;
+    }
+
+    //-- Connection MetaData API
+
+    /**
+     * Gets the JMS API version.
+     *
+     * @return the JMS API version
+     * @throws JMSException Never
+     */
+    public String getJMSVersion()
+            throws
+            JMSException
+    {
+        return JMS_VERSION;
+    }
+
+
+    /**
+     * Gets the JMS major version number.
+     *
+     * @return the JMS API major version number
+     * @throws JMSException Never
+     */
+    public int getJMSMajorVersion()
+            throws
+            JMSException
+    {
+        return JMS_MAJOR_VERSION;
+    }
+
+
+    /**
+     * Gets the JMS minor version number.
+     *
+     * @return the JMS API minor version number
+     * @throws JMSException Never
+     */
+    public int getJMSMinorVersion()
+            throws
+            JMSException
+    {
+        return JMS_MINOR_VERSION;
+    }
+
+
+    /**
+     * Gets Qpid name.
+     *
+     * @return Qpid name
+     * @throws JMSException Never
+     */
+    public String getJMSProviderName()
+            throws
+            JMSException
+    {
+        return PROVIDER_NAME;
+    }
+
+    /**
+     * Gets Qpid version.
+     *
+     * @return Qpid version
+     * @throws JMSException Never
+     */
+    public String getProviderVersion()
+            throws
+            JMSException
+    {
+        return PROVIDER_VERSION;
+        // TODO: We certainly can dynamically get the server version.
+    }
+
+    /**
+     * Gets Qpid major version number.
+     *
+     * @return Qpid major version number
+     * @throws JMSException Never
+     */
+    public int getProviderMajorVersion()
+            throws
+            JMSException
+    {
+        return PROVIDER_MAJOR_VERSION;
+    }
+
+    /**
+     * Gets Qpid minor version number.
+     *
+     * @return Qpid minor version number
+     * @throws JMSException Never
+     */
+    public int getProviderMinorVersion()
+            throws
+            JMSException
+    {
+        return PROVIDER_MINOR_VERSION;
+    }
+
+    /**
+     * Gets an enumeration of the JMSX property names.
+     *
+     * @return an Enumeration of JMSX property names
+     * @throws JMSException if cannot retrieve metadata due to some internal 
error.
+     */
+    public Enumeration getJMSXPropertyNames()
+            throws
+            JMSException
+    {
+        return CustomJMSXProperty.asEnumeration();
+    }
+
+}

Propchange: 
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/ConnectionMetaDataImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/CustomJMSXProperty.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/CustomJMSXProperty.java?view=auto&rev=559476
==============================================================================
--- 
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/CustomJMSXProperty.java
 (added)
+++ 
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/CustomJMSXProperty.java
 Wed Jul 25 07:30:19 2007
@@ -0,0 +1,47 @@
+/* Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.apache.qpid.nclient.jms;
+
+import java.util.Enumeration;
+import java.util.ArrayList;
+import java.util.Collections;
+
+public enum CustomJMSXProperty
+{
+    JMS_AMQP_NULL,
+    JMS_QPID_DESTTYPE,
+    JMSXGroupID,
+    JMSXGroupSeq;
+
+    private static Enumeration _names;
+
+    public static synchronized Enumeration asEnumeration()
+    {
+        if(_names == null)
+        {
+            CustomJMSXProperty[] properties = values();
+            ArrayList<String> nameList = new 
ArrayList<String>(properties.length);
+            for(CustomJMSXProperty property :  properties)
+            {
+                nameList.add(property.toString());
+            }
+            _names = Collections.enumeration(nameList);
+        }
+        return _names;
+    }
+}

Propchange: 
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/CustomJMSXProperty.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/ExceptionHelper.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/ExceptionHelper.java?view=auto&rev=559476
==============================================================================
--- 
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/ExceptionHelper.java
 (added)
+++ 
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/ExceptionHelper.java
 Wed Jul 25 07:30:19 2007
@@ -0,0 +1,45 @@
+/* Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.apache.qpid.nclient.jms;
+
+import org.apache.qpid.nclient.exception.QpidException;
+
+import javax.jms.JMSException;
+
+/**
+ * Created by Arnaud Simon
+ * Date: 25-Jul-2007
+ * Time: 12:54:00
+ */
+public class ExceptionHelper
+{
+    static public JMSException convertQpidExceptionToJMSException(Exception 
exception)
+    {
+        JMSException jmsException = null;
+        if (exception instanceof QpidException)
+        {
+            jmsException = new JMSException(exception.getMessage(), 
((QpidException) exception).getErrorCode());
+        }
+        else
+        {
+            jmsException = new JMSException(exception.getMessage());
+        }
+        jmsException.setLinkedException(exception);
+        return jmsException;
+    }
+}

Propchange: 
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/ExceptionHelper.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/QpidExceptionListenerImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/QpidExceptionListenerImpl.java?view=auto&rev=559476
==============================================================================
--- 
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/QpidExceptionListenerImpl.java
 (added)
+++ 
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/QpidExceptionListenerImpl.java
 Wed Jul 25 07:30:19 2007
@@ -0,0 +1,54 @@
+/* Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.apache.qpid.nclient.jms;
+
+import org.apache.qpid.nclient.api.ExceptionListener;
+import org.apache.qpid.nclient.exception.QpidException;
+
+import javax.jms.JMSException;
+
+/**
+ * Created by Arnaud Simon
+ * Date: 25-Jul-2007
+ * Time: 12:08:47
+ */
+public class QpidExceptionListenerImpl implements ExceptionListener
+{
+    private javax.jms.ExceptionListener _jmsExceptionListener;
+
+    public QpidExceptionListenerImpl()
+    {
+    }
+
+    void setJMSExceptionListner(javax.jms.ExceptionListener 
jmsExceptionListener)
+    {
+       _jmsExceptionListener = jmsExceptionListener;
+    }
+    //----- ExceptionListener API
+
+    public void onException(QpidException exception)
+    {
+        // convert this exception in a JMS exception
+        JMSException jmsException = 
ExceptionHelper.convertQpidExceptionToJMSException(exception);
+        // propagate to the jms exception listener
+        if( _jmsExceptionListener != null )
+        {
+            _jmsExceptionListener.onException(jmsException);
+        }
+    }
+}

Propchange: 
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/QpidExceptionListenerImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/SessionImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/SessionImpl.java?view=auto&rev=559476
==============================================================================
--- 
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/SessionImpl.java
 (added)
+++ 
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/SessionImpl.java
 Wed Jul 25 07:30:19 2007
@@ -0,0 +1,27 @@
+/* Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.apache.qpid.nclient.jms;
+
+/**
+ * Created by Arnaud Simon
+ * Date: 25-Jul-2007
+ * Time: 12:35:36
+ */
+public class SessionImpl
+{
+}

Propchange: 
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/SessionImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native


Reply via email to