Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
   *
   * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
   *
   * The contents of this file are subject to the terms of either the GNU
   * General Public License Version 2 only ("GPL") or the Common Development
   * and Distribution License("CDDL") (collectively, the "License").  You
   * may not use this file except in compliance with the License.  You can
  * obtain a copy of the License at
  * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
  * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
  * file and include the License file at packager/legal/LICENSE.txt.
  *
  * GPL Classpath Exception:
  * Oracle designates this particular file as subject to the "Classpath"
  * exception as provided by Oracle in the GPL Version 2 section of the License
  * file that accompanied this code.
  *
  * Modifications:
  * If applicable, add the following below the License Header, with the fields
  * enclosed by brackets [] replaced by your own identifying information:
  * "Portions Copyright [year] [name of copyright owner]"
  *
  * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
  * Version 2] license."  If you don't indicate a single choice of license, a
  * recipient has the option to distribute your version of this file under
  * either the CDDL, the GPL Version 2 or to extend the choice of license to
  * its licensees as provided above.  However, if you add GPL Version 2 code
  * and therefore, elected the GPL Version 2 license, then the option applies
  * only if the new code is made subject to such option by the copyright
  * holder.
  *
  *
  * This file incorporates work covered by the following copyright and
  * permission notice:
  *
  * Copyright 2004 The Apache Software Foundation
  *
  * 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 org.apache.taglibs.standard.tag.common.sql;
 
 
 

Tag handler for <Transaction> in JSTL.

Author(s):
Hans Bergsten
 
 
 public abstract class TransactionTagSupport extends TagSupport 
     implements TryCatchFinally {
 
     //*********************************************************************
     // Private constants
 
     private static final String TRANSACTION_READ_COMMITTED
 	= "read_committed";
     private static final String TRANSACTION_READ_UNCOMMITTED
 	= "read_uncommitted";
     private static final String TRANSACTION_REPEATABLE_READ
 	= "repeatable_read";
     private static final String TRANSACTION_SERIALIZABLE
 	= "serializable";
 
 
     //*********************************************************************
     // Protected state
 
     protected Object rawDataSource;
     protected boolean dataSourceSpecified;
    //*********************************************************************
    // Private state
    private Connection conn;
    private int isolation;
    private int origIsolation;
    //*********************************************************************
    // Constructor and initialization
    public TransactionTagSupport() {
	super();
    }
    private void init() {
	 = null;
	 = null;
    }
    //*********************************************************************
    // Tag logic

    
Prepares for execution by setting the initial state, such as getting the Connection and preparing it for the transaction.
    public int doStartTag() throws JspException {
	if (( == null) && ) {
	    throw new JspException(
                Resources.getMessage("SQL_DATASOURCE_NULL"));
	}
        DataSource dataSource = DataSourceUtil.getDataSource(,
							     );
	try {
	     = dataSource.getConnection();
		throw new JspTagException(
                    Resources.getMessage("TRANSACTION_NO_SUPPORT"));
	    }
		    && ( != )) {
	    }
	    .setAutoCommit(false);
catch (SQLException e) {
	    throw new JspTagException(
                Resources.getMessage("ERROR_GET_CONNECTION",
				     e.toString()), e);
    }

    
Commits the transaction.
    public int doEndTag() throws JspException {
	try {
	    .commit();
catch (SQLException e) {
	    throw new JspTagException(
                Resources.getMessage("TRANSACTION_COMMIT_ERROR",
				     e.toString()), e);
	}
	return ;
    }

    
Rollbacks the transaction and rethrows the Throwable.
    public void doCatch(Throwable tthrows Throwable {
	if ( != null) {
	    try {
	    } catch (SQLException e) {
		// Ignore to not hide orignal exception
	    }
	}
	throw t;
    }

    
Restores the Connection to its initial state and closes it.
    public void doFinally() {
	if ( != null) {
	    try {
		        && ( != )) {
		}
	    } catch (SQLException e) {
		// Not much we can do
	    }
	}
	 = null;
    }
    // Releases any resources we may have (or inherit)
    public void release() {
    }
    //*********************************************************************
    // Public utility methods

    
Setter method for the transaction isolation level.
    public void setIsolation(String isothrows JspTagException {
else if (.equals(iso)) {
else if (.equals(iso)) {
else if (.equals(iso)) {
else {
	    throw new JspTagException(
                Resources.getMessage("TRANSACTION_INVALID_ISOLATION"));
	}
    }

    
Called by nested parameter elements to get a reference to the Connection.
    public Connection getSharedConnection() {
	return ;
    }
New to GrepCode? Check out our FAQ X