[jboss-svn-commits] JBL Code SVN: r6958 - in labs/jbossrules/trunk/drools-repository/src/main: java/org/drools/repository resources/node_type_definitions
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Oct 20 11:46:02 EDT 2006
Author: michael.neale at jboss.com
Date: 2006-10-20 11:45:54 -0400 (Fri, 20 Oct 2006)
New Revision: 6958
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/RuleItem.java
labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/VersionableItem.java
labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/function_node_type.cnd
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/main/resources/node_type_definitions/versionable_node_type.cnd
Log:
refactor/rearrange so that categorisation lives on all versionable item nodes (not just rules).
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 2006-10-20 14:12:23 UTC (rev 6957)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RepositoryConfigurator.java 2006-10-20 15:45:54 UTC (rev 6958)
@@ -108,11 +108,13 @@
if (!registered) {
ws.getNamespaceRegistry().registerNamespace("drools", RulesRepository.DROOLS_URI);
+ //Note, the order in which they are registered actually does matter !
+ this.registerNodeTypesFromCndFile("/node_type_definitions/tag_node_type.cnd", ws);
this.registerNodeTypesFromCndFile("/node_type_definitions/versionable_node_type.cnd", ws);
this.registerNodeTypesFromCndFile("/node_type_definitions/versionable_asset_folder_node_type.cnd", ws);
this.registerNodeTypesFromCndFile("/node_type_definitions/dsl_node_type.cnd", ws);
- this.registerNodeTypesFromCndFile("/node_type_definitions/tag_node_type.cnd", ws);
+
this.registerNodeTypesFromCndFile("/node_type_definitions/state_node_type.cnd", ws);
this.registerNodeTypesFromCndFile("/node_type_definitions/rule_node_type.cnd", ws);
this.registerNodeTypesFromCndFile("/node_type_definitions/function_node_type.cnd", ws);
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-20 14:12:23 UTC (rev 6957)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RuleItem.java 2006-10-20 15:45:54 UTC (rev 6958)
@@ -27,12 +27,8 @@
*/
public static final String DSL_PROPERTY_NAME = "drools:dslReference";
+
/**
- * The name of the tag property on the rule node type
- */
- public static final String TAG_PROPERTY_NAME = "drools:categoryReference";
-
- /**
* The name of the rule node type
*/
public static final String RULE_NODE_TYPE_NAME = "drools:ruleNodeType";
@@ -275,62 +271,10 @@
}
}
- /**
- * Adds the specified tag to this object's rule node. Tags are stored as nodes in a tag area of
- * the repository. If the specified tag does not already have a corresponding node, a node is
- * created for it.
- *
- * @param tag the tag to add to the rule. rules can have multiple tags
- * @throws RulesRepositoryException
- */
- public void addCategory(String tag) throws RulesRepositoryException {
- try {
- //make sure this object's node is the head version
- checkIsUpdateable();
-
- CategoryItem tagItem = this.rulesRepository.loadCategory(tag);
-
- //now set the tag property of the rule
- Property tagReferenceProperty;
- int i = 0;
- Value[] newTagValues = null;
- try {
- tagReferenceProperty = this.node.getProperty(TAG_PROPERTY_NAME);
- Value[] oldTagValues = tagReferenceProperty.getValues();
-
- //first, make sure this tag wasn't already there. while we're at it, lets copy the array
- newTagValues = new Value[oldTagValues.length + 1];
- for(i=0; i<oldTagValues.length; i++) {
- if(oldTagValues[i].getString().equals(tag)) {
- log.info("tag '" + tag + "' already existed for rule node: " + this.node.getName());
- return;
- }
- newTagValues[i] = oldTagValues[i];
- }
- }
- catch(PathNotFoundException e) {
- //the property doesn't exist yet, so create it in the finally block
- newTagValues = new Value[1];
- }
- finally {
- if(newTagValues != null) {
- newTagValues[i] = this.node.getSession().getValueFactory().createValue(tagItem.getNode());
- this.node.checkout();
- this.node.setProperty(TAG_PROPERTY_NAME, newTagValues);
- }
- else {
- log.error("reached expected path of execution when adding tag '" + tag + "' to ruleNode: " + this.node.getName());
- }
- }
- }
- catch(Exception e) {
- log.error("Caught exception", e);
- throw new RulesRepositoryException(e);
- }
- }
+
/**
* Removes the specified tag from this object's rule node.
*
@@ -399,36 +343,7 @@
}
}
- /**
- * Gets a list of CategoryItem objects for this object's rule node.
- *
- * @return a list of TagItem objects for each tag on the rule. If there are no tags, an empty list.
- * @throws RulesRepositoryException
- */
- public List getCategories() throws RulesRepositoryException {
- try {
- Node ruleNode = getVersionContentNode();
-
- List returnList = new ArrayList();
- try {
- Property tagReferenceProperty = ruleNode.getProperty(TAG_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);
- }
- }
- catch(PathNotFoundException e) {
- //the property doesn't even exist yet, so just return nothing
- }
- return returnList;
- }
- catch(Exception e) {
- log.error("Caught exception", e);
- throw new RulesRepositoryException(e);
- }
- }
+
/**
* Sets this object's rule node's state property to refer to the specified state node
Modified: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/VersionableItem.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/VersionableItem.java 2006-10-20 14:12:23 UTC (rev 6957)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/VersionableItem.java 2006-10-20 15:45:54 UTC (rev 6958)
@@ -1,6 +1,8 @@
package org.drools.repository;
+import java.util.ArrayList;
import java.util.Calendar;
+import java.util.List;
import javax.jcr.Node;
import javax.jcr.PathNotFoundException;
@@ -42,6 +44,12 @@
public static final String VERSION_NUMBER_PROPERTY_NAME = "drools:versionNumber";
/**
+ * The name of the tag property on the rule node type
+ */
+ public static final String TAG_PROPERTY_NAME = "drools:categoryReference";
+
+
+ /**
* The possible formats for the format property of the node
*/
public static final String RULE_FORMAT = "Rule";
@@ -436,5 +444,90 @@
} catch ( RepositoryException e ) {
throw new RulesRepositoryException(e);
}
+ }
+
+ /**
+ * Adds the specified tag to this object's rule node. Tags are stored as nodes in a tag area of
+ * the repository. If the specified tag does not already have a corresponding node, a node is
+ * created for it.
+ *
+ * @param tag the tag to add to the rule. rules can have multiple tags
+ * @throws RulesRepositoryException
+ */
+ public void addCategory(String tag) throws RulesRepositoryException {
+ try {
+ //make sure this object's node is the head version
+ checkIsUpdateable();
+
+ CategoryItem tagItem = this.rulesRepository.loadCategory(tag);
+
+ //now set the tag property of the rule
+ Property tagReferenceProperty;
+ int i = 0;
+ Value[] newTagValues = null;
+ try {
+ tagReferenceProperty = this.node.getProperty(TAG_PROPERTY_NAME);
+ Value[] oldTagValues = tagReferenceProperty.getValues();
+
+ //first, make sure this tag wasn't already there. while we're at it, lets copy the array
+ newTagValues = new Value[oldTagValues.length + 1];
+ for(i=0; i<oldTagValues.length; i++) {
+ if(oldTagValues[i].getString().equals(tag)) {
+ log.info("tag '" + tag + "' already existed for rule node: " + this.node.getName());
+ return;
+ }
+ newTagValues[i] = oldTagValues[i];
+ }
+ }
+ catch(PathNotFoundException e) {
+ //the property doesn't exist yet, so create it in the finally block
+ newTagValues = new Value[1];
+ }
+ finally {
+ if(newTagValues != null) {
+ newTagValues[i] = this.node.getSession().getValueFactory().createValue(tagItem.getNode());
+ this.node.checkout();
+ this.node.setProperty(TAG_PROPERTY_NAME, newTagValues);
+ }
+ else {
+ log.error("reached expected path of execution when adding tag '" + tag + "' to ruleNode: " + this.node.getName());
+ }
+ }
+ }
+ catch(Exception e) {
+ log.error("Caught exception", e);
+ throw new RulesRepositoryException(e);
+ }
+ }
+
+ /**
+ * Gets a list of CategoryItem objects for this object's rule node.
+ *
+ * @return a list of TagItem objects for each tag on the rule. If there are no tags, an empty list.
+ * @throws RulesRepositoryException
+ */
+ public List getCategories() throws RulesRepositoryException {
+ try {
+ Node ruleNode = getVersionContentNode();
+
+ List returnList = new ArrayList();
+ try {
+ Property tagReferenceProperty = ruleNode.getProperty(TAG_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);
+ }
+ }
+ catch(PathNotFoundException e) {
+ //the property doesn't even exist yet, so just return nothing
+ }
+ return returnList;
+ }
+ catch(Exception e) {
+ log.error("Caught exception", e);
+ throw new RulesRepositoryException(e);
+ }
}
}
Modified: labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/function_node_type.cnd
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/function_node_type.cnd 2006-10-20 14:12:23 UTC (rev 6957)
+++ labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/function_node_type.cnd 2006-10-20 15:45:54 UTC (rev 6958)
@@ -21,10 +21,6 @@
= 'Java'
mandatory autocreated
-- drools:categoryReference (reference)
- multiple
- copy
- < 'drools:categoryNodeType'
- drools:stateReference (reference)
copy
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-20 14:12:23 UTC (rev 6957)
+++ labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/rule_node_type.cnd 2006-10-20 15:45:54 UTC (rev 6958)
@@ -35,11 +35,8 @@
copy
< 'drools:dslNodeType','nt:version'
-- drools:categoryReference (reference)
- multiple
- copy
- < 'drools:categoryNodeType'
+
- drools:stateReference (reference)
copy
< 'drools:stateNodeType'
\ No newline at end of file
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-20 14:12:23 UTC (rev 6957)
+++ labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/rulepackage_node_type.cnd 2006-10-20 15:45:54 UTC (rev 6958)
@@ -28,7 +28,7 @@
< 'drools:ruleNodeType','nt:version'
*/
-
+//this will need to be removed eventually, best done like rules
- drools:functionReference (reference)
multiple
copy
Modified: labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/versionable_node_type.cnd
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/versionable_node_type.cnd 2006-10-20 14:12:23 UTC (rev 6957)
+++ labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/versionable_node_type.cnd 2006-10-20 15:45:54 UTC (rev 6958)
@@ -28,9 +28,14 @@
- drools:description (string)
mandatory
- - drools:format (string)
+- drools:format (string)
mandatory
- - drools:checkinComment (string)
-
+- drools:checkinComment (string)
+
+//for taxonomies/asset classification
+- drools:categoryReference (reference)
+ multiple
+ copy
+ < 'drools:categoryNodeType'
\ No newline at end of file
More information about the jboss-svn-commits
mailing list