[jboss-svn-commits] JBL Code SVN: r11639 - in labs/jbossrules/trunk/drools-jbrms/src: test/java/org/drools/brms/server and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu May 3 07:28:35 EDT 2007
Author: michael.neale at jboss.com
Date: 2007-05-03 07:28:34 -0400 (Thu, 03 May 2007)
New Revision: 11639
Modified:
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/ServiceImplementation.java
labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplementationTest.java
Log:
JBRULES-839
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/ServiceImplementation.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/ServiceImplementation.java 2007-05-03 11:05:50 UTC (rev 11638)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/ServiceImplementation.java 2007-05-03 11:28:34 UTC (rev 11639)
@@ -284,14 +284,17 @@
}
@WebRemote
- public String checkinVersion(RuleAsset asset) throws SerializableException {
+ public String checkinVersion(RuleAsset asset) throws SerializableException {
+
log.info( "CHECKING IN asset: [" + asset.metaData.name + "] UUID: [" + asset.uuid + "] ARCHIVED [" + asset.archived + "]");
-
- System.out.println("CHECKING IN asset: [" + asset.metaData.name + "] UUID: [" + asset.uuid + "] ARCHIVED [" + asset.archived + "]");
AssetItem repoAsset = repository.loadAssetByUUID( asset.uuid );
+ if (asset.metaData.lastModifiedDate.before( repoAsset.getLastModified().getTime()) ) {
+ throw new SerializableException("This asset was saved by someone else previously, and this version will not be overwritten.");
+ }
+
repoAsset.archiveItem( asset.archived );
MetaData meta = asset.metaData;
Modified: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplementationTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplementationTest.java 2007-05-03 11:05:50 UTC (rev 11638)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplementationTest.java 2007-05-03 11:28:34 UTC (rev 11639)
@@ -319,7 +319,9 @@
"drl" );
RuleAsset asset = impl.loadRuleAsset( uuid );
impl.checkinVersion( asset ); //1
+ asset = impl.loadRuleAsset( uuid );
impl.checkinVersion( asset ); //2
+ asset = impl.loadRuleAsset( uuid );
impl.checkinVersion( asset ); //HEAD
TableDataResult result = impl.loadAssetHistory( uuid );
@@ -425,6 +427,26 @@
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);
+
+ try {
+ serv.checkinVersion( asset2 );
+ fail("should have failed optimistic lock.");
+ } catch (SerializableException e) {
+ assertNotNull(e.getMessage());
+ assertEquals(-1, e.getMessage().indexOf( "server" ));
+ }
+
+
}
public void testArchivePackage() throws Exception {
More information about the jboss-svn-commits
mailing list