[jboss-svn-commits] JBL Code SVN: r6078 - in labs/jbossrules/trunk/drools-repository/src/java/org/drools/repository: . test
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Sep 4 09:02:22 EDT 2006
Author: michael.neale at jboss.com
Date: 2006-09-04 09:02:17 -0400 (Mon, 04 Sep 2006)
New Revision: 6078
Modified:
labs/jbossrules/trunk/drools-repository/src/java/org/drools/repository/RuleItem.java
labs/jbossrules/trunk/drools-repository/src/java/org/drools/repository/VersionableItem.java
labs/jbossrules/trunk/drools-repository/src/java/org/drools/repository/test/RuleItemTestCase.java
labs/jbossrules/trunk/drools-repository/src/java/org/drools/repository/test/ScalabilityTest.java
Log:
more working
Modified: labs/jbossrules/trunk/drools-repository/src/java/org/drools/repository/RuleItem.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/java/org/drools/repository/RuleItem.java 2006-09-04 11:43:32 UTC (rev 6077)
+++ labs/jbossrules/trunk/drools-repository/src/java/org/drools/repository/RuleItem.java 2006-09-04 13:02:17 UTC (rev 6078)
@@ -299,11 +299,7 @@
public void addCategory(String tag) throws RulesRepositoryException {
try {
//make sure this object's node is the head version
- if(this.node.getPrimaryNodeType().getName().equals("nt:version")) {
- String message = "Error. Tags can only be added to the head version of a rule node";
- log.error(message);
- throw new RulesRepositoryException(message);
- }
+ checkIsUpdateable();
CategoryItem tagItem = this.rulesRepository.getOrCreateCategory(tag);
@@ -346,6 +342,8 @@
}
}
+
+
/**
* Removes the specified tag from this object's rule node.
*
Modified: labs/jbossrules/trunk/drools-repository/src/java/org/drools/repository/VersionableItem.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/java/org/drools/repository/VersionableItem.java 2006-09-04 11:43:32 UTC (rev 6077)
+++ labs/jbossrules/trunk/drools-repository/src/java/org/drools/repository/VersionableItem.java 2006-09-04 13:02:17 UTC (rev 6078)
@@ -50,6 +50,7 @@
public static final String RULE_PACKAGE_FORMAT = "Rule Package";
public static final String FUNCTION_FORMAT = "Function";
+ /** this is what is referred to when reading content from a versioned node */
private Node contentNode = null;
/**
@@ -181,12 +182,7 @@
*/
public String getTitle() throws RulesRepositoryException {
try {
- Node theNode;
- if ( this.node.getPrimaryNodeType().getName().equals( "nt:version" ) ) {
- theNode = this.node.getNode( "jcr:frozenNode" );
- } else {
- theNode = this.node;
- }
+ Node theNode = getVersionContentNode();
Property data = theNode.getProperty( TITLE_PROPERTY_NAME );
return data.getValue().getString();
@@ -209,18 +205,15 @@
*/
public void updateTitle(String title) throws RulesRepositoryException {
try {
- Node theNode = getVersionContentNode();
+ checkIsUpdateable();
- theNode.checkout();
- theNode.setProperty( TITLE_PROPERTY_NAME,
+ node.checkout();
+ node.setProperty( TITLE_PROPERTY_NAME,
title );
-
Calendar lastModified = Calendar.getInstance();
this.node.setProperty( LAST_MODIFIED_PROPERTY_NAME,
lastModified );
- theNode.save();
- theNode.checkin();
} catch ( Exception e ) {
log.error( "Caught Exception",
e );
@@ -430,4 +423,17 @@
throw new RulesRepositoryException("Unable to checkin.", e);
}
}
+
+ /**
+ * This will check to see if the node is the "head" and
+ * so can be updated (you can't update historical nodes ).
+ * @throws RepositoryException
+ */
+ protected void checkIsUpdateable() throws RepositoryException {
+ if(this.node.getPrimaryNodeType().getName().equals("nt:version")) {
+ String message = "Error. Tags can only be added to the head version of a rule node";
+ log.error(message);
+ throw new RulesRepositoryException(message);
+ }
+ }
}
Modified: labs/jbossrules/trunk/drools-repository/src/java/org/drools/repository/test/RuleItemTestCase.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/java/org/drools/repository/test/RuleItemTestCase.java 2006-09-04 11:43:32 UTC (rev 6077)
+++ labs/jbossrules/trunk/drools-repository/src/java/org/drools/repository/test/RuleItemTestCase.java 2006-09-04 13:02:17 UTC (rev 6078)
@@ -5,6 +5,8 @@
import java.util.Iterator;
import java.util.List;
+import javax.jcr.RepositoryException;
+
import junit.framework.TestCase;
import org.drools.repository.*;
@@ -257,7 +259,7 @@
}
}
- public void testGetDescription() {
+ public void testSaveAndCheckinDescriptionAndTitle() throws Exception {
RuleItem ruleItem1 = getRepo().addRule("testGetDescription", "test lhs content", "test rhs content");
//it should be "" to begin with
@@ -265,6 +267,30 @@
ruleItem1.updateDescription("test description");
assertEquals("test description", ruleItem1.getDescription());
+
+
+
+
+ assertFalse(getRepo().getSession().hasPendingChanges());
+
+ ruleItem1.updateTitle( "This is a title" );
+ assertTrue(getRepo().getSession().hasPendingChanges());
+ ruleItem1.checkin( "ya" );
+
+
+ //we can save without a checkin
+ getRepo().getSession().save();
+
+ assertFalse(getRepo().getSession().hasPendingChanges());
+
+
+ try {
+ ruleItem1.getPrecedingVersion().updateTitle( "baaad" );
+ fail("should not be able to do this");
+ } catch (RulesRepositoryException e) {
+ assertNotNull(e.getMessage());
+ }
+
}
public void testGetPrecedingVersion() {
Modified: labs/jbossrules/trunk/drools-repository/src/java/org/drools/repository/test/ScalabilityTest.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/java/org/drools/repository/test/ScalabilityTest.java 2006-09-04 11:43:32 UTC (rev 6077)
+++ labs/jbossrules/trunk/drools-repository/src/java/org/drools/repository/test/ScalabilityTest.java 2006-09-04 13:02:17 UTC (rev 6078)
@@ -59,6 +59,7 @@
}
+ /** This tests it "bare" just setting properties on node types directly. */
public void xxxtestBare() throws Exception {
hackit();
}
@@ -146,7 +147,7 @@
Node folderNode = session.getRootNode().getNode("drools:repository/drools:rule_area");
- for (int i=1 ; i <= 5000; i++) {
+ for (int i=1 ; i <= 50; i++) {
System.out.println("doing: Rule " + i);
More information about the jboss-svn-commits
mailing list