alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

Spring Framework example source code file (SqlLobValueTests.java)

This example Spring Framework source code file (SqlLobValueTests.java) is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Java - Spring Framework tags/keywords

argumentsmatcher, bla, bytearrayinputstream, bytearrayinputstream, date, illegalargumentexception, illegalargumentexception, inputstreamreader, io, jdbc, object, sql, sqlexception, sqlexception, sqllobvalue, sqllobvalue, string, util

The Spring Framework SqlLobValueTests.java source code

/*
 * Copyright 2002-2005 the original author or authors.
 * 
 * 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.springframework.jdbc.core.support;

import java.io.ByteArrayInputStream;
import java.io.InputStreamReader;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Types;
import java.util.Arrays;
import java.util.Date;

import junit.framework.TestCase;
import org.easymock.ArgumentsMatcher;
import org.easymock.MockControl;

import org.springframework.jdbc.support.lob.LobCreator;
import org.springframework.jdbc.support.lob.LobHandler;

/**
 * Test cases for the sql lob value:
 *
 * BLOB: 
 *   1. Types.BLOB: setBlobAsBytes (byte[])
 *   2. String: setBlobAsBytes (byte[])
 *   3. else: IllegalArgumentException
 *
 * CLOB:
 *   4. String or NULL: setClobAsString (String)
 *   5. InputStream: setClobAsAsciiStream (InputStream)
 *   6. Reader: setClobAsCharacterStream (Reader)
 *   7. else: IllegalArgumentException
 * 
 * @author Alef Arendsen
 */
public class SqlLobValueTests extends TestCase {
	
	private MockControl psControl;
	private PreparedStatement ps;
	
	private MockControl lobHandlerControl;
	private LobHandler handler;
	
	private MockControl lobCreatorControl;
	private LobCreator creator;
	
	public void setUp() {
		//	create preparedstatement
		psControl = MockControl.createControl(PreparedStatement.class);
		ps = (PreparedStatement) psControl.getMock();
		
		// create handler controler
		lobHandlerControl = MockControl.createControl(LobHandler.class);
		handler = (LobHandler) lobHandlerControl.getMock();
		
		// create creator control
		lobCreatorControl = MockControl.createControl(LobCreator.class);
		creator = (LobCreator) lobCreatorControl.getMock();
		
		// set initial state
		handler.getLobCreator();
		lobHandlerControl.setReturnValue(creator);
	}
	
	private void replay() {
		psControl.replay();
		lobHandlerControl.replay();
		lobCreatorControl.replay();
	}
	
	public void test1() throws SQLException {
		byte[] testBytes = "Bla".getBytes();
		creator.setBlobAsBytes(ps, 1, testBytes);
		replay();
		SqlLobValue lob = new SqlLobValue(testBytes, handler);
		lob.setTypeValue(ps, 1, Types.BLOB, "test");
		lobHandlerControl.verify();
		lobCreatorControl.verify();		
	}
	
	public void test2() throws SQLException {
		String testString = "Bla";
		
		creator.setBlobAsBytes(ps, 1, testString.getBytes());
		// set a matcher to match the byte array!
		lobCreatorControl.setMatcher(new ArgumentsMatcher() {			
			public boolean matches(Object[] arg0, Object[] arg1) {
				byte[] one = (byte[]) arg0[2];
				byte[] two = (byte[]) arg1[2];
				return Arrays.equals(one, two);
			}
			public String toString(Object[] arg0) {				
				return "bla";
			}
		});
		
		replay();

		SqlLobValue lob = new SqlLobValue(testString, handler);
		lob.setTypeValue(ps, 1, Types.BLOB, "test");
		lobHandlerControl.verify();
		lobCreatorControl.verify();		
		
	}
	
	public void test3() 
	throws SQLException {
		
		Date testContent = new Date();
		
		SqlLobValue lob = 
			new SqlLobValue(new InputStreamReader(new ByteArrayInputStream("Bla".getBytes())), 12);
		try {
			lob.setTypeValue(ps, 1, Types.BLOB, "test");
			fail("IllegalArgumentException should have been thrown");
		}
		catch (IllegalArgumentException e) {
			// expected
		}
	}
	
	public void test4() throws SQLException {
		String testContent = "Bla";
		creator.setClobAsString(ps, 1, testContent);
		
		replay();
		
		SqlLobValue lob = new SqlLobValue(testContent, handler);
		lob.setTypeValue(ps, 1, Types.CLOB, "test");
		lobHandlerControl.verify();
		lobCreatorControl.verify();		
	}
	
	public void test5() throws SQLException {
		byte[] testContent = "Bla".getBytes();
		ByteArrayInputStream bais = new ByteArrayInputStream(testContent);
		creator.setClobAsAsciiStream(ps, 1, bais, 3);
		lobCreatorControl.setMatcher(new ArgumentsMatcher() {
			public boolean matches(Object[] arg0, Object[] arg1) {
				// for now, match always
				return true;
			}
			public String toString(Object[] arg0) {
				return null;
			}
		});
		
		replay();
		
		SqlLobValue lob = new SqlLobValue(new ByteArrayInputStream(testContent), 3, handler);
		lob.setTypeValue(ps, 1, Types.CLOB, "test");
		lobHandlerControl.verify();
		lobCreatorControl.verify();		
	}
	
	public void test6()throws SQLException {
		byte[] testContent = "Bla".getBytes();
		ByteArrayInputStream bais = new ByteArrayInputStream(testContent);
		InputStreamReader reader = new InputStreamReader(bais);
		creator.setClobAsCharacterStream(ps, 1, reader, 3);
		lobCreatorControl.setMatcher(new ArgumentsMatcher() {
			public boolean matches(Object[] arg0, Object[] arg1) {
				// for now, match always
				return true;
			}
			public String toString(Object[] arg0) {
				return null;
			}
		});
		
		replay();
		
		SqlLobValue lob = new SqlLobValue(reader, 3, handler);
		lob.setTypeValue(ps, 1, Types.CLOB, "test");
		lobHandlerControl.verify();
		lobCreatorControl.verify();
		
	}
	
	public void test7() throws SQLException {
		Date testContent = new Date();
		
		SqlLobValue lob = new SqlLobValue("bla".getBytes());
		try {
			lob.setTypeValue(ps, 1, Types.CLOB, "test");
			fail("IllegalArgumentException should have been thrown");
		}
		catch (IllegalArgumentException e) {
			// expected
		}
	}
	
	public void testOtherConstructors() throws SQLException {
		// a bit BS, but we need to test them, as long as they don't throw exceptions
		
		SqlLobValue lob = new SqlLobValue("bla");
		lob.setTypeValue(ps, 1, Types.CLOB, "test");
		
		try {
			lob = new SqlLobValue("bla".getBytes());
			lob.setTypeValue(ps, 1, Types.CLOB, "test");
			fail("IllegalArgumentException should have been thrown");
		}
		catch (IllegalArgumentException e) {
			// expected
		}

		lob = new SqlLobValue(new ByteArrayInputStream("bla".getBytes()), 3);
		lob.setTypeValue(ps, 1, Types.CLOB, "test");
		
		lob = new SqlLobValue(new InputStreamReader(
				new ByteArrayInputStream("bla".getBytes())), 3);
		lob.setTypeValue(ps, 1, Types.CLOB, "test");
		
		// same for BLOB		
		lob = new SqlLobValue("bla");
		lob.setTypeValue(ps, 1, Types.BLOB, "test");
		
		lob = new SqlLobValue("bla".getBytes());
		lob.setTypeValue(ps, 1, Types.BLOB, "test");
		
		lob = new SqlLobValue(new ByteArrayInputStream("bla".getBytes()), 3);
		lob.setTypeValue(ps, 1, Types.BLOB, "test");
		
		lob = new SqlLobValue(new InputStreamReader(
				new ByteArrayInputStream("bla".getBytes())), 3);
		
		try {
			lob.setTypeValue(ps, 1, Types.BLOB, "test");
			fail("IllegalArgumentException should have been thrown");
		}
		catch (IllegalArgumentException e) {
			// expected
		}
	}
	
	public void testCorrectCleanup()  throws SQLException {
		creator.setClobAsString(ps, 1, "Bla");
		creator.close();
		
		replay();
		SqlLobValue lob = new SqlLobValue("Bla", handler);
		lob.setTypeValue(ps, 1, Types.CLOB, "test");
		lob.cleanup();
		
		lobCreatorControl.verify();
	}
	
	public void testOtherSqlType() throws SQLException {
		replay();
		SqlLobValue lob = new SqlLobValue("Bla", handler);
		try {
			lob.setTypeValue(ps, 1, Types.SMALLINT, "test");
			fail("IllegalArgumentException should have been thrown");
		}
		catch (IllegalArgumentException e) {
			// expected
		}
	}

}

Other Spring Framework examples (source code examples)

Here is a short list of links related to this Spring Framework SqlLobValueTests.java source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.