[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