/* * Use of this J2EE Connectors Sample Source Code file is governed by * the following modified BSD license: * * Copyright 2002 Sun Microsystems, Inc. All Rights Reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * -Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * -Redistribution in binary form must reproduct the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Sun Microsystems, Inc. or the names of * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * * This software is provided "AS IS," without a warranty of any kind. * ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND * ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES OR LIABILITIES * SUFFERED BY LICENSEE AS A RESULT OF OR RELATING TO USE, MODIFICATION * OR DISTRIBUTION OF THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL * SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, * OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR * PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF * LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE SOFTWARE, * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. * * You acknowledge that Software is not designed, licensed or intended * for use in the design, construction, operation or maintenance of any * nuclear facility. */ package com.sun.connector.blackbox; import javax.resource.spi.ConnectionEvent; import javax.resource.spi.ConnectionEventListener; import javax.resource.spi.ManagedConnection; import java.util.Vector; /** * @author Tony Ng */ public class JdbcConnectionEventListener implements javax.sql.ConnectionEventListener { private Vector listeners; private ManagedConnection mcon; public JdbcConnectionEventListener(ManagedConnection mcon) { listeners = new Vector(); this.mcon = mcon; } public void sendEvent(int eventType, Exception ex, Object connectionHandle) { Vector list = (Vector) listeners.clone(); ConnectionEvent ce = null; if (ex == null) { ce = new ConnectionEvent(mcon, eventType); } else { ce = new ConnectionEvent(mcon, eventType, ex); } if (connectionHandle != null) { ce.setConnectionHandle(connectionHandle); } int size = list.size(); for (int i = 0; i < size; i++) { ConnectionEventListener l = (ConnectionEventListener) list.elementAt(i); switch (eventType) { case ConnectionEvent.CONNECTION_CLOSED: l.connectionClosed(ce); break; case ConnectionEvent.LOCAL_TRANSACTION_STARTED: l.localTransactionStarted(ce); break; case ConnectionEvent.LOCAL_TRANSACTION_COMMITTED: l.localTransactionCommitted(ce); break; case ConnectionEvent.LOCAL_TRANSACTION_ROLLEDBACK: l.localTransactionRolledback(ce); break; case ConnectionEvent.CONNECTION_ERROR_OCCURRED: l.connectionErrorOccurred(ce); System.out.println(" Received CONNECTION_ERROR_OCCURRED in listener"); break; default: throw new IllegalArgumentException("Illegal eventType: " + eventType); } } } public void addConnectorListener(ConnectionEventListener l) { listeners.addElement(l); } public void removeConnectorListener(ConnectionEventListener l) { listeners.removeElement(l); } public void connectionClosed(javax.sql.ConnectionEvent event) { // do nothing. The event is sent by the JdbcConnection wrapper } public void connectionErrorOccurred(javax.sql.ConnectionEvent event) { sendEvent(ConnectionEvent.CONNECTION_ERROR_OCCURRED, event.getSQLException(), null); } }