[jboss-svn-commits] JBL Code SVN: r10006 - 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 Mar 6 20:49:34 EST 2007


Author: michael.neale at jboss.com
Date: 2007-03-06 20:49:34 -0500 (Tue, 06 Mar 2007)
New Revision: 10006

Modified:
   labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/CategorisableItem.java
   labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/CategoryItem.java
   labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/PackageItem.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/CategoryItemTest.java
Log:
JBRULES-726 Can remove categories

Modified: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/CategorisableItem.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/CategorisableItem.java	2007-03-07 01:08:18 UTC (rev 10005)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/CategorisableItem.java	2007-03-07 01:49:34 UTC (rev 10006)
@@ -3,6 +3,7 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import javax.jcr.ItemNotFoundException;
 import javax.jcr.Node;
 import javax.jcr.PathNotFoundException;
 import javax.jcr.Property;
@@ -129,18 +130,22 @@
                 Property tagReferenceProperty = ruleNode.getProperty( CATEGORY_PROPERTY_NAME );
                 Value[] tagValues = tagReferenceProperty.getValues();
                 for ( int i = 0; i < tagValues.length; i++ ) {
-                    Node tagNode = this.node.getSession().getNodeByUUID( tagValues[i].getString() );
-                    CategoryItem tagItem = new CategoryItem( this.rulesRepository,
-                                                             tagNode );
-                    returnList.add( tagItem );
+                    try {
+                        Node tagNode = this.node.getSession().getNodeByUUID( tagValues[i].getString() );
+                        CategoryItem tagItem = new CategoryItem( this.rulesRepository,
+                                                                 tagNode );
+                        returnList.add( tagItem );
+                    } catch (ItemNotFoundException e) {
+                        //ignore
+                        log.debug( "Was unable to load a category by UUID - must have been removed." );
+                    }
                 }
             } catch ( PathNotFoundException e ) {
                 //the property doesn't even exist yet, so just return nothing
             }
             return returnList;
-        } catch ( Exception e ) {
-            log.error( "Caught exception",
-                       e );
+        } catch ( RepositoryException e ) {
+            log.error( "Error loading cateories", e );
             throw new RulesRepositoryException( e );
         }
     }

Modified: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/CategoryItem.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/CategoryItem.java	2007-03-07 01:08:18 UTC (rev 10005)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/CategoryItem.java	2007-03-07 01:49:34 UTC (rev 10006)
@@ -5,6 +5,11 @@
 
 import javax.jcr.Node;
 import javax.jcr.NodeIterator;
+import javax.jcr.ReferentialIntegrityException;
+import javax.jcr.RepositoryException;
+import javax.jcr.lock.LockException;
+import javax.jcr.nodetype.ConstraintViolationException;
+import javax.jcr.version.VersionException;
 
 import org.apache.log4j.Logger;
 
@@ -107,5 +112,20 @@
         }
 
     }
+
+    /**
+     * This will remove the category and any ones under it. 
+     * This will only work if you have no current assets linked to the category.
+     */
+    public void remove() {
+        try {
+            if (this.node.getReferences().hasNext()) {
+                throw new RulesRepositoryException("The category still has some assets linked to it. You will need to remove the links so you can delete the cateogory.");
+            }
+            this.node.remove();
+        } catch ( RepositoryException e ) {
+            log.error( e );
+        }
+    }
     
 }

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-03-07 01:08:18 UTC (rev 10005)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/PackageItem.java	2007-03-07 01:49:34 UTC (rev 10006)
@@ -84,7 +84,7 @@
             if (this.rulesRepository.isNotSnapshot( this.node.getParent() )) {
                 return super.getName();
             } else {
-                System.out.println(this.node.getPath());
+                
                 return this.node.getParent().getName();
                 
             }

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-03-07 01:08:18 UTC (rev 10005)
+++ labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/AssetItemTest.java	2007-03-07 01:49:34 UTC (rev 10006)
@@ -6,6 +6,7 @@
 import java.util.Iterator;
 import java.util.List;
 
+import javax.jcr.ReferentialIntegrityException;
 import javax.jcr.version.Version;
 import javax.jcr.version.VersionIterator;
 
@@ -189,6 +190,16 @@
             assertTrue(element.getName().startsWith( "testFindRulesByCategory" ));
         }
         
+        try {
+            getRepo().loadCategory( "testFindRulesByCat" ).remove();
+
+            fail("should not be able to remove");
+        } catch (RulesRepositoryException e) {
+            //assertTrue(e.getCause() instanceof ReferentialIntegrityException);
+            assertNotNull(e.getMessage());
+        }
+        
+
     }
     
 

Modified: labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/CategoryItemTest.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/CategoryItemTest.java	2007-03-07 01:08:18 UTC (rev 10005)
+++ labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/CategoryItemTest.java	2007-03-07 01:49:34 UTC (rev 10006)
@@ -3,6 +3,8 @@
 import java.util.Iterator;
 import java.util.List;
 
+import javax.jcr.ItemNotFoundException;
+
 import org.drools.repository.RulesRepository;
 import org.drools.repository.CategoryItem;
 
@@ -65,7 +67,15 @@
         item = repo.loadCategory( "testCreateCategories" );
         assertEquals("testCreateCategories", item.getName());
         
+        item.remove();
+        repo.save();
         
+        try {
+            repo.loadCategory( "testCreateCategories" );
+            fail("this should not exist");
+        } catch (RulesRepositoryException e) {
+            assertNotNull(e.getCause());
+        }
     }
     
     public void testGetChildTags() {        
@@ -132,6 +142,24 @@
             
 
     }
+    
+    public void testRemoveCategoryUneeded() {
+        RulesRepository repo = getRepo();
+        repo.loadCategory( "/" ).addCategory( "testRemoveCat", "a" );
+        AssetItem as = repo.loadDefaultPackage().addAsset( "testRemoveCategory", "a", "testRemoveCat", "drl" );
+        as.checkin( "a" );
+        as.updateCategoryList( new String[] {} );
+        
+        as.checkin( "a" );
+        
+        as = repo.loadDefaultPackage().loadAsset( "testRemoveCategory" );
+        assertEquals(0, as.getCategories().size());
+        
+        
+        repo.loadCategory( "testRemoveCat" ).remove();
+        repo.save();
+        
+    }
 
     private RulesRepository getRepo() {
         return RepositorySessionUtil.getRepository();




More information about the jboss-svn-commits mailing list