MockConnection.java

/***************************************************************************
   Copyright 2012 Emily Estes

   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 net.metanotion.sql;


import java.util.concurrent.Executor;
import java.util.Properties;
import java.util.Map;
import java.sql.Array;
import java.sql.Blob;
import java.sql.CallableStatement;
import java.sql.Clob;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.NClob;
import java.sql.PreparedStatement;
import java.sql.Savepoint;
import java.sql.SQLException;
import java.sql.SQLFeatureNotSupportedException;
import java.sql.SQLWarning;
import java.sql.SQLXML;
import java.sql.Statement;
import java.sql.Struct;

/** This is a "null" implementation of a JDBC Connection. It's not really meant to be useful
other than as a way to test code with non-null instances of Connection. It would be acceptable
to expand this to a more interesting "mock" implementation of a connection, but it mostly consists
of the bare minimum code to "technically" implement the {@link java.sql.Connection} interface.
*/
public final class MockConnection implements Connection {
	@Override public void abort(final Executor executor) throws SQLException { }
	@Override public void clearWarnings() { }
	@Override public void close() { }
	@Override public void commit() { }
	@Override public Array createArrayOf(final String typeName, final Object[] elements) { return null; }
	@Override public Blob createBlob() { return null;}
	@Override public Clob createClob() { return null; }
	@Override public NClob createNClob() { return null; }
	@Override public SQLXML createSQLXML() { return null; }
	@Override public Statement createStatement() { return new MockStatement(this); }
	@Override public Statement createStatement(final int resultSetType, final int resultSetConcurrency) {
		return new MockStatement(this);
	}
	@Override public Statement createStatement(final int resultSetType,
			final int resultSetConcurrency,
			final int resultSetHoldability) {
		return new MockStatement(this);
	}
	@Override public Struct createStruct(final String typeName, final Object[] attributes) { return null;  }
	@Override public boolean getAutoCommit() { return true; }
	@Override public String getCatalog() { return null; }
	@Override public Properties getClientInfo() { return null; }
	@Override public String getClientInfo(String name) { return null; }
	@Override public int getHoldability() { return 0; }
	@Override public DatabaseMetaData getMetaData() { return null; }
	@Override public int getNetworkTimeout() throws SQLException { return 0; }
	@Override public String getSchema() throws SQLException { return null; }
	@Override public int getTransactionIsolation() { return 0; }
	@Override public Map<String,Class<?>> getTypeMap() { return null; }
	@Override public SQLWarning getWarnings() { return null; }
	@Override public boolean isClosed() { return false; }
	@Override public boolean isReadOnly() { return false; }
	@Override public boolean isValid(final int timeout) { return true; }
	@Override public String nativeSQL(final String sql) { return null; }
	@Override public CallableStatement prepareCall(final String sql) { return new MockStatement(this); }
	@Override public CallableStatement prepareCall(final String sql, final int resultSetType, final int resultSetConcurrency) {
		return new MockStatement(this);
	}
	@Override public CallableStatement prepareCall(final String sql,
			final int resultSetType,
			final int resultSetConcurrency,
			final int resultSetHoldability) {
		return new MockStatement(this);
	}
	@Override public PreparedStatement prepareStatement(final String sql) { return new MockStatement(this); }
	@Override public PreparedStatement prepareStatement(final String sql, final int autoGeneratedKeys) {
		return new MockStatement(this);
	}
	@Override public PreparedStatement prepareStatement(final String sql, final int[] columnIndexes) {
		return new MockStatement(this);
	}
	@Override public PreparedStatement prepareStatement(final String sql,
			final int resultSetType,
			final int resultSetConcurrency) {
		return new MockStatement(this);
	}
	@Override public PreparedStatement prepareStatement(final String sql,
			final int resultSetType,
			final int resultSetConcurrency,
			final int resultSetHoldability) {
		return new MockStatement(this);
	}
	@Override public PreparedStatement prepareStatement(final String sql, final String[] columnNames) {
		return new MockStatement(this);
	}
	@Override public void releaseSavepoint(final Savepoint savepoint) { }
	@Override public void rollback() { }
	@Override public void rollback(final Savepoint savepoint)  { }
	@Override public void setAutoCommit(final boolean autoCommit) { }
	@Override public void setCatalog(final String catalog) { }
	@Override public void setClientInfo(final Properties properties) { }
	@Override public void setClientInfo(final String name, final String value) { }
	@Override public void setHoldability(final int holdability) { }
	@Override public void setNetworkTimeout(final Executor executor, final int milliseconds) throws SQLException {
		throw new SQLFeatureNotSupportedException();
	}
	@Override public void setReadOnly(final boolean readOnly) { }
	@Override public Savepoint setSavepoint() { return null; }
	@Override public Savepoint setSavepoint(final String name) { return null; }
	@Override public void setSchema(final String schema) throws SQLException { }
	@Override public void setTransactionIsolation(final int level) { }
	@Override public void setTypeMap(final Map<String,Class<?>> map) { }
	@Override public boolean isWrapperFor(final Class<?> iface) { return false; }
	@Override public <T> T unwrap(final Class<T> iface) throws SQLException { throw new SQLException(); }
}