From: Juergen H. <jho...@us...> - 2006-04-21 00:14:01
|
Update of /cvsroot/springframework/spring/test/org/springframework/orm/hibernate3/support In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19629/test/org/springframework/orm/hibernate3/support Modified Files: Tag: mbranch-1-2 LobTypeTests.java Log Message: backported fixes and enhancements from 2.0 M4 (HEAD) Index: LobTypeTests.java =================================================================== RCS file: /cvsroot/springframework/spring/test/org/springframework/orm/hibernate3/support/LobTypeTests.java,v retrieving revision 1.3 retrieving revision 1.3.4.1 diff -C2 -d -r1.3 -r1.3.4.1 *** LobTypeTests.java 11 May 2005 12:34:54 -0000 1.3 --- LobTypeTests.java 21 Apr 2006 00:13:51 -0000 1.3.4.1 *************** *** 1,4 **** /* ! * Copyright 2002-2005 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); --- 1,4 ---- /* ! * Copyright 2002-2006 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); *************** *** 33,38 **** import junit.framework.TestCase; - import org.easymock.ArgumentsMatcher; import org.easymock.MockControl; import org.hibernate.SessionFactory; import org.hibernate.classic.Session; --- 33,38 ---- import junit.framework.TestCase; import org.easymock.MockControl; + import org.easymock.internal.ArrayMatcher; import org.hibernate.SessionFactory; import org.hibernate.classic.Session; *************** *** 239,242 **** --- 239,356 ---- } + public void testBlobStringType() throws Exception { + String content = "content"; + byte[] contentBytes = content.getBytes(); + lobHandler.getBlobAsBytes(rs, "column"); + lobHandlerControl.setReturnValue(contentBytes); + lobCreator.setBlobAsBytes(ps, 1, contentBytes); + lobCreatorControl.setMatcher(new ArrayMatcher()); + + lobHandlerControl.replay(); + lobCreatorControl.replay(); + + BlobStringType type = new BlobStringType(lobHandler, null); + assertEquals(1, type.sqlTypes().length); + assertEquals(Types.BLOB, type.sqlTypes()[0]); + assertEquals(String.class, type.returnedClass()); + assertTrue(type.equals("content", "content")); + assertEquals("content", type.deepCopy("content")); + assertFalse(type.isMutable()); + + assertEquals(content, type.nullSafeGet(rs, new String[] {"column"}, null)); + TransactionSynchronizationManager.initSynchronization(); + try { + type.nullSafeSet(ps, content, 1); + List synchs = TransactionSynchronizationManager.getSynchronizations(); + assertEquals(1, synchs.size()); + ((TransactionSynchronization) synchs.get(0)).beforeCompletion(); + ((TransactionSynchronization) synchs.get(0)).afterCompletion(TransactionSynchronization.STATUS_COMMITTED); + } + finally { + TransactionSynchronizationManager.clearSynchronization(); + } + } + + public void testBlobStringTypeWithNull() throws Exception { + lobHandler.getBlobAsBytes(rs, "column"); + lobHandlerControl.setReturnValue(null); + lobCreator.setBlobAsBytes(ps, 1, null); + + lobHandlerControl.replay(); + lobCreatorControl.replay(); + + BlobStringType type = new BlobStringType(lobHandler, null); + assertEquals(null, type.nullSafeGet(rs, new String[] {"column"}, null)); + TransactionSynchronizationManager.initSynchronization(); + try { + type.nullSafeSet(ps, null, 1); + List synchs = TransactionSynchronizationManager.getSynchronizations(); + assertEquals(1, synchs.size()); + ((TransactionSynchronization) synchs.get(0)).beforeCompletion(); + } + finally { + TransactionSynchronizationManager.clearSynchronization(); + } + } + + public void testBlobStringTypeWithJtaSynchronization() throws Exception { + MockControl tmControl = MockControl.createControl(TransactionManager.class); + TransactionManager tm = (TransactionManager) tmControl.getMock(); + MockJtaTransaction transaction = new MockJtaTransaction(); + tm.getStatus(); + tmControl.setReturnValue(Status.STATUS_ACTIVE, 1); + tm.getTransaction(); + tmControl.setReturnValue(transaction, 1); + + String content = "content"; + byte[] contentBytes = content.getBytes(); + lobHandler.getBlobAsBytes(rs, "column"); + lobHandlerControl.setReturnValue(contentBytes); + lobCreator.setBlobAsBytes(ps, 1, contentBytes); + lobCreatorControl.setMatcher(new ArrayMatcher()); + + lobHandlerControl.replay(); + lobCreatorControl.replay(); + + BlobStringType type = new BlobStringType(lobHandler, tm); + assertEquals(content, type.nullSafeGet(rs, new String[] {"column"}, null)); + tmControl.replay(); + type.nullSafeSet(ps, content, 1); + Synchronization synch = transaction.getSynchronization(); + assertNotNull(synch); + synch.beforeCompletion(); + synch.afterCompletion(Status.STATUS_COMMITTED); + tmControl.verify(); + } + + public void testBlobStringTypeWithJtaSynchronizationAndRollback() throws Exception { + MockControl tmControl = MockControl.createControl(TransactionManager.class); + TransactionManager tm = (TransactionManager) tmControl.getMock(); + MockJtaTransaction transaction = new MockJtaTransaction(); + tm.getStatus(); + tmControl.setReturnValue(Status.STATUS_ACTIVE, 1); + tm.getTransaction(); + tmControl.setReturnValue(transaction, 1); + + String content = "content"; + byte[] contentBytes = content.getBytes(); + lobHandler.getBlobAsBytes(rs, "column"); + lobHandlerControl.setReturnValue(contentBytes); + lobCreator.setBlobAsBytes(ps, 1, contentBytes); + lobCreatorControl.setMatcher(new ArrayMatcher()); + + lobHandlerControl.replay(); + lobCreatorControl.replay(); + + BlobStringType type = new BlobStringType(lobHandler, tm); + assertEquals(content, type.nullSafeGet(rs, new String[] {"column"}, null)); + tmControl.replay(); + type.nullSafeSet(ps, content, 1); + Synchronization synch = transaction.getSynchronization(); + assertNotNull(synch); + synch.afterCompletion(Status.STATUS_ROLLEDBACK); + tmControl.verify(); + } + public void testBlobByteArrayType() throws Exception { byte[] content = "content".getBytes(); *************** *** 337,348 **** lobHandlerControl.setReturnValue(new ByteArrayInputStream(baos.toByteArray())); lobCreator.setBlobAsBytes(ps, 1, baos.toByteArray()); ! lobCreatorControl.setMatcher(new ArgumentsMatcher() { ! public boolean matches(Object[] o1, Object[] o2) { ! return Arrays.equals((byte[]) o1[2], (byte[]) o2[2]); ! } ! public String toString(Object[] objects) { ! return null; ! } ! }); lobHandlerControl.replay(); --- 451,455 ---- lobHandlerControl.setReturnValue(new ByteArrayInputStream(baos.toByteArray())); lobCreator.setBlobAsBytes(ps, 1, baos.toByteArray()); ! lobCreatorControl.setMatcher(new ArrayMatcher()); lobHandlerControl.replay(); *************** *** 408,419 **** lobHandlerControl.setReturnValue(new ByteArrayInputStream(baos.toByteArray())); lobCreator.setBlobAsBytes(ps, 1, baos.toByteArray()); ! lobCreatorControl.setMatcher(new ArgumentsMatcher() { ! public boolean matches(Object[] o1, Object[] o2) { ! return Arrays.equals((byte[]) o1[2], (byte[]) o2[2]); ! } ! public String toString(Object[] objects) { ! return null; ! } ! }); lobHandlerControl.replay(); --- 515,519 ---- lobHandlerControl.setReturnValue(new ByteArrayInputStream(baos.toByteArray())); lobCreator.setBlobAsBytes(ps, 1, baos.toByteArray()); ! lobCreatorControl.setMatcher(new ArrayMatcher()); lobHandlerControl.replay(); *************** *** 453,464 **** lobHandlerControl.setReturnValue(new ByteArrayInputStream(baos.toByteArray())); lobCreator.setBlobAsBytes(ps, 1, baos.toByteArray()); ! lobCreatorControl.setMatcher(new ArgumentsMatcher() { ! public boolean matches(Object[] o1, Object[] o2) { ! return Arrays.equals((byte[]) o1[2], (byte[]) o2[2]); ! } ! public String toString(Object[] objects) { ! return null; ! } ! }); lobHandlerControl.replay(); --- 553,557 ---- lobHandlerControl.setReturnValue(new ByteArrayInputStream(baos.toByteArray())); lobCreator.setBlobAsBytes(ps, 1, baos.toByteArray()); ! lobCreatorControl.setMatcher(new ArrayMatcher()); lobHandlerControl.replay(); |