diff --git a/testsuite/src/test/java/org/hibernate/test/readonly/ReadOnlyVersionedNodesTest.java b/testsuite/src/test/java/org/hibernate/test/readonly/ReadOnlyVersionedNodesTest.java index 1b1dd0ef02..599c8db9c8 100644 --- a/testsuite/src/test/java/org/hibernate/test/readonly/ReadOnlyVersionedNodesTest.java +++ b/testsuite/src/test/java/org/hibernate/test/readonly/ReadOnlyVersionedNodesTest.java @@ -127,7 +127,7 @@ public class ReadOnlyVersionedNodesTest extends FunctionalTestCase { s.close(); } - public void testSetUpdateReadOnlyTwice() throws Exception { + public void testUpdateSetReadOnlyTwice() throws Exception { Session s = openSession(); s.beginTransaction(); VersionedNode node = new VersionedNode( "node", "node" ); @@ -192,6 +192,72 @@ public class ReadOnlyVersionedNodesTest extends FunctionalTestCase { s.close(); } + public void testUpdateSetReadOnlySetModifiableFailureExpected() throws Exception { + Session s = openSession(); + s.beginTransaction(); + VersionedNode node = new VersionedNode( "node", "node" ); + s.persist( node ); + s.getTransaction().commit(); + s.close(); + + clearCounts(); + + s = openSession(); + + s.beginTransaction(); + node = ( VersionedNode ) s.get( VersionedNode.class, node.getId() ); + node.setName( "node-name" ); + s.setReadOnly( node, true ); + s.setReadOnly( node, false ); + s.getTransaction().commit(); + s.close(); + + assertUpdateCount( 1 ); + assertInsertCount( 0 ); + + s = openSession(); + s.beginTransaction(); + node = ( VersionedNode ) s.get( VersionedNode.class, node.getId() ); + assertEquals( "node-name", node.getName() ); + assertEquals( 1, node.getVersion() ); + s.delete( node ); + s.getTransaction().commit(); + s.close(); + } + + public void testSetReadOnlyUpdateSetModifiableFailureExpected() throws Exception { + Session s = openSession(); + s.beginTransaction(); + VersionedNode node = new VersionedNode( "node", "node" ); + s.persist( node ); + s.getTransaction().commit(); + s.close(); + + clearCounts(); + + s = openSession(); + + s.beginTransaction(); + node = ( VersionedNode ) s.get( VersionedNode.class, node.getId() ); + s.setReadOnly( node, true ); + node.setName( "node-name" ); + s.setReadOnly( node, false ); + s.getTransaction().commit(); + s.close(); + + assertUpdateCount( 1 ); + assertInsertCount( 0 ); + + s = openSession(); + s.beginTransaction(); + node = ( VersionedNode ) s.get( VersionedNode.class, node.getId() ); + assertEquals( "node-name", node.getName() ); + assertEquals( 1, node.getVersion() ); + s.delete( node ); + s.getTransaction().commit(); + s.close(); + } + public void testAddNewChildToReadOnlyParent() throws Exception { Session s = openSession(); s.beginTransaction();