[jboss-svn-commits] JBL Code SVN: r6540 - in labs/jbossrules/trunk/drools-repository/src: main/java/org/drools/repository main/resources/node_type_definitions test/java/org/drools/repository
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Oct 3 04:08:00 EDT 2006
Author: michael.neale at jboss.com
Date: 2006-10-03 04:07:46 -0400 (Tue, 03 Oct 2006)
New Revision: 6540
Added:
labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/MyAccessManager.java
Modified:
labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RuleItem.java
labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RulePackageItem.java
labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RulesRepository.java
labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/rule_node_type.cnd
labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/rulepackage_node_type.cnd
labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/DslItemTestCase.java
labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RuleItemTestCase.java
labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RulePackageItemTestCase.java
labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RulesRepositoryTestCase.java
labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/ScalabilityTest.java
Log:
big refactor
Added: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/MyAccessManager.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/MyAccessManager.java 2006-10-02 21:48:17 UTC (rev 6539)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/MyAccessManager.java 2006-10-03 08:07:46 UTC (rev 6540)
@@ -0,0 +1,64 @@
+package org.drools.repository;
+
+import javax.jcr.AccessDeniedException;
+import javax.jcr.ItemNotFoundException;
+import javax.jcr.NoSuchWorkspaceException;
+import javax.jcr.Node;
+import javax.jcr.RepositoryException;
+
+import org.apache.jackrabbit.core.ItemId;
+import org.apache.jackrabbit.core.NodeId;
+import org.apache.jackrabbit.core.security.AMContext;
+import org.apache.jackrabbit.core.security.AccessManager;
+
+public class MyAccessManager
+ implements
+ AccessManager {
+
+ private AMContext amContext;
+
+ public boolean canAccess(String arg0) throws NoSuchWorkspaceException,
+ RepositoryException {
+ System.out.println("can access " + arg0);
+ return true;
+ }
+
+ public void checkPermission(ItemId arg0,
+ int arg1) throws AccessDeniedException,
+ ItemNotFoundException,
+ RepositoryException {
+ System.out.println("check permission: " + arg0);
+
+ }
+
+ public void close() throws Exception {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void init(AMContext arg0) throws AccessDeniedException,
+ Exception {
+
+ this.amContext = arg0;
+
+ }
+
+ public boolean isGranted(ItemId arg0,
+ int arg1) throws ItemNotFoundException,
+ RepositoryException {
+ if (arg0.denotesNode()) {
+ NodeId id = (NodeId) arg0;
+ System.out.println(arg0);
+
+// try {
+// Node n = RepositorySession.getRepository().getSession().getNodeByUUID( id.getUUID().toString() );
+// System.out.println(n.getName());
+// } catch (Exception e) {
+// System.out.println(e);
+// }
+ }
+ //System.out.println("is granted: " + arg0);
+ return true;
+ }
+
+}
Property changes on: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/MyAccessManager.java
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RuleItem.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RuleItem.java 2006-10-02 21:48:17 UTC (rev 6539)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RuleItem.java 2006-10-03 08:07:46 UTC (rev 6540)
@@ -92,8 +92,13 @@
public String getRuleContent() throws RulesRepositoryException {
try {
Node ruleNode = getVersionContentNode();
- Property data = ruleNode.getProperty(RULE_CONTENT_PROPERTY_NAME);
- return data.getValue().getString();
+ if (ruleNode.hasProperty( RULE_CONTENT_PROPERTY_NAME ) ) {
+ Property data = ruleNode.getProperty(RULE_CONTENT_PROPERTY_NAME);
+ return data.getValue().getString();
+
+ } else {
+ return null;
+ }
}
catch(Exception e) {
log.error("Caught Exception", e);
Modified: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RulePackageItem.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RulePackageItem.java 2006-10-02 21:48:17 UTC (rev 6539)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RulePackageItem.java 2006-10-03 08:07:46 UTC (rev 6540)
@@ -1,17 +1,24 @@
package org.drools.repository;
import java.util.ArrayList;
+import java.util.Calendar;
import java.util.Iterator;
import java.util.List;
+import javax.jcr.ItemExistsException;
import javax.jcr.Node;
+import javax.jcr.NodeIterator;
import javax.jcr.PathNotFoundException;
import javax.jcr.Property;
import javax.jcr.RepositoryException;
import javax.jcr.UnsupportedRepositoryOperationException;
import javax.jcr.Value;
import javax.jcr.ValueFactory;
+import javax.jcr.lock.LockException;
+import javax.jcr.nodetype.ConstraintViolationException;
+import javax.jcr.nodetype.NoSuchNodeTypeException;
import javax.jcr.version.Version;
+import javax.jcr.version.VersionException;
import javax.jcr.version.VersionIterator;
import org.apache.log4j.Logger;
@@ -74,83 +81,123 @@
}
/**
- * Adds a rule to the rule package node this object represents. The reference to the rule
- * will follow the head version of the specified rule's node.
- *
- * @param ruleItem the ruleItem corresponding to the node to add to the rule package this
- * object represents
- * @throws RulesRepositoryException
+ * This adds a rule to the current physical package (you can move it later).
*/
- public void addRule(RuleItem ruleItem) throws RulesRepositoryException {
- this.addRule(ruleItem, true);
+ public RuleItem addRule(String ruleName, String description) {
+ Node ruleNode;
+ try {
+
+ Node rulesFolder = this.node.getNode( "rules" );
+ ruleNode = rulesFolder.addNode( ruleName, RuleItem.RULE_NODE_TYPE_NAME);
+ ruleNode.setProperty(RuleItem.TITLE_PROPERTY_NAME, ruleName);
+
+
+ ruleNode.setProperty(RuleItem.DESCRIPTION_PROPERTY_NAME, description);
+ ruleNode.setProperty(RuleItem.FORMAT_PROPERTY_NAME, RuleItem.RULE_FORMAT);
+ //ruleNode.setProperty(RuleItem.RULE_CONTENT_PROPERTY_NAME, "");
+
+ ruleNode.setProperty( VersionableItem.CHECKIN_COMMENT, "Initial" );
+
+ Calendar lastModified = Calendar.getInstance();
+ ruleNode.setProperty(RuleItem.LAST_MODIFIED_PROPERTY_NAME, lastModified);
+
+ this.rulesRepository.save();
+
+ RuleItem rule = new RuleItem(this.rulesRepository, ruleNode);
+ rule.checkin( "Initial" );
+ return rule;
+
+ } catch ( Exception e ) {
+ if (e instanceof RuntimeException) {
+ throw (RuntimeException) e;
+ } else if (e instanceof ItemExistsException ) {
+ throw new RulesRepositoryException("A rule of that name already exists in that package.", e);
+ } else {
+ throw new RulesRepositoryException(e);
+ }
+ }
+
+
}
- /**
- * Adds a rule to the rule package node this object represents. The reference to the rule
- * will optionally follow the head version of the specified rule's node or the specific
- * current version.
- *
- * @param ruleItem the ruleItem corresponding to the node to add to the rule package this
- * object represents
- * @param followRuleHead if true, the reference to the rule node will follow the head version
- * of the node, even if new versions are added. If false, will refer
- * specifically to the current version.
- * @throws RulesRepositoryException
- */
- public void addRule(RuleItem ruleItem, boolean followRuleHead) throws RulesRepositoryException {
+ /** Remove a rule by name */
+ public void removeRule(String name) {
try {
- ValueFactory factory = this.node.getSession().getValueFactory();
- int i = 0;
- Value[] newValueArray = null;
-
- try {
- Value[] oldValueArray = this.node.getProperty(RULE_REFERENCE_PROPERTY_NAME).getValues();
- newValueArray = new Value[oldValueArray.length + 1];
-
- for(i=0; i<oldValueArray.length; i++) {
- newValueArray[i] = oldValueArray[i];
- }
- }
- catch(PathNotFoundException e) {
- //the property has not been created yet. do so now
- newValueArray = new Value[1];
- }
- finally {
- if(newValueArray != null) { //just here to make the compiler happy
- if(followRuleHead) {
- newValueArray[i] = factory.createValue(ruleItem.getNode());
- }
- else {
- newValueArray[i] = factory.createValue(ruleItem.getNode().getBaseVersion());
- }
- this.node.checkout();
- this.node.setProperty(RULE_REFERENCE_PROPERTY_NAME, newValueArray);
- this.node.getSession().save();
- this.node.checkin();
- }
- else {
- throw new RulesRepositoryException("Unexpected null pointer for newValueArray");
- }
- }
- }
- catch(UnsupportedRepositoryOperationException e) {
- String message = "";
- try {
- message = "Error: Caught UnsupportedRepositoryOperationException when attempting to get base version for rule: " + ruleItem.getNode().getName() + ". Are you sure your JCR repository supports versioning? ";
- log.error(message + e);
- }
- catch (RepositoryException e1) {
- log.error("Caught exception: " + e1);
- throw new RulesRepositoryException(message, e1);
- }
- log.error("Caught exception: " + e);
+ this.node.getNode( "rules/" + name ).remove();
+ } catch ( RepositoryException e) {
throw new RulesRepositoryException(e);
}
- catch(Exception e) {
- log.error("Caught exception: " + e);
- throw new RulesRepositoryException(e);
- }
}
+
+//The following should be kept for reference on how to add a reference that
+//is either locked to a version or follows head
+// /**
+// * Adds a rule to the rule package node this object represents. The reference to the rule
+// * will optionally follow the head version of the specified rule's node or the specific
+// * current version.
+// *
+// * @param ruleItem the ruleItem corresponding to the node to add to the rule package this
+// * object represents
+// * @param followRuleHead if true, the reference to the rule node will follow the head version
+// * of the node, even if new versions are added. If false, will refer
+// * specifically to the current version.
+// * @throws RulesRepositoryException
+// */
+// public void addRuleReference(RuleItem ruleItem, boolean followRuleHead) throws RulesRepositoryException {
+// try {
+// ValueFactory factory = this.node.getSession().getValueFactory();
+// int i = 0;
+// Value[] newValueArray = null;
+//
+// try {
+// Value[] oldValueArray = this.node.getProperty(RULE_REFERENCE_PROPERTY_NAME).getValues();
+// newValueArray = new Value[oldValueArray.length + 1];
+//
+// for(i=0; i<oldValueArray.length; i++) {
+// newValueArray[i] = oldValueArray[i];
+// }
+// }
+// catch(PathNotFoundException e) {
+// //the property has not been created yet. do so now
+// newValueArray = new Value[1];
+// }
+// finally {
+// if(newValueArray != null) { //just here to make the compiler happy
+// if(followRuleHead) {
+// newValueArray[i] = factory.createValue(ruleItem.getNode());
+// }
+// else {
+// //this is the magic that ties it to a specific version
+// newValueArray[i] = factory.createValue(ruleItem.getNode().getBaseVersion());
+// }
+// this.node.checkout();
+// this.node.setProperty(RULE_REFERENCE_PROPERTY_NAME, newValueArray);
+// this.node.getSession().save();
+// this.node.checkin();
+// }
+// else {
+// throw new RulesRepositoryException("Unexpected null pointer for newValueArray");
+// }
+// }
+// }
+// catch(UnsupportedRepositoryOperationException e) {
+// String message = "";
+// try {
+// message = "Error: Caught UnsupportedRepositoryOperationException when attempting to get base version for rule: " + ruleItem.getNode().getName() + ". Are you sure your JCR repository supports versioning? ";
+// log.error(message + e);
+// }
+// catch (RepositoryException e1) {
+// log.error("Caught exception: " + e1);
+// throw new RulesRepositoryException(message, e1);
+// }
+// log.error("Caught exception: " + e);
+// throw new RulesRepositoryException(e);
+// }
+// catch(Exception e) {
+// log.error("Caught exception: " + e);
+// throw new RulesRepositoryException(e);
+// }
+// }
/**
* Adds a function to the rule package node this object represents. The reference to the
@@ -237,7 +284,7 @@
* this object represents
* @throws RulesRepositoryException
*/
- public void removeRule(RuleItem ruleItem) throws RulesRepositoryException {
+ public void removeRuleReference(RuleItem ruleItem) throws RulesRepositoryException {
try {
Value[] oldValueArray = this.node.getProperty(RULE_REFERENCE_PROPERTY_NAME).getValues();
Value[] newValueArray = new Value[oldValueArray.length - 1];
@@ -351,79 +398,61 @@
}
}
- /**
- * Gets a list of RuleItem objects for each rule node in this rule package
- *
- * @return the List object holding the RuleItem objects in this rule package
- * @throws RulesRepositoryException
- */
- public List getRules() throws RulesRepositoryException {
- try {
- Value[] valueArray = this.node.getProperty(RULE_REFERENCE_PROPERTY_NAME).getValues();
- List returnList = new ArrayList();
-
- for(int i=0; i<valueArray.length; i++) {
- Node ruleNode = this.node.getSession().getNodeByUUID(valueArray[i].getString());
- returnList.add(new RuleItem(this.rulesRepository, ruleNode));
- }
- return returnList;
- }
- catch(PathNotFoundException e) {
- //the property has not been created yet.
- return new ArrayList();
- }
- catch(Exception e) {
- log.error("Caught exception: " + e);
- throw new RulesRepositoryException(e);
- }
- }
+// /**
+// * Gets a list of RuleItem objects for each rule node in this rule package
+// *
+// * @return the List object holding the RuleItem objects in this rule package
+// * @throws RulesRepositoryException
+// */
+// public List getRules() throws RulesRepositoryException {
+// try {
+// Value[] valueArray = this.node.getProperty(RULE_REFERENCE_PROPERTY_NAME).getValues();
+// List returnList = new ArrayList();
+//
+// for(int i=0; i<valueArray.length; i++) {
+// Node ruleNode = this.node.getSession().getNodeByUUID(valueArray[i].getString());
+// returnList.add(new RuleItem(this.rulesRepository, ruleNode));
+// }
+// return returnList;
+// }
+// catch(PathNotFoundException e) {
+// //the property has not been created yet.
+// return new ArrayList();
+// }
+// catch(Exception e) {
+// log.error("Caught exception: " + e);
+// throw new RulesRepositoryException(e);
+// }
+// }
- /**
- * Removes all functions from the rule package
- *
- * @throws RulesRepositoryException
- */
- public void removeAllFunctions() throws RulesRepositoryException {
- try {
- Property functionsProperty = this.node.getProperty(FUNCTION_REFERENCE_PROPERTY_NAME);
- this.node.checkout();
- functionsProperty.remove();
- this.node.save();
- this.node.checkin();
- }
- catch(PathNotFoundException e) {
- //the property has not been created yet.
- return;
- }
- catch(Exception e) {
- log.error("Caught exception: " + e);
- throw new RulesRepositoryException(e);
- }
- }
- /**
- * Removes all rules from the rule package
- *
- * @throws RulesRepositoryException
- */
- public void removeAllRules() throws RulesRepositoryException {
+ /** Return an iterator for the rules in this package */
+ public Iterator getRules() {
+
try {
- Property rulesProperty = this.node.getProperty(RULE_REFERENCE_PROPERTY_NAME);
- this.node.checkout();
- rulesProperty.remove();
- this.node.save();
- this.node.checkin();
- }
- catch(PathNotFoundException e) {
- //the property has not been created yet.
- return;
- }
- catch(Exception e) {
- log.error("Caught exception: " + e);
+ final NodeIterator it = this.node.getNode( "rules" ).getNodes();
+ return new Iterator() {
+ public boolean hasNext() {
+ return it.hasNext();
+ }
+ public Object next() {
+ return new RuleItem(rulesRepository, (Node) it.next());
+ }
+ public void remove() {
+ throw new UnsupportedOperationException("You can't remove a rule this way.");
+ }
+ };
+
+ } catch ( PathNotFoundException e ) {
throw new RulesRepositoryException(e);
+ } catch ( RepositoryException e ) {
+ throw new RulesRepositoryException(e);
}
+
}
+
+
/**
* Nicely formats the information contained by the node that this object encapsulates
*/
@@ -438,26 +467,7 @@
returnString.append("Version Name: " + this.getVersionName() + "\n");
returnString.append("----\n");
- //iterate over the rules in this rule package and dump them
- returnString.append("Rules in rule package: \n");
- List ruleItems = this.getRules();
- Iterator it = ruleItems.iterator();
- while(it.hasNext()) {
- RuleItem currentRuleItem = (RuleItem)it.next();
- returnString.append(currentRuleItem.toString() + "\n");
- }
- returnString.append("----\n");
- //iterate over the functions in this rule package and dump them
- returnString.append("Functions in rule package: \n");
- List functionItems = this.getFunctions();
- it = functionItems.iterator();
- while(it.hasNext()) {
- FunctionItem currentFunctionItem = (FunctionItem)it.next();
- returnString.append(currentFunctionItem.toString() + "\n");
- }
- returnString.append("--------\n");
-
return returnString.toString();
}
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 2006-10-02 21:48:17 UTC (rev 6539)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RulesRepository.java 2006-10-03 08:07:46 UTC (rev 6540)
@@ -8,6 +8,9 @@
import java.util.Map;
import java.util.StringTokenizer;
+import javax.jcr.AccessDeniedException;
+import javax.jcr.InvalidItemStateException;
+import javax.jcr.ItemExistsException;
import javax.jcr.Node;
import javax.jcr.NodeIterator;
import javax.jcr.PathNotFoundException;
@@ -17,6 +20,10 @@
import javax.jcr.Session;
import javax.jcr.UnsupportedRepositoryOperationException;
import javax.jcr.Value;
+import javax.jcr.lock.LockException;
+import javax.jcr.nodetype.ConstraintViolationException;
+import javax.jcr.nodetype.NoSuchNodeTypeException;
+import javax.jcr.version.VersionException;
import org.apache.log4j.Logger;
@@ -374,146 +381,112 @@
}
}
- /**
- * Adds a Rule node in the repository using the content specified, associating it with
- * the specified DSL node
- *
- * @param ruleName the name of the rule
- * @param lhsContent the lhs of the rule
- * @param rhsContent the rhs of the rule
- * @param dslItem the dslItem encapsulting the dsl node to associate this rule node with
- * @paaram followDslHead whether or not to follow the head revision of the dsl node
- * @return a RuleItem object encapsulating the node that gets added
- * @throws RulesRepositoryException
- */
- public RuleItem addRule(String ruleName, String ruleContent, DslItem dslItem, boolean followDslHead) throws RulesRepositoryException {
- Node folderNode = this.getAreaNode(RULE_AREA);
-
- try {
- //create the node - see section 6.7.22.6 of the spec
- Node ruleNode = folderNode.addNode(ruleName, RuleItem.RULE_NODE_TYPE_NAME);
-
- ruleNode.setProperty(RuleItem.TITLE_PROPERTY_NAME, ruleName);
- ruleNode.setProperty(RuleItem.RULE_CONTENT_PROPERTY_NAME, ruleContent);
- ruleNode.setProperty(RuleItem.DESCRIPTION_PROPERTY_NAME, "");
- ruleNode.setProperty(RuleItem.FORMAT_PROPERTY_NAME, RuleItem.RULE_FORMAT);
-
-
- if(followDslHead) {
- ruleNode.setProperty(RuleItem.DSL_PROPERTY_NAME, dslItem.getNode());
- }
- else {
- //tie the ruleNode to specifically the current version of the dslNode
- ruleNode.setProperty(RuleItem.DSL_PROPERTY_NAME, dslItem.getNode().getBaseVersion());
- }
-
- Calendar lastModified = Calendar.getInstance();
- ruleNode.setProperty(RuleItem.LAST_MODIFIED_PROPERTY_NAME, lastModified);
-
- session.save();
-
- try {
- ruleNode.checkin();
- }
- catch(UnsupportedRepositoryOperationException e) {
- String message = "Error: Caught UnsupportedRepositoryOperationException when attempting to checkin rule: " + ruleNode.getName() + ". Are you sure your JCR repository supports versioning? ";
- log.error(message + e);
- throw new RulesRepositoryException(message, e);
- }
-
- return new RuleItem(this, ruleNode);
- }
- catch(Exception e) {
- log.error("Caught Exception", e);
- throw new RulesRepositoryException(e);
- }
- }
+// /**
+// * Adds a Rule node in the repository using the content specified, associating it with
+// * the specified DSL node
+// *
+// * @param ruleName the name of the rule
+// * @param lhsContent the lhs of the rule
+// * @param rhsContent the rhs of the rule
+// * @param dslItem the dslItem encapsulting the dsl node to associate this rule node with
+// * @paaram followDslHead whether or not to follow the head revision of the dsl node
+// * @return a RuleItem object encapsulating the node that gets added
+// * @throws RulesRepositoryException
+// */
+// public RuleItem addRule(String ruleName, String ruleContent, DslItem dslItem, boolean followDslHead) throws RulesRepositoryException {
+// Node folderNode = this.getAreaNode(RULE_AREA);
+//
+// try {
+// //create the node - see section 6.7.22.6 of the spec
+// Node ruleNode = folderNode.addNode(ruleName, RuleItem.RULE_NODE_TYPE_NAME);
+//
+// ruleNode.setProperty(RuleItem.TITLE_PROPERTY_NAME, ruleName);
+// ruleNode.setProperty(RuleItem.RULE_CONTENT_PROPERTY_NAME, ruleContent);
+// ruleNode.setProperty(RuleItem.DESCRIPTION_PROPERTY_NAME, "");
+// ruleNode.setProperty(RuleItem.FORMAT_PROPERTY_NAME, RuleItem.RULE_FORMAT);
+//
+//
+// if(followDslHead) {
+// ruleNode.setProperty(RuleItem.DSL_PROPERTY_NAME, dslItem.getNode());
+// }
+// else {
+// //tie the ruleNode to specifically the current version of the dslNode
+// ruleNode.setProperty(RuleItem.DSL_PROPERTY_NAME, dslItem.getNode().getBaseVersion());
+// }
+//
+// Calendar lastModified = Calendar.getInstance();
+// ruleNode.setProperty(RuleItem.LAST_MODIFIED_PROPERTY_NAME, lastModified);
+//
+// session.save();
+//
+// try {
+// ruleNode.checkin();
+// }
+// catch(UnsupportedRepositoryOperationException e) {
+// String message = "Error: Caught UnsupportedRepositoryOperationException when attempting to checkin rule: " + ruleNode.getName() + ". Are you sure your JCR repository supports versioning? ";
+// log.error(message + e);
+// throw new RulesRepositoryException(message, e);
+// }
+//
+// return new RuleItem(this, ruleNode);
+// }
+// catch(Exception e) {
+// log.error("Caught Exception", e);
+// throw new RulesRepositoryException(e);
+// }
+// }
+//
+//
+// /**
+// * Adds a Rule node in the repository using the content specified
+// *
+// * @param ruleName the name of the rule
+// * @param lhsContent the lhs of the rule
+// * @param rhsContent the rhs of the rule
+// * @return a RuleItem object encapsulating the node that gets added
+// * @throws RulesRepositoryException
+// */
+// public RuleItem addRule(String ruleName, String ruleContent) throws RulesRepositoryException {
+// Node folderNode = this.getAreaNode(RULE_AREA);
+//
+// try {
+// //create the node - see section 6.7.22.6 of the spec
+// Node ruleNode = folderNode.addNode(ruleName, RuleItem.RULE_NODE_TYPE_NAME);
+//
+// ruleNode.setProperty(RuleItem.TITLE_PROPERTY_NAME, ruleName);
+//
+//
+// ruleNode.setProperty(RuleItem.DESCRIPTION_PROPERTY_NAME, "");
+// ruleNode.setProperty(RuleItem.FORMAT_PROPERTY_NAME, RuleItem.RULE_FORMAT);
+// ruleNode.setProperty(RuleItem.RULE_CONTENT_PROPERTY_NAME, ruleContent);
+//
+// ruleNode.setProperty( VersionableItem.CHECKIN_COMMENT, "Initial" );
+//
+//
+// Calendar lastModified = Calendar.getInstance();
+// ruleNode.setProperty(RuleItem.LAST_MODIFIED_PROPERTY_NAME, lastModified);
+//
+// session.save();
+//
+// try {
+// ruleNode.checkin();
+// }
+// catch(UnsupportedRepositoryOperationException e) {
+// String message = "Error: Caught UnsupportedRepositoryOperationException when attempting to checkin rule: " + ruleNode.getName() + ". Are you sure your JCR repository supports versioning? ";
+// log.error(message + e);
+// throw new RulesRepositoryException(message, e);
+// }
+//
+// return new RuleItem(this, ruleNode);
+// }
+// catch(Exception e) {
+// log.error("Caught Exception", e);
+// throw new RulesRepositoryException(e);
+// }
+// }
+
-
/**
- * Adds a Rule node in the repository using the content specified
- *
- * @param ruleName the name of the rule
- * @param lhsContent the lhs of the rule
- * @param rhsContent the rhs of the rule
- * @return a RuleItem object encapsulating the node that gets added
- * @throws RulesRepositoryException
- */
- public RuleItem addRule(String ruleName, String ruleContent) throws RulesRepositoryException {
- Node folderNode = this.getAreaNode(RULE_AREA);
-
- try {
- //create the node - see section 6.7.22.6 of the spec
- Node ruleNode = folderNode.addNode(ruleName, RuleItem.RULE_NODE_TYPE_NAME);
-
- ruleNode.setProperty(RuleItem.TITLE_PROPERTY_NAME, ruleName);
-
-
- ruleNode.setProperty(RuleItem.DESCRIPTION_PROPERTY_NAME, "");
- ruleNode.setProperty(RuleItem.FORMAT_PROPERTY_NAME, RuleItem.RULE_FORMAT);
- ruleNode.setProperty(RuleItem.RULE_CONTENT_PROPERTY_NAME, ruleContent);
-
- ruleNode.setProperty( VersionableItem.CHECKIN_COMMENT, "Initial" );
-
-
- Calendar lastModified = Calendar.getInstance();
- ruleNode.setProperty(RuleItem.LAST_MODIFIED_PROPERTY_NAME, lastModified);
-
- session.save();
-
- try {
- ruleNode.checkin();
- }
- catch(UnsupportedRepositoryOperationException e) {
- String message = "Error: Caught UnsupportedRepositoryOperationException when attempting to checkin rule: " + ruleNode.getName() + ". Are you sure your JCR repository supports versioning? ";
- log.error(message + e);
- throw new RulesRepositoryException(message, e);
- }
-
- return new RuleItem(this, ruleNode);
- }
- catch(Exception e) {
- log.error("Caught Exception", e);
- throw new RulesRepositoryException(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.
- *
- * @param name what to name the node added
- * @return a RulePackageItem, encapsulating the created node
- * @throws RulesRepositoryException
- */
- public RulePackageItem createRulePackage(String name) throws RulesRepositoryException {
- Node folderNode = this.getAreaNode(RULE_PACKAGE_AREA);
-
- try {
- //create the node - see section 6.7.22.6 of the spec
- Node rulePackageNode = folderNode.addNode(name, RulePackageItem.RULE_PACKAGE_TYPE_NAME);
-
- rulePackageNode.setProperty(RulePackageItem.TITLE_PROPERTY_NAME, name);
-
-
- rulePackageNode.setProperty(RulePackageItem.DESCRIPTION_PROPERTY_NAME, "");
- rulePackageNode.setProperty(RulePackageItem.FORMAT_PROPERTY_NAME, RulePackageItem.RULE_PACKAGE_FORMAT);
-
- Calendar lastModified = Calendar.getInstance();
- rulePackageNode.setProperty(RulePackageItem.LAST_MODIFIED_PROPERTY_NAME, lastModified);
-
- this.session.save();
- rulePackageNode.checkin();
- return new RulePackageItem(this, rulePackageNode);
- }
- catch(Exception e) {
- 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
@@ -535,7 +508,32 @@
}
}
}
+
+ /**
+ * This will return or create the default package for rules that have no home yet.
+ */
+ public RulePackageItem loadDefaultRulePackage() throws RulesRepositoryException {
+ Node folderNode = this.getAreaNode( RULE_PACKAGE_AREA );
+ try {
+ if (folderNode.hasNode( "default" )) {
+ return loadRulePackage( "default" );
+ } else {
+ return createRulePackage( "default", "" );
+ }
+ } catch ( RepositoryException e ) {
+ throw new RulesRepositoryException(e);
+ }
+
+ }
+// /**
+// * This will add a rule to the default package.
+// * Normally you should load the specific package you want to store the rule in.
+// */
+// public RuleItem addRule(String name, String description) {
+// return loadDefaultRulePackage().addRule( name, description );
+// }
+
/**
* Similar to above. Loads a RulePackage for the specified uuid.
* @param uuid the uuid of the package to load
@@ -574,6 +572,10 @@
//create the node - see section 6.7.22.6 of the spec
Node rulePackageNode = folderNode.addNode(name, RulePackageItem.RULE_PACKAGE_TYPE_NAME);
+ rulePackageNode.addNode( "rules", "nt:folder" );
+ rulePackageNode.addNode( "functions", "nt:folder" );
+
+
rulePackageNode.setProperty(RulePackageItem.TITLE_PROPERTY_NAME, name);
@@ -584,7 +586,7 @@
rulePackageNode.setProperty(RulePackageItem.LAST_MODIFIED_PROPERTY_NAME, lastModified);
this.session.save();
- rulePackageNode.checkin();
+
return new RulePackageItem(this, rulePackageNode);
}
catch(Exception e) {
@@ -698,5 +700,22 @@
}
+ /**
+ * Save any pending changes.
+ */
+ public void save() {
+ try {
+ this.session.save();
+ } catch ( Exception e ) {
+ if (e instanceof RuntimeException ) {
+ throw (RuntimeException) e;
+ } else {
+ throw new RulesRepositoryException(e);
+ }
+ }
+
+ }
+
+
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/rule_node_type.cnd
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/rule_node_type.cnd 2006-10-02 21:48:17 UTC (rev 6539)
+++ labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/rule_node_type.cnd 2006-10-03 08:07:46 UTC (rev 6540)
@@ -18,6 +18,7 @@
// Properties:
- drools:content (string)
- drools:contentURI (string)
+
// use this to capture fields which are not known ahead of time
- * (undefined)
Modified: labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/rulepackage_node_type.cnd
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/rulepackage_node_type.cnd 2006-10-02 21:48:17 UTC (rev 6539)
+++ labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/rulepackage_node_type.cnd 2006-10-03 08:07:46 UTC (rev 6540)
@@ -12,11 +12,23 @@
// Supertypes
> 'drools:versionableNodeType'
-
+
+// Multiple rules etc are children of one physical package definition
+// ergo this has many rule nodes under it
+//+ * (drools:versionableNodeType)
+// version
+
++ * (nt:folder)
+ version
+
+
+/* MN: retiring this structure
- drools:ruleReference (reference)
multiple
copy
< 'drools:ruleNodeType','nt:version'
+*/
+
- drools:functionReference (reference)
multiple
Modified: labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/DslItemTestCase.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/DslItemTestCase.java 2006-10-02 21:48:17 UTC (rev 6539)
+++ labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/DslItemTestCase.java 2006-10-03 08:07:46 UTC (rev 6540)
@@ -32,7 +32,7 @@
//try constructing a DslItem object with the wrong node type
try {
//Get a reference to a node of the incorrect type
- RuleItem ruleItem1 = this.getRepo().addRule("test rule", "test guts");
+ RuleItem ruleItem1 = this.getRepo().loadDefaultRulePackage().addRule("test rule", "test guts");
//this should fail
DslItem dslItem2 = new DslItem(getRepo(), ruleItem1.getNode());
Modified: labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RuleItemTestCase.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RuleItemTestCase.java 2006-10-02 21:48:17 UTC (rev 6539)
+++ labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RuleItemTestCase.java 2006-10-03 08:07:46 UTC (rev 6540)
@@ -14,13 +14,17 @@
public class RuleItemTestCase extends TestCase {
- public RulesRepository getRepo() {
+ private RulesRepository getRepo() {
return RepositorySession.getRepository();
}
+ private RulePackageItem getDefaultPackage() {
+ return getRepo().loadDefaultRulePackage();
+ }
+
public void testRuleItem() {
//calls constructor
- RuleItem ruleItem1 = getRepo().addRule("testRuleItem", "test content");
+ RuleItem ruleItem1 = getDefaultPackage().addRule("testRuleItem", "test content");
assertNotNull(ruleItem1);
assertNotNull(ruleItem1.getNode());
@@ -30,7 +34,7 @@
try {
DslItem dslItem = getRepo().addDsl("testRuleItem", "content here");
- RuleItem ruleItem = new RuleItem(getRepo(), dslItem.getNode());
+ new RuleItem(getRepo(), dslItem.getNode());
fail("Exception not thrown for node of type: " + dslItem.getNode().getPrimaryNodeType().getName());
}
catch(RulesRepositoryException e) {
@@ -43,7 +47,8 @@
public void testGetContent() {
- RuleItem ruleItem1 = getRepo().addRule("testGetContent", "test content");
+ RuleItem ruleItem1 = getRepo().loadDefaultRulePackage().addRule("testGetContent", "test content");
+ ruleItem1.updateRuleContent( "test content" );
assertNotNull(ruleItem1);
assertNotNull(ruleItem1.getNode());
@@ -51,7 +56,7 @@
}
public void testGetURI() {
- RuleItem ruleItem1 = getRepo().addRule("testGetURI", "blah");
+ RuleItem ruleItem1 = getDefaultPackage().addRule("testGetURI", "blah");
ruleItem1.updateRuleContentURI( "foo/bar" );
ruleItem1.checkin( "ha !" );
assertNotNull(ruleItem1);
@@ -60,8 +65,10 @@
}
public void testUpdateContent() {
- RuleItem ruleItem1 = getRepo().addRule("testUpdateContent", "test content");
-
+ RuleItem ruleItem1 = getDefaultPackage().addRule("testUpdateContent", "test description");
+ ruleItem1.updateRuleContent( "test content" );
+ ruleItem1.checkin( "yeah" );
+
ruleItem1.updateRuleContent( "new rule content");
assertEquals("new rule content", ruleItem1.getRuleContent());
@@ -81,7 +88,7 @@
public void testCategories() {
- RuleItem ruleItem1 = getRepo().addRule("testAddTag", "test content");
+ RuleItem ruleItem1 = getDefaultPackage().addRule("testAddTag", "test content");
getRepo().loadCategory( "/" ).addCategory( "testAddTagTestTag", "description" );
@@ -120,7 +127,7 @@
}
public void testRemoveTag() {
- RuleItem ruleItem1 = getRepo().addRule("testRemoveTag", "test content");
+ RuleItem ruleItem1 = getDefaultPackage().addRule("testRemoveTag", "test content");
getRepo().loadCategory( "/" ).addCategory( "TestRemoveCategory", "description" );
@@ -143,7 +150,7 @@
}
public void testGetTags() {
- RuleItem ruleItem1 = getRepo().addRule("testGetTags", "test content");
+ RuleItem ruleItem1 = getDefaultPackage().addRule("testGetTags", "test content");
List tags = ruleItem1.getCategories();
assertNotNull(tags);
@@ -159,7 +166,7 @@
}
public void testSetStateString() {
- RuleItem ruleItem1 = getRepo().addRule("testSetStateString", "test content");
+ RuleItem ruleItem1 = getDefaultPackage().addRule("testSetStateString", "test content");
ruleItem1.setState("TestState1");
assertNotNull(ruleItem1.getState());
@@ -172,7 +179,7 @@
}
public void testSetStateStateItem() {
- RuleItem ruleItem1 = getRepo().addRule("testSetStateStateItem", "test content");
+ RuleItem ruleItem1 = getDefaultPackage().addRule("foobar", "test description");
StateItem stateItem1 = getRepo().getState("TestState1");
ruleItem1.setState(stateItem1);
@@ -187,7 +194,7 @@
}
public void testGetState() {
- RuleItem ruleItem1 = getRepo().addRule("testGetState", "test content");
+ RuleItem ruleItem1 = getDefaultPackage().addRule("testGetState", "test content");
StateItem stateItem1 = ruleItem1.getState();
assertNull(stateItem1);
@@ -196,16 +203,17 @@
assertNotNull(ruleItem1.getState());
assertEquals("TestState1", ruleItem1.getState().getName());
}
+
public void testToString() {
- RuleItem ruleItem1 = getRepo().addRule("testToString", "test content");
+ RuleItem ruleItem1 = getDefaultPackage().addRule("testToString", "test content");
assertNotNull(ruleItem1.toString());
}
public void testGetLastModified() {
- RuleItem ruleItem1 = getRepo().addRule("testGetLastModified", "test content");
+ RuleItem ruleItem1 = getDefaultPackage().addRule("testGetLastModified", "test content");
Calendar cal = Calendar.getInstance();
long before = cal.getTimeInMillis();
@@ -225,7 +233,7 @@
public void testGetDateEffective() {
- RuleItem ruleItem1 = getRepo().addRule("testGetDateEffective", "test content");
+ RuleItem ruleItem1 = getDefaultPackage().addRule("testGetDateEffective", "test content");
//it should be initialized to null
assertTrue(ruleItem1.getDateEffective() == null);
@@ -240,7 +248,7 @@
public void testGetDateExpired() {
try {
- RuleItem ruleItem1 = getRepo().addRule("testGetDateExpired", "test content");
+ RuleItem ruleItem1 = getRepo().loadDefaultRulePackage().addRule("testGetDateExpired", "test content");
//it should be initialized to null
assertTrue(ruleItem1.getDateExpired() == null);
@@ -259,7 +267,7 @@
public void testGetRuleLanguage() {
try {
- RuleItem ruleItem1 = getRepo().addRule("testGetRuleLanguage", "test content");
+ RuleItem ruleItem1 = getRepo().loadDefaultRulePackage().addRule("testGetRuleLanguage", "test content");
//it should be initialized to 'DRL'
assertEquals("DRL", ruleItem1.getRuleLanguage());
@@ -270,7 +278,7 @@
}
public void testSaveAndCheckinDescriptionAndTitle() throws Exception {
- RuleItem ruleItem1 = getRepo().addRule("testGetDescription", "test content");
+ RuleItem ruleItem1 = getRepo().loadDefaultRulePackage().addRule("testGetDescription", "");
//it should be "" to begin with
assertEquals("", ruleItem1.getDescription());
@@ -304,16 +312,18 @@
}
public void testGetPrecedingVersion() {
- RuleItem ruleItem1 = getRepo().addRule("testGetPrecedingVersion", "test content");
+ RuleItem ruleItem1 = getRepo().loadDefaultRulePackage().addRule("testGetPrecedingVersion", "descr");
+ assertTrue(ruleItem1.getPrecedingVersion() == null);
+ ruleItem1.updateRuleContent( "test content" );
+ ruleItem1.checkin( "boo" );
RuleItem predecessorRuleItem = (RuleItem) ruleItem1.getPrecedingVersion();
- assertTrue(predecessorRuleItem == null);
+ assertNotNull(predecessorRuleItem);
ruleItem1.updateRuleContent("new content");
ruleItem1.updateRuleContentURI( "foobar" );
ruleItem1.checkin( "two changes" );
-
predecessorRuleItem = (RuleItem) ruleItem1.getPrecedingVersion();
assertNotNull(predecessorRuleItem);
assertEquals("test content", predecessorRuleItem.getRuleContent());
@@ -335,7 +345,7 @@
public void testGetSucceedingVersion() {
try {
- RuleItem ruleItem1 = getRepo().addRule("testGetSucceedingVersion", "test content");
+ RuleItem ruleItem1 = getRepo().loadDefaultRulePackage().addRule("testGetSucceedingVersion", "test description");
RuleItem succeedingRuleItem = (RuleItem) ruleItem1.getSucceedingVersion();
assertTrue(succeedingRuleItem == null);
@@ -345,7 +355,7 @@
RuleItem predecessorRuleItem = (RuleItem) ruleItem1.getPrecedingVersion();
- assertEquals("test content", predecessorRuleItem.getRuleContent());
+ assertEquals(null, predecessorRuleItem.getRuleContent());
succeedingRuleItem = (RuleItem) predecessorRuleItem.getSucceedingVersion();
assertNotNull(succeedingRuleItem);
assertEquals(ruleItem1.getRuleContent(), succeedingRuleItem.getRuleContent());
@@ -357,7 +367,7 @@
public void testGetSuccessorVersionsIterator() {
try {
- RuleItem ruleItem1 = getRepo().addRule("testGetSuccessorVersionsIterator", "test content");
+ RuleItem ruleItem1 = getRepo().loadDefaultRulePackage().addRule("testGetSuccessorVersionsIterator", "test content");
Iterator iterator = ruleItem1.getSuccessorVersionsIterator();
assertNotNull(iterator);
@@ -398,12 +408,19 @@
public void testGetPredecessorVersionsIterator() {
try {
- RuleItem ruleItem1 = getRepo().addRule("testGetPredecessorVersionsIterator", "test content");
+ RuleItem ruleItem1 = getRepo().loadDefaultRulePackage().addRule("testGetPredecessorVersionsIterator", "test description");
Iterator iterator = ruleItem1.getPredecessorVersionsIterator();
assertNotNull(iterator);
- assertFalse(iterator.hasNext());
+ assertFalse(iterator.hasNext());
+ ruleItem1.updateRuleContent( "test content" );
+ ruleItem1.checkin( "lalalalala" );
+
+ iterator = ruleItem1.getPredecessorVersionsIterator();
+ assertNotNull(iterator);
+ assertTrue(iterator.hasNext());
+
ruleItem1.updateRuleContent("new content");
ruleItem1.checkin( "boo" );
@@ -411,7 +428,7 @@
assertNotNull(iterator);
assertTrue(iterator.hasNext());
RuleItem nextRuleItem = (RuleItem) iterator.next();
- assertFalse(iterator.hasNext());
+
assertEquals("test content", nextRuleItem.getRuleContent());
ruleItem1.updateRuleContent("newer content");
@@ -425,8 +442,11 @@
assertTrue(iterator.hasNext());
assertEquals("new content", nextRuleItem.getRuleContent());
nextRuleItem = (RuleItem) iterator.next();
- assertFalse(iterator.hasNext());
+
assertEquals("test content", nextRuleItem.getRuleContent());
+
+ assertEquals(null, ((RuleItem) iterator.next()).getRuleContent());
+
}
catch(Exception e) {
fail("Caught unexpected exception: " + e);
@@ -435,7 +455,7 @@
public void testGetTitle() {
try {
- RuleItem ruleItem1 = getRepo().addRule("testGetTitle", "test content");
+ RuleItem ruleItem1 = getRepo().loadDefaultRulePackage().addRule("testGetTitle", "test content");
assertEquals("testGetTitle", ruleItem1.getTitle());
}
@@ -446,7 +466,7 @@
public void testGetFormat() {
try {
- RuleItem ruleItem1 = getRepo().addRule("testGetFormat", "test content");
+ RuleItem ruleItem1 = getRepo().loadDefaultRulePackage().addRule("testGetFormat", "test content");
assertEquals("Rule", ruleItem1.getFormat());
}
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-10-02 21:48:17 UTC (rev 6539)
+++ labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RulePackageItemTestCase.java 2006-10-03 08:07:46 UTC (rev 6540)
@@ -1,6 +1,7 @@
package org.drools.repository;
import java.io.File;
+import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@@ -17,7 +18,7 @@
try {
//calls constructor
- RulePackageItem rulePackageItem1 = repo.createRulePackage("testRulePackage");
+ RulePackageItem rulePackageItem1 = repo.createRulePackage("testRulePackage", "desc");
assertNotNull(rulePackageItem1);
assertEquals("testRulePackage", rulePackageItem1.getName());
@@ -61,12 +62,13 @@
public void testLoadRulePackageItem() {
- RulePackageItem rulePackageItem = getRepo().createRulePackage("testLoadRuleRuleItem");
+ RulePackageItem rulePackageItem = getRepo().createRulePackage("testLoadRuleRuleItem", "desc");
rulePackageItem = getRepo().loadRulePackage("testLoadRuleRuleItem");
assertNotNull(rulePackageItem);
assertEquals("testLoadRuleRuleItem", rulePackageItem.getName());
+ assertEquals("desc", rulePackageItem.getDescription());
// try loading rule package that was not created
try {
rulePackageItem = getRepo().loadRulePackage("anotherRuleRuleItem");
@@ -79,7 +81,7 @@
public void testLoadRulePackageItemByUUID() throws Exception {
- RulePackageItem rulePackageItem = getRepo().createRulePackage("testLoadRuleRuleItemByUUID");
+ RulePackageItem rulePackageItem = getRepo().createRulePackage("testLoadRuleRuleItemByUUID", "desc");
String uuid = null;
uuid = rulePackageItem.getNode().getUUID();
@@ -100,82 +102,49 @@
}
public void testAddRuleRuleItem() {
- RulePackageItem rulePackageItem1 = getRepo().createRulePackage("testAddRuleRuleItem");
+ RulePackageItem rulePackageItem1 = getRepo().createRulePackage("testAddRuleRuleItem","desc");
+
- RuleItem ruleItem1 = getRepo().addRule("testAddRuleRuleItem", "test content");
+ RuleItem ruleItem1 = rulePackageItem1.addRule("testAddRuleRuleItem", "test description");
+ ruleItem1.updateRuleContent( "test content" );
+ ruleItem1.checkin( "updated the rule content" );
- rulePackageItem1.addRule(ruleItem1);
+ Iterator rulesIt = rulePackageItem1.getRules();
+ assertNotNull(rulesIt);
+ RuleItem first = (RuleItem) rulesIt.next();
+ assertFalse(rulesIt.hasNext());
+ assertEquals("testAddRuleRuleItem", first.getName());
- List rules = rulePackageItem1.getRules();
- assertNotNull(rules);
- assertEquals(1, rules.size());
- assertEquals("testAddRuleRuleItem", ((RuleItem)rules.get(0)).getName());
-
//test that it is following the head revision
ruleItem1.updateRuleContent("new lhs");
- rules = rulePackageItem1.getRules();
- assertNotNull(rules);
+ ruleItem1.checkin( "updated again" );
+ rulesIt = rulePackageItem1.getRules();
+ assertNotNull(rulesIt);
+
+ List rules = iteratorToList( rulesIt );
assertEquals(1, rules.size());
assertEquals("testAddRuleRuleItem", ((RuleItem)rules.get(0)).getName());
assertEquals("new lhs", ((RuleItem)rules.get(0)).getRuleContent());
- RuleItem ruleItem2 = getRepo().addRule("testAddRuleRuleItem2", "test content");
- rulePackageItem1.addRule(ruleItem2);
+ RuleItem ruleItem2 = rulePackageItem1.addRule("testAddRuleRuleItem2", "test content");
- rules = rulePackageItem1.getRules();
+ rules = iteratorToList(rulePackageItem1.getRules());
assertNotNull(rules);
assertEquals(2, rules.size());
}
- public void testAddRuleRuleItemBoolean() {
- RulePackageItem rulePackageItem1 = getRepo().createRulePackage("testAddRuleRuleItemBoolean");
-
- RuleItem ruleItem1 = getRepo().addRule("testAddRuleRuleItemBoolean", "test content");
-
- rulePackageItem1.addRule(ruleItem1, true);
-
- List rules = rulePackageItem1.getRules();
- assertNotNull(rules);
- assertEquals(1, rules.size());
- assertEquals("testAddRuleRuleItemBoolean", ((RuleItem)rules.get(0)).getName());
-
- //test that it is following the head revision
- ruleItem1.updateRuleContent("new lhs");
- rules = rulePackageItem1.getRules();
- assertNotNull(rules);
- assertEquals(1, rules.size());
- assertEquals("testAddRuleRuleItemBoolean", ((RuleItem)rules.get(0)).getName());
- assertEquals("new lhs", ((RuleItem)rules.get(0)).getRuleContent());
-
- RuleItem ruleItem2 = getRepo().addRule("testAddRuleRuleItemBoolean2", "test lhs content");
- rulePackageItem1.addRule(ruleItem2);
-
- rules = rulePackageItem1.getRules();
- assertNotNull(rules);
- assertEquals(2, rules.size());
-
- //test not following the head revision
- rulePackageItem1.removeAllRules();
- RuleItem ruleItem3 = getRepo().addRule("testAddRuleRuleItemBoolean3", "test lhs content");
-
- rulePackageItem1.addRule(ruleItem3, false);
-
- rules = rulePackageItem1.getRules();
- assertNotNull(rules);
- assertEquals(1, rules.size());
- assertEquals("test lhs content", ((RuleItem)rules.get(0)).getRuleContent());
-
- ruleItem3.updateRuleContent("new lhs");
- rules = rulePackageItem1.getRules();
- assertNotNull(rules);
- assertEquals(1, rules.size());
- assertEquals("test lhs content", ((RuleItem)rules.get(0)).getRuleContent());
-
+
+ private List iteratorToList(Iterator it) {
+ List list = new ArrayList();
+ while(it.hasNext()) {
+ list.add( it.next() );
+ }
+ return list;
}
public void testAddFunctionFunctionItem() {
- RulePackageItem rulePackageItem1 = getRepo().createRulePackage("testAddFunctionFunctionItem");
+ RulePackageItem rulePackageItem1 = getRepo().createRulePackage("testAddFunctionFunctionItem", "desc");
FunctionItem functionItem1 = getRepo().addFunction("test function", "test content");
@@ -204,7 +173,7 @@
}
public void testAddFunctionFunctionItemBoolean() {
- RulePackageItem rulePackageItem1 = getRepo().createRulePackage("testAddFunctionFunctionItemBoolean");
+ RulePackageItem rulePackageItem1 = getRepo().createRulePackage("testAddFunctionFunctionItemBoolean", "desc");
FunctionItem functionItem1 = getRepo().addFunction("testAddFunctionFunctionItemBoolean", "test content");
@@ -230,27 +199,11 @@
assertNotNull(functions);
assertEquals(2, functions.size());
- //test not following the head revision
- rulePackageItem1.removeAllFunctions();
- FunctionItem functionItem3 = getRepo().addFunction("testAddFunctionFunctionItemBoolean3", "test content");
-
- rulePackageItem1.addFunction(functionItem3, false);
-
- functions = rulePackageItem1.getFunctions();
- assertNotNull(functions);
- assertEquals(1, functions.size());
- assertEquals("test content", ((FunctionItem)functions.get(0)).getContent());
-
- functionItem3.updateContent("new content");
- functions = rulePackageItem1.getFunctions();
- assertNotNull(functions);
- assertEquals(1, functions.size());
- assertEquals("test content", ((FunctionItem)functions.get(0)).getContent());
}
public void testGetFunctions() {
- RulePackageItem rulePackageItem1 = getRepo().createRulePackage("testGetFunctions");
+ RulePackageItem rulePackageItem1 = getRepo().createRulePackage("testGetFunctions", "desc");
FunctionItem functionItem1 = getRepo().addFunction("testGetFunctions", "test content");
@@ -271,94 +224,80 @@
}
public void testGetRules() {
- RulePackageItem rulePackageItem1 = getRepo().createRulePackage("testGetRules");
+ RulePackageItem rulePackageItem1 = getRepo().createRulePackage("testGetRules", "desc");
- RuleItem ruleItem1 = getRepo().addRule("testGetRules", "test lhs content" );
+ RuleItem ruleItem1 = rulePackageItem1.addRule("testGetRules", "desc" );
+ ruleItem1.updateRuleContent( "test lhs content" );
+
- rulePackageItem1.addRule(ruleItem1);
-
- List rules = rulePackageItem1.getRules();
+ List rules = iteratorToList(rulePackageItem1.getRules());
assertNotNull(rules);
assertEquals(1, rules.size());
assertEquals("testGetRules", ((RuleItem)rules.get(0)).getName());
- RuleItem ruleItem2 = getRepo().addRule("testGetRules2", "test lhs content" );
- rulePackageItem1.addRule(ruleItem2);
+ RuleItem ruleItem2 = rulePackageItem1.addRule("testGetRules2", "desc" );
+ ruleItem2.updateRuleContent( "test lhs content" );
- rules = rulePackageItem1.getRules();
+ rules = iteratorToList(rulePackageItem1.getRules());
assertNotNull(rules);
assertEquals(2, rules.size());
}
public void testToString() {
- RulePackageItem rulePackageItem1 = getRepo().createRulePackage("testToStringPackage");
+ RulePackageItem rulePackageItem1 = getRepo().createRulePackage("testToStringPackage", "desc");
- RuleItem ruleItem1 = getRepo().addRule("testToStringPackage", "test lhs content" );
+ RuleItem ruleItem1 = rulePackageItem1.addRule("testToStringPackage", "test lhs content" );
+ ruleItem1.updateRuleContent( "test lhs content" );
- rulePackageItem1.addRule(ruleItem1);
assertNotNull(rulePackageItem1.toString());
}
public void testRemoveRule() {
- RulePackageItem rulePackageItem1 = getRepo().createRulePackage("testRemoveRule");
+ RulePackageItem rulePackageItem1 = getRepo().createRulePackage("testRemoveRule", "desc");
- RuleItem ruleItem1 = getRepo().addRule("testRemoveRule", "test lhs content" );
+ RuleItem ruleItem1 = rulePackageItem1.addRule("testRemoveRule", "test lhs content" );
+ ruleItem1.updateRuleContent( "test lhs content" );
- rulePackageItem1.addRule(ruleItem1);
- List rules = rulePackageItem1.getRules();
- assertNotNull(rules);
- assertEquals(1, rules.size());
- assertEquals("testRemoveRule", ((RuleItem)rules.get(0)).getName());
-
+
+ Iterator rulesIt = rulePackageItem1.getRules();
+ RuleItem next = (RuleItem) rulesIt.next();
+
+ assertFalse(rulesIt.hasNext());
+ assertEquals("testRemoveRule", next.getName());
+
+
+
ruleItem1.updateRuleContent("new lhs");
- rules = rulePackageItem1.getRules();
+ List rules = iteratorToList(rulePackageItem1.getRules());
assertNotNull(rules);
assertEquals(1, rules.size());
assertEquals("testRemoveRule", ((RuleItem)rules.get(0)).getName());
assertEquals("new lhs", ((RuleItem)rules.get(0)).getRuleContent());
+
+ RuleItem ruleItem2 = rulePackageItem1.addRule("testRemoveRule2", "test lhs content");
- RuleItem ruleItem2 = getRepo().addRule("testRemoveRule2", "test lhs content" );
- rulePackageItem1.addRule(ruleItem2);
-
//remove the rule, make sure the other rule in the pacakge stays around
- rulePackageItem1.removeRule(ruleItem1);
- rules = rulePackageItem1.getRules();
+ rulePackageItem1.removeRule(ruleItem1.getName());
+ rulePackageItem1.rulesRepository.save();
+ rules = iteratorToList(rulePackageItem1.getRules());
assertEquals(1, rules.size());
assertEquals("testRemoveRule2", ((RuleItem)rules.get(0)).getName());
//remove the rule that is following the head revision, make sure the pacakge is now empty
- rulePackageItem1.removeRule(ruleItem2);
- rules = rulePackageItem1.getRules();
+ rulePackageItem1.removeRule(ruleItem2.getName());
+ rules = iteratorToList(rulePackageItem1.getRules());
assertNotNull(rules);
assertEquals(0, rules.size());
}
- public void testRemoveAllRules() {
- RulePackageItem rulePackageItem1 = getRepo().createRulePackage("testRemoveAllRules");
-
- RuleItem ruleItem1 = getRepo().addRule("testRemoveAllRules", "test lhs content" );
-
- rulePackageItem1.addRule(ruleItem1);
-
- List rules = rulePackageItem1.getRules();
- assertNotNull(rules);
- assertEquals(1, rules.size());
- assertEquals("testRemoveAllRules", ((RuleItem)rules.get(0)).getName());
-
- rulePackageItem1.removeAllRules();
-
- rules = rulePackageItem1.getRules();
- assertNotNull(rules);
- assertEquals(0, rules.size());
-
- }
+
public void testRemoveFunction() {
- RulePackageItem rulePackageItem1 = getRepo().createRulePackage("testRemoveFunction");
+ RulePackageItem rulePackageItem1 = getRepo().createRulePackage("testRemoveFunction", "yayayaya");
FunctionItem functionItem1 = getRepo().addFunction("testRemoveFunction", "test content");
@@ -393,56 +332,9 @@
}
- public void testRemoveAllFunctions() {
- RulePackageItem rulePackageItem1 = getRepo().createRulePackage("testRemoveAllFunctions");
-
- FunctionItem functionItem1 = getRepo().addFunction("testRemoveAllFunctions", "test content");
-
- rulePackageItem1.addFunction(functionItem1);
-
- List functions = rulePackageItem1.getFunctions();
- assertNotNull(functions);
- assertEquals(1, functions.size());
- assertEquals("testRemoveAllFunctions", ((FunctionItem)functions.get(0)).getName());
-
- rulePackageItem1.removeAllFunctions();
-
- functions = rulePackageItem1.getFunctions();
- assertNotNull(functions);
- assertEquals(0, functions.size());
-
- }
- public void testGetPrecedingVersion() {
- //not bothering to implement this test since it is pretty much covered by the RuleItemTestCase
- }
-
- public void testGetSucceedingVersion() {
- //not bothering to implement this test since it is pretty much covered by the RuleItemTestCase
- }
-
- public void testGetSuccessorVersionsIterator() {
- //This is covered by the test in RuleItemTestCase - all functionality under test
- // resides in the common subclass, VersionableItem
- }
-
- public void testGetPredecessorVersionsIterator() {
- //This is covered by the test in RuleItemTestCase - all functionality under test
- // resides in the common subclass, VersionableItem
- }
-
- public void testGetTitle() {
- //This is covered by the test in RuleItemTestCase - all functionality under test
- // resides in the common subclass, VersionableItem
- }
-
- public void testGetContributor() {
- //This is covered by the test in RuleItemTestCase - all functionality under test
- // resides in the common subclass, VersionableItem
- }
-
public void testGetFormat() {
- RulePackageItem rulePackageItem1 = getRepo().createRulePackage("testGetFormat");
+ RulePackageItem rulePackageItem1 = getRepo().createRulePackage("testGetFormat", "woot");
assertNotNull(rulePackageItem1);
assertEquals("Rule Package", rulePackageItem1.getFormat());
Modified: labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RulesRepositoryTestCase.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RulesRepositoryTestCase.java 2006-10-02 21:48:17 UTC (rev 6539)
+++ labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RulesRepositoryTestCase.java 2006-10-03 08:07:46 UTC (rev 6540)
@@ -1,10 +1,9 @@
package org.drools.repository;
-import java.io.File;
import java.util.Calendar;
import java.util.Iterator;
-import org.drools.repository.*;
+import javax.jcr.NodeIterator;
import junit.framework.TestCase;
@@ -17,60 +16,62 @@
protected void tearDown() throws Exception {
super.tearDown();
}
-
- public void testAddRuleDslItemBoolean() {
- RulesRepository rulesRepository = RepositorySession.getRepository();
-
-
-
- DslItem dslItem1 = rulesRepository.addDsl("testAddRuleDslItemBoolean", "original content");
- assertNotNull(dslItem1);
-
- RuleItem ruleItem1 = rulesRepository.addRule("testAddRuleDslItemBoolean", "test lhs content", dslItem1, true);
-
- assertNotNull(ruleItem1);
- assertNotNull(ruleItem1.getNode());
- assertNotNull(ruleItem1.getDsl());
- assertEquals(dslItem1.getContent(), ruleItem1.getDsl().getContent());
-
- //test that this follows the head version
-
- dslItem1.updateContent("new content");
- assertNotNull(ruleItem1.getNode());
- assertNotNull(ruleItem1.getDsl());
- assertEquals(dslItem1.getContent(), ruleItem1.getDsl().getContent());
-
- //now do the same thing, but test not following head:
- RuleItem ruleItem2 = rulesRepository.addRule("testAddRuleDslItemBoolean2", "test lhs content", dslItem1, false);
-
- assertNotNull(ruleItem2);
- assertNotNull(ruleItem2.getNode());
- assertNotNull(ruleItem2.getDsl());
- assertEquals(dslItem1.getContent(), ruleItem2.getDsl().getContent());
-
- //test that this stays tied to the specific revision of the DSL node
- String originalContent = ruleItem2.getDsl().getContent();
- dslItem1.updateContent("new content");
- assertNotNull(ruleItem2.getNode());
- assertNotNull(ruleItem2.getDsl());
- assertEquals(originalContent, ruleItem2.getDsl().getContent());
+
+ public void testDefaultPackage() throws Exception {
+ RulesRepository repo = RepositorySession.getRepository();
+ RulePackageItem def = repo.loadDefaultRulePackage();
+ assertNotNull(def);
+ assertEquals("default", def.getName());
}
- public void testAddRuleCalendarCalendar() {
+ public void testAddVersionARule() throws Exception {
+ RulesRepository repo = RepositorySession.getRepository();
+ RulePackageItem pack = repo.createRulePackage( "testAddVersionARule", "description" );
+ repo.save();
+
+ RuleItem rule = pack.addRule( "my rule", "foobar" );
+ assertEquals("my rule", rule.getName());
+
+ rule.updateRuleContent( "foo foo" );
+ rule.checkin( "foobar" );
+
+ pack.addRule( "other rule", "description" );
+
+ RulePackageItem pack2 = repo.loadRulePackage( "testAddVersionARule" );
+
+ Iterator it = pack2.getRules();
+
+ it.next();
+ it.next();
+
+ assertFalse(it.hasNext());
+
+ RuleItem prev = (RuleItem) rule.getPrecedingVersion();
+
+ assertEquals("foo foo", rule.getRuleContent());
+ assertFalse("foo foo".equals( prev.getRuleContent() ));
+
+
+
+ }
+
+ public void testAddRuleCalendarWithDates() {
RulesRepository rulesRepository = RepositorySession.getRepository();
Calendar effectiveDate = Calendar.getInstance();
Calendar expiredDate = Calendar.getInstance();
expiredDate.setTimeInMillis(effectiveDate.getTimeInMillis() + (1000 * 60 * 60 * 24));
- RuleItem ruleItem1 = rulesRepository.addRule("testAddRuleCalendarCalendar", "test lhs content");
+ RuleItem ruleItem1 = rulesRepository.loadDefaultRulePackage().addRule("testAddRuleCalendarCalendar", "desc");
ruleItem1.updateDateEffective( effectiveDate );
ruleItem1.updateDateExpired( expiredDate );
-
+
assertNotNull(ruleItem1);
assertNotNull(ruleItem1.getNode());
assertEquals(effectiveDate, ruleItem1.getDateEffective());
- assertEquals(expiredDate, ruleItem1.getDateExpired());
+ assertEquals(expiredDate, ruleItem1.getDateExpired());
+
+ ruleItem1.checkin( "ho " );
}
public void testGetState() {
@@ -135,7 +136,7 @@
RulesRepository rulesRepository = RepositorySession.getRepository();
- RulePackageItem rulePackageItem1 = rulesRepository.createRulePackage("testListPackages");
+ RulePackageItem rulePackageItem1 = rulesRepository.createRulePackage("testListPackages", "desc");
Iterator it = rulesRepository.listPackages();
assertTrue(it.hasNext());
Modified: labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/ScalabilityTest.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/ScalabilityTest.java 2006-10-02 21:48:17 UTC (rev 6539)
+++ labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/ScalabilityTest.java 2006-10-03 08:07:46 UTC (rev 6540)
@@ -128,7 +128,7 @@
System.out.println("ADDING rule: " + ruleName);
- RuleItem item = repo.addRule( ruleName, "Foo(bar == " + i + ")panic(" + i + ");" );
+ RuleItem item = repo.loadDefaultRulePackage().addRule( ruleName, "Foo(bar == " + i + ")panic(" + i + ");" );
item.addCategory( cat );
list.add( item );
More information about the jboss-svn-commits
mailing list