* Tests that optimistic locking prevents UPDATE if file is modified
* externally.
*/
public void testOptimisticLockingUpdateFail() throws Exception
{
Metadata metadata = loadMetadata("filestorage");
InvocationContext context = new InvocationContext(metadata);
try
{
/* ***** Configure the data source connection with temporary directories ***** */
File mainDir = TempFileUtil.makeTemporaryDirectory(getName());
File tempDir = new File(mainDir, "temp");
File dataDir = new File(mainDir, "data");
File jrnlDir = new File(mainDir, "journal");
assertTrue(tempDir.mkdir());
assertTrue(dataDir.mkdir());
assertTrue(jrnlDir.mkdir());
DataSource ds = metadata.getDataSource("TestFilePersistenceDataSource");
assertEquals(1, ds.getFragmentCount());
FileDataSourceFragment defaultFrag = (FileDataSourceFragment)ds.getDefaultFragment();
defaultFrag.debugSettings(dataDir.getAbsolutePath(),
tempDir.getAbsolutePath(),
jrnlDir.getAbsolutePath());
//Write a data file
File dataFile = new File(dataDir, "u_" + SysUtil.FILE_SEP + "__" + SysUtil.FILE_SEP + "__" + SysUtil.FILE_SEP + "u");
assertTrue(dataFile.getParentFile().mkdirs());
Writer writer = IOUtil.openBufferedWriter(dataFile, XMLUtil.ENCODING);
writer.write("Original contents");
writer.close();
long lOriginalModified = dataFile.lastModified();
//Now try to do a query.
assertNull(context.beginTransaction());
Metaclass testFPA = metadata.getMetaclass("TestFPA");
Object where = parse("(= (@ id) \"u\")");
Query query = Query.createRead(testFPA, null, where, null, 10, 0, false, Query.SEC_NONE, context);
InstanceList resultList = query.read();