[jboss-svn-commits] JBL Code SVN: r9467 - in labs/jbossrules/trunk/drools-repository/src: test/java/org/drools/repository and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Feb 13 02:43:33 EST 2007


Author: michael.neale at jboss.com
Date: 2007-02-13 02:43:33 -0500 (Tue, 13 Feb 2007)
New Revision: 9467

Modified:
   labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/PackageItem.java
   labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RepositoryConfigurator.java
   labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RulesRepository.java
   labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/AssetItemTest.java
   labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/PackageItemTest.java
   labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RepositorySessionUtil.java
   labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RulesRepositoryTest.java
Log:
JBRULES-655 Status listing, some refactoring to make state creation explicit

Modified: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/PackageItem.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/PackageItem.java	2007-02-13 06:36:38 UTC (rev 9466)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/PackageItem.java	2007-02-13 07:43:33 UTC (rev 9467)
@@ -139,7 +139,7 @@
             ruleNode.setProperty( AssetItem.PACKAGE_NAME_PROPERTY, this.getName() );
             
             AssetItem rule = new AssetItem( this.rulesRepository, ruleNode );
-            
+                        
             rule.updateState( StateItem.DRAFT_STATE_NAME );
             
             if (initialCategory != null) {

Modified: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RepositoryConfigurator.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RepositoryConfigurator.java	2007-02-13 06:36:38 UTC (rev 9466)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RepositoryConfigurator.java	2007-02-13 07:43:33 UTC (rev 9467)
@@ -140,6 +140,9 @@
             //Setup the State area                
             RulesRepository.addNodeIfNew(repositoryNode, RulesRepository.STATE_AREA, "nt:folder");
             
+            //and we need the "Draft" state
+            RulesRepository.addNodeIfNew( repositoryNode.getNode( RulesRepository.STATE_AREA ), StateItem.DRAFT_STATE_NAME, StateItem.STATE_NODE_TYPE_NAME );
+            
             session.save();                        
         }
         catch(Exception e) {

Modified: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RulesRepository.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RulesRepository.java	2007-02-13 06:36:38 UTC (rev 9466)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RulesRepository.java	2007-02-13 07:43:33 UTC (rev 9467)
@@ -588,14 +588,32 @@
     public StateItem getState(String name) throws RulesRepositoryException {
         try {
             Node folderNode = this.getAreaNode(STATE_AREA);
-            Node stateNode = RulesRepository.addNodeIfNew(folderNode, name, StateItem.STATE_NODE_TYPE_NAME);
+            if (!folderNode.hasNode( name )) {
+                throw new RulesRepositoryException("The state called [" + name + "] does not exist.");
+            }            
+            Node stateNode = folderNode.getNode( name );//RulesRepository.addNodeIfNew(folderNode, name, StateItem.STATE_NODE_TYPE_NAME);
             return new StateItem(this, stateNode);
         }
         catch(Exception e) {
-            log.error("Caught Exception: " + e);
+            log.error(e);
             throw new RulesRepositoryException(e);
         }
     }
+    
+    /**
+     * Create a status node of the given name.
+     */
+    public StateItem createState(String name) {
+        try {
+            Node folderNode = this.getAreaNode(STATE_AREA);
+            Node stateNode = RulesRepository.addNodeIfNew(folderNode, name, StateItem.STATE_NODE_TYPE_NAME);
+            return new StateItem(this, stateNode);
+        }
+        catch(Exception e) {
+            log.error(e);
+            throw new RulesRepositoryException(e);
+        }  
+    }
         
     /**
      * This will return a category for the given category path.
@@ -766,9 +784,31 @@
 
 
 
+    /**
+     * @return A list of statii in the system. 
+     */
+    public StateItem[] listStates() {
+        
+        List states = new ArrayList();
+        NodeIterator it;
+        try {
+            it = this.getAreaNode( STATE_AREA ).getNodes();
+            while(it.hasNext()) {
+                states.add( new StateItem(this, it.nextNode()) );
+            }
 
+        } catch ( RepositoryException e ) {
+            log.error( e );
+            throw new RulesRepositoryException(e);
+        }
+        return (StateItem[]) states.toArray( new StateItem[states.size()] );
+    }
 
 
 
 
+
+
+
+
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/AssetItemTest.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/AssetItemTest.java	2007-02-13 06:36:38 UTC (rev 9466)
+++ labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/AssetItemTest.java	2007-02-13 07:43:33 UTC (rev 9467)
@@ -228,19 +228,20 @@
     public void testSetStateString() {
             AssetItem ruleItem1 = getDefaultPackage().addAsset("testSetStateString", "test content");
            
+            getRepo().createState( "TestState1" );
+            
             ruleItem1.updateState("TestState1");
             assertNotNull(ruleItem1.getState());
             assertEquals("TestState1", ruleItem1.getState().getName());
             
+            getRepo().createState( "TestState2" );
             ruleItem1.updateState("TestState2");
             assertNotNull(ruleItem1.getState());
             assertEquals("TestState2", ruleItem1.getState().getName());            
 
-    }
+            ruleItem1 = getDefaultPackage().addAsset("foobar", "test description");
+            
 
-    public void testSetStateStateItem() {
-            AssetItem ruleItem1 = getDefaultPackage().addAsset("foobar", "test description");
-           
             StateItem stateItem1 = getRepo().getState("TestState1");
             ruleItem1.updateState(stateItem1);            
             assertNotNull(ruleItem1.getState());
@@ -253,6 +254,7 @@
 
     }
 
+
     public void testStatusStuff() {
             AssetItem ruleItem1 = getDefaultPackage().addAsset("testGetState", "test content");
            

Modified: labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/PackageItemTest.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/PackageItemTest.java	2007-02-13 06:36:38 UTC (rev 9466)
+++ labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/PackageItemTest.java	2007-02-13 07:43:33 UTC (rev 9467)
@@ -160,6 +160,8 @@
         List rules = iteratorToList( pack.getAssets() );
         assertEquals(3, rules.size());
         
+        getRepo().createState( "foobar" );
+        
         StateItem state = getRepo().getState( "foobar" );
         
         rule1.updateState( "foobar" );
@@ -172,6 +174,7 @@
         assertEquals(1, rules.size());
         
         //now lets try an invalid state tag
+        getRepo().createState( "whee" );
         rules = iteratorToList( pack.getAssetsWithStatus( getRepo().getState( "whee" ) ) );
         assertEquals(0, rules.size());
         
@@ -182,16 +185,18 @@
         
         //now do an update, and pull it out via state
         rule1.updateContent( "new content" );
-        rule1.updateState( "draft" );
+        getRepo().createState( "extractorState" );
+        rule1.updateState( "extractorState" );
         rule1.checkin( "latest" );
         
-        rules = iteratorToList( pack.getAssetsWithStatus(getRepo().getState( "draft" )) );
+        rules = iteratorToList( pack.getAssetsWithStatus(getRepo().getState( "extractorState" )) );
         assertEquals(1, rules.size());
         AssetItem rule = (AssetItem) rules.get( 0 );
         assertEquals("new content", rule.getContent());
         
         //get the previous one via state
         
+        getRepo().createState( "foobar" );
         rules = iteratorToList( pack.getAssetsWithStatus(getRepo().getState( "foobar" )) );
         assertEquals(1, rules.size());
         AssetItem prior = (AssetItem) rules.get( 0 );
@@ -203,7 +208,7 @@
     public void testIgnoreState() throws Exception {
         PackageItem pack = getRepo().createPackage( "package testIgnoreState", "foo" );
         
-        
+        getRepo().createState( "x" );
         AssetItem rule1 = pack.addAsset( "rule number 1", "yeah man" );
         rule1.updateState( "x" );
         rule1.checkin( "version0" );
@@ -214,6 +219,8 @@
         rule2.checkin( "version0" );
         
         AssetItem rule3 = pack.addAsset( "rule number 3", "yes way" );
+        getRepo().createState( "disabled" );
+        
         rule3.updateState( "disabled" );
         rule3.checkin( "version0" );
         

Modified: labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RepositorySessionUtil.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RepositorySessionUtil.java	2007-02-13 06:36:38 UTC (rev 9466)
+++ labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RepositorySessionUtil.java	2007-02-13 07:43:33 UTC (rev 9467)
@@ -30,9 +30,7 @@
                 config.clearRulesRepository( session );
                 config.setupRulesRepository( session );
                 
-                
                 repoInstance = new RulesRepository( session );
-                
                 repo.set( repoInstance );                
             } catch ( Exception e) {
                 Assert.fail("Unable to initialise repository :" + e.getMessage());

Modified: labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RulesRepositoryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RulesRepositoryTest.java	2007-02-13 06:36:38 UTC (rev 9466)
+++ labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RulesRepositoryTest.java	2007-02-13 07:43:33 UTC (rev 9467)
@@ -135,7 +135,9 @@
     public void testGetState() {
         RulesRepository rulesRepository = RepositorySessionUtil.getRepository();
             
-            
+            StateItem state0 = rulesRepository.createState( "testGetState" );
+            assertNotNull(state0);
+            assertEquals("testGetState", state0.getName());
             StateItem stateItem1 = rulesRepository.getState("testGetState");
             assertNotNull(stateItem1);
             assertEquals("testGetState", stateItem1.getName());
@@ -223,6 +225,17 @@
         
     }
     
+    public void testListStates()  {
+        RulesRepository repo = RepositorySessionUtil.getRepository();
+        StateItem[] items = repo.listStates();
+        assertTrue(items.length > 0);
+        
+        repo.createState( "testListStates" );
+        
+        StateItem[] items2 = repo.listStates();
+        assertEquals(items.length + 1, items2.length);
+    }
+    
     List iteratorToList(Iterator it) {
         List list = new ArrayList();
         while(it.hasNext()) {




More information about the jboss-svn-commits mailing list