[jboss-svn-commits] JBL Code SVN: r6280 - in labs/jbossrules/trunk/drools-repository/src: main/java/org/drools/repository test/java/org/drools/repository

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Sep 18 12:25:59 EDT 2006


Author: michael.neale at jboss.com
Date: 2006-09-18 12:25:54 -0400 (Mon, 18 Sep 2006)
New Revision: 6280

Modified:
   labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RulesRepository.java
   labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RulePackageItemTestCase.java
Log:
contribs from pablo and marcos for loading rule packages

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	2006-09-18 16:20:06 UTC (rev 6279)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RulesRepository.java	2006-09-18 16:25:54 UTC (rev 6280)
@@ -511,9 +511,53 @@
             log.error("Caught Exception", e);
             throw new RulesRepositoryException(e);
         }
-    }                                       
+    }   
+    
+    /**
+     * Loads a RulePackage for the specified package name. Will throw
+     * an exception if the specified rule package does not exist.
+     * @param name the name of the package to load 
+     * @return a RulePackageItem object
+     */
+    public RulePackageItem loadRulePackage(String name) throws RulesRepositoryException {
+        try {
+            Node folderNode = this.getAreaNode(RULE_PACKAGE_AREA);
+            Node rulePackageNode = folderNode.getNode(name);
 
+            return new  RulePackageItem(this, rulePackageNode);
+        }
+        catch(Exception e) {
+            log.error("Unable to load a rule package. ", e);
+            if (e instanceof RuntimeException ) {
+                throw (RuntimeException) e;                
+            } else {
+                throw new RulesRepositoryException("Unable to load a rule package. ", e);
+            }
+        }
+    }    
+    
     /**
+     * Similar to above. Loads a RulePackage for the specified uuid. 
+     * @param uuid the uuid of the package to load 
+     * @return a RulePackageItem object
+     * @throws RulesRepositoryException
+     */
+    public RulePackageItem loadRulePackageByUUID(String uuid) throws RulesRepositoryException {
+        try {
+            Node rulePackageNode = this.session.getNodeByUUID(uuid);
+            return new RulePackageItem(this, rulePackageNode);
+        }
+        catch (Exception e) {
+            log.error("Unable to load a rule package by UUID. ", e);
+            if (e instanceof RuntimeException ) {
+                throw (RuntimeException) e;                
+            } else {
+                throw new RulesRepositoryException("Unable to load a rule package. ", e);
+            }
+        }
+    }    
+
+    /**
      * Adds a rule package node in the repository. This node has a property called 
      * drools:rule_reference that is a multi-value reference property.  It will hold an array of 
      * references to rule nodes that are subsequently added.
@@ -591,7 +635,6 @@
             StringTokenizer tok = new StringTokenizer(tagName, "/");
             while(tok.hasMoreTokens()) {                                
                 String currentTagName = tok.nextToken();
-                
                 tagNode = folderNode.getNode( currentTagName ) ; 
                 //MN was this: RulesRepository.addNodeIfNew(folderNode, currentTagName, CategoryItem.TAG_NODE_TYPE_NAME);
                 folderNode = tagNode;

Modified: labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RulePackageItemTestCase.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RulePackageItemTestCase.java	2006-09-18 16:20:06 UTC (rev 6279)
+++ labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RulePackageItemTestCase.java	2006-09-18 16:25:54 UTC (rev 6280)
@@ -4,6 +4,8 @@
 import java.util.Iterator;
 import java.util.List;
 
+import javax.jcr.UnsupportedRepositoryOperationException;
+
 import org.drools.repository.*;
 
 import junit.framework.TestCase;
@@ -57,6 +59,46 @@
         return RepositorySession.getRepository();
     }
 
+    public void testLoadRulePackageItem() {
+
+        RulePackageItem rulePackageItem = getRepo().createRulePackage("testLoadRuleRuleItem");
+
+        rulePackageItem = getRepo().loadRulePackage("testLoadRuleRuleItem");
+        assertNotNull(rulePackageItem);
+        assertEquals("testLoadRuleRuleItem", rulePackageItem.getName());
+        
+        // try loading rule package that was not created 
+        try {
+            rulePackageItem = getRepo().loadRulePackage("anotherRuleRuleItem");
+            fail("Exception not thrown loading rule package that was not created.");
+        } catch (RulesRepositoryException e) {
+            // that is OK!
+            assertNotNull(e.getMessage());
+        }
+    }    
+    
+    public void testLoadRulePackageItemByUUID() throws Exception {
+
+        RulePackageItem rulePackageItem = getRepo().createRulePackage("testLoadRuleRuleItemByUUID");
+
+        String uuid = null;
+            uuid = rulePackageItem.getNode().getUUID();
+
+
+        rulePackageItem = getRepo().loadRulePackageByUUID(uuid);
+        assertNotNull(rulePackageItem);
+        assertEquals("testLoadRuleRuleItemByUUID", rulePackageItem.getName());
+        
+        // try loading rule package that was not created 
+        try {
+            rulePackageItem = getRepo().loadRulePackageByUUID("01010101-0101-0101-0101-010101010101");
+            fail("Exception not thrown loading rule package that was not created.");
+        } catch (RulesRepositoryException e) {
+            // that is OK!
+            assertNotNull(e.getMessage());
+        }
+    }    
+    
     public void testAddRuleRuleItem() {
             RulePackageItem rulePackageItem1 = getRepo().createRulePackage("testAddRuleRuleItem");
             




More information about the jboss-svn-commits mailing list