[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