@Test @SuppressWarnings("unchecked") public void testResourceChangeSet() throws IOException { File tempDir = OperatingSystemUtils.createTempDir(); File file = createTempFile(tempDir, true); ResourceTransaction transaction = resourceFactory.getTransaction(); Assert.assertNotNull(transaction); Assert.assertFalse(transaction.isStarted()); transaction.begin(); Assert.assertTrue(transaction.isStarted()); FileResource<?> fileResource = resourceFactory.create(FileResource.class, file); Assert.assertNotNull(fileResource); fileResource.setContents("Hello World"); Assert.assertEquals("Hello World", fileResource.getContents()); Collection<ResourceEvent> changeSet = transaction.getChangeSet(); Assert.assertEquals(3, changeSet.size()); Iterator<ResourceEvent> iterator = changeSet.iterator(); // Created the file { ResourceEvent event = iterator.next(); Assert.assertThat(event, is(instanceOf(ResourceCreated.class))); Assert.assertEquals(fileResource, event.getResource()); } { ResourceEvent event = iterator.next(); // Modified the Directory Assert.assertThat(event, is(instanceOf(ResourceModified.class))); Assert.assertThat(event.getResource(), is(instanceOf(DirectoryResource.class))); } { ResourceEvent event = iterator.next(); // Modified the File resource Assert.assertThat(event, is(instanceOf(ResourceModified.class))); Assert.assertEquals(fileResource, event.getResource()); } Assert.assertFalse(file.exists()); Assert.assertTrue(fileResource.exists()); transaction.commit(); Assert.assertTrue(fileResource.exists()); Assert.assertTrue(file.exists()); Assert.assertEquals("Hello World", fileResource.getContents()); }