"this is a description",
"testCheckinCategory",
RulesRepository.DEFAULT_PACKAGE,
AssetFormats.DRL );
RuleAsset asset = serv.loadRuleAsset( uuid );
assertNotNull( asset.metaData.lastModifiedDate );
asset.metaData.coverage = "boo";
asset.content = new RuleContentText();
((RuleContentText) asset.content).content = "yeah !";
Date start = new Date();
Thread.sleep( 100 );
String uuid2 = serv.checkinVersion( asset );
assertEquals( uuid,
uuid2 );
assertTrue( ib.loadRecentEdited().size() > inbox.size() );
RuleAsset asset2 = serv.loadRuleAsset( uuid );
assertNotNull( asset2.metaData.lastModifiedDate );
assertTrue( asset2.metaData.lastModifiedDate.after( start ) );
assertEquals( "boo",
asset2.metaData.coverage );
assertEquals( 1,
asset2.metaData.versionNumber );
assertEquals( "yeah !",
((RuleContentText) asset2.content).content );
asset2.metaData.coverage = "ya";
asset2.metaData.checkinComment = "checked in";
String cat = asset2.metaData.categories[0];
asset2.metaData.categories = new String[3];
asset2.metaData.categories[0] = cat;
asset2.metaData.categories[1] = "testCheckinCategory2";
asset2.metaData.categories[2] = "testCheckinCategory/deeper";
serv.checkinVersion( asset2 );
asset2 = serv.loadRuleAsset( uuid );
assertEquals( "ya",
asset2.metaData.coverage );
assertEquals( 2,
asset2.metaData.versionNumber );
assertEquals( "checked in",
asset2.metaData.checkinComment );
assertEquals( 3,
asset2.metaData.categories.length );
assertEquals( "testCheckinCategory",
asset2.metaData.categories[0] );
assertEquals( "testCheckinCategory2",
asset2.metaData.categories[1] );
assertEquals( "testCheckinCategory/deeper",
asset2.metaData.categories[2] );
// now lets try a concurrent edit of an asset.
// asset3 will be loaded and edited, and then asset2 will try to
// clobber, it, which should fail.
// as it is optimistically locked.
RuleAsset asset3 = serv.loadRuleAsset( asset2.uuid );
asset3.metaData.subject = "new sub";
serv.checkinVersion( asset3 );
asset3 = serv.loadRuleAsset( asset2.uuid );
assertFalse( asset3.metaData.versionNumber == asset2.metaData.versionNumber );