Package org.apache.jdo.tck.api.persistencemanager

Source Code of org.apache.jdo.tck.api.persistencemanager.DataStoreConnectionThrows$Call

/*
* Copyright 2005 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.jdo.tck.api.persistencemanager;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;

import javax.jdo.datastore.JDOConnection;

import org.apache.jdo.tck.pc.mylib.PCPoint;

import org.apache.jdo.tck.util.BatchTestRunner;

/**
*<B>Title:</B> DataStoreConnectionThrows
*<BR>
*<B>Keywords:</B>
*<BR>
*<B>Assertion ID:</B> A12.16-2
*<BR>
*<B>Assertion Description: </B>
For portability, a JDBC-based JDO implementation
will return an instance that implements
java.sql.Connection. The instance
will throw an exception for any of the
following method calls: commit, getMetaData,
releaseSavepoint, rollback, setAutoCommit,
setCatalog, setHoldability, setReadOnly,
setSavepoint, setTransactionIsolation, and
setTypeMap.
*/

public class DataStoreConnectionThrows extends PersistenceManagerTest {

    /** */
    private static final String ASSERTION_FAILED =
        "Assertion A12.16-2 (DataStoreConnectionThrows) failed: ";
   
    protected PCPoint goldenPoint;
   
    /**
     * The <code>main</code> is called when the class
     * is directly executed from the command line.
     * @param args The arguments passed to the program.
     */
    public static void main(String[] args) {
        BatchTestRunner.run(DataStoreConnectionThrows.class);
    }
   
    /** */
    protected void checkThrow(Connection conn, Call call) {
        try {
            call.execute(conn);
            appendMessage(ASSERTION_FAILED +
                    "Failed to throw an exception for " + call.getName());
        } catch (SQLException ex) {
            appendMessage(ASSERTION_FAILED +
                    "Threw a SQLException for " + call.getName() + NL + ex);
            return;
        } catch (Exception ex) {
            return;
        }
    }

    /** */
    interface Call {
        String getName();
        void execute(Connection conn) throws SQLException;
    }

    /** */
    public void testDataStoreConnectionThrows() {
        if (!(isDataStoreConnectionSupported() && isSQLSupported())) {
            printUnsupportedOptionalFeatureNotTested(
                    this.getClass().getName(),
                    "getDataStoreConnection AND SQLSupported.");
            return;
        }
        JDOConnection jconn = getPM().getDataStoreConnection();
        Connection conn = (Connection)jconn;
        check13Methods(conn);
        if (isJRE14orBetter()) {
            check14Methods(conn);
        }
        jconn.close();
        failOnError();
    }

   /**
    * These methods are defined in Java 1.3 Connection.
    */
    protected void check13Methods(Connection conn) {
        checkThrow(conn,
                new Call() {
                    public String getName() {return "commit";}
                    public void execute(Connection conn)
                        throws SQLException {conn.commit();}
                }
            );
        checkThrow(conn,
                new Call() {
                    public String getName() {return "rollback";}
                    public void execute(Connection conn)
                        throws SQLException {conn.rollback();}
                }
            );
        checkThrow(conn,
                new Call() {
                    public String getName() {return "setTransactionIsolation";}
                    public void execute(Connection conn)
                        throws SQLException {
                        conn.setTransactionIsolation(
                                Connection.TRANSACTION_READ_COMMITTED);}
                }
            );
        checkThrow(conn,
                new Call() {
                    public String getName() {return "setAutoCommit";}
                    public void execute(Connection conn)
                        throws SQLException {conn.setAutoCommit(true);}
                }
            );
        checkThrow(conn,
                new Call() {
                    public String getName() {return "setCatalog";}
                    public void execute(Connection conn)
                        throws SQLException {conn.setCatalog("NONE");}
                }
            );
    }

    /**
     * These methods are defined in Java 1.4 Connection.
     */
    protected void check14Methods(Connection conn) {
        checkThrow(conn,
                new Call() {
                    public String getName() {return "setSavepoint";}
                    public void execute(Connection conn)
                        throws SQLException {conn.setSavepoint();}
                }
            );
        checkThrow(conn,
                new Call() {
                    public String getName() {return "releaseSavepoint";}
                    public void execute(Connection conn)
                        throws SQLException {conn.releaseSavepoint(null);}
                }
            );
        checkThrow(conn,
                new Call() {
                    public String getName() {return "setHoldability";}
                    public void execute(Connection conn)
                        throws SQLException {
                        conn.setHoldability(
                                ResultSet.CLOSE_CURSORS_AT_COMMIT);}
                }
            );
        checkThrow(conn,
                new Call() {
                    public String getName() {return "setTypeMap";}
                    public void execute(Connection conn)
                        throws SQLException {conn.setTypeMap(new HashMap());}
                }
            );
     }
}
TOP

Related Classes of org.apache.jdo.tck.api.persistencemanager.DataStoreConnectionThrows$Call

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.