[jboss-svn-commits] JBL Code SVN: r8985 - in labs/jbossrules/trunk/drools-repository/src: main/resources/node_type_definitions and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Jan 22 19:18:36 EST 2007
Author: michael.neale at jboss.com
Date: 2007-01-22 19:18:36 -0500 (Mon, 22 Jan 2007)
New Revision: 8985
Removed:
labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/dsl_node_type.cnd
labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/function_node_type.cnd
Modified:
labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/AssetItem.java
labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/PackageItem.java
labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RepositoryConfigurator.java
labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RulesRepository.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/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/AssetItemTest.java
Log:
JBRULES-461 JBRULES-616 Restore functionality, plus some cleanups.
Modified: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/AssetItem.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/AssetItem.java 2007-01-23 00:00:01 UTC (rev 8984)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/AssetItem.java 2007-01-23 00:18:36 UTC (rev 8985)
@@ -35,7 +35,6 @@
public static final String CONTENT_PROPERTY_NAME = "drools:content";
- public static final String CONTENT_URI_PROPERTY_NAME = "drools:contentURI";
/**
* The name of the date effective property on the rule node type
@@ -97,29 +96,7 @@
}
}
- /**
- * returns the URI for where the rules content is stored.
- * Rule content may be stored in an external repository,
- * such as subversion. This URI will contain information for
- * how to get to the exact version that maps to this rule node.
- */
- public String getContentURI() throws RulesRepositoryException {
- try {
- Node ruleNode = getVersionContentNode();
- if ( ruleNode.hasProperty( CONTENT_URI_PROPERTY_NAME ) ) {
- Property data = ruleNode.getProperty( CONTENT_URI_PROPERTY_NAME );
- return data.getValue().getString();
- } else {
- return "";
- }
- } catch ( Exception e ) {
- log.error( "Caught Exception",
- e );
- throw new RulesRepositoryException( e );
- }
- }
-
/**
* @return the date the rule becomes effective
* @throws RulesRepositoryException
@@ -218,34 +195,21 @@
}
}
- /**
- * The URI represents a location for
- */
- public void updateContentURI(String newURI) throws RulesRepositoryException {
- checkout();
- try {
- this.node.setProperty( CONTENT_URI_PROPERTY_NAME,
- newURI );
- } catch ( RepositoryException e ) {
- log.error( "Caught Exception",
- e );
- throw new RulesRepositoryException( e );
- }
- }
/**
* This updates a user defined property (not one of the intrinsic ones).
*/
- public void updateUserProperty(String propertyName, String value) {
- if (propertyName.startsWith( "drools:" )) {
- throw new IllegalArgumentException("Can only set the pre defined fields using the appropriate methods.");
+ public void updateUserProperty(String propertyName,
+ String value) {
+ if ( propertyName.startsWith( "drools:" ) ) {
+ throw new IllegalArgumentException( "Can only set the pre defined fields using the appropriate methods." );
}
- updateStringProperty( value, propertyName );
-
+ updateStringProperty( value,
+ propertyName );
+
}
-
-
+
/**
* Nicely formats the information contained by the node that this object encapsulates
*/
@@ -254,7 +218,6 @@
StringBuffer returnString = new StringBuffer();
returnString.append( "Content of rule item named '" + this.getName() + "':\n" );
returnString.append( "Content: " + this.getContent() + "\n" );
- returnString.append( "Content URI: " + this.getContentURI() + "\n" );
returnString.append( "------\n" );
returnString.append( "Date Effective: " + this.getDateEffective() + "\n" );
@@ -327,10 +290,9 @@
* @return A property value (for a user defined property).
*/
public String getUserProperty(String property) {
- return getStringProperty( property );
+ return getStringProperty( property );
}
-
-
+
/**
* This will remove the item.
* The repository will need to be saved for this to take effect.
@@ -339,18 +301,18 @@
*/
public void remove() {
checkIsUpdateable();
- if (this.getDateExpired() != null) {
- if (Calendar.getInstance().before( this.getDateExpired())) {
- throw new RulesRepositoryException("Can't delete an item before its expiry date.");
+ if ( this.getDateExpired() != null ) {
+ if ( Calendar.getInstance().before( this.getDateExpired() ) ) {
+ throw new RulesRepositoryException( "Can't delete an item before its expiry date." );
}
}
try {
this.node.remove();
} catch ( RepositoryException e ) {
- throw new RulesRepositoryException(e);
- }
+ throw new RulesRepositoryException( e );
+ }
}
-
+
}
\ No newline at end of file
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-01-23 00:00:01 UTC (rev 8984)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/PackageItem.java 2007-01-23 00:18:36 UTC (rev 8985)
@@ -43,19 +43,8 @@
* The dublin core format attribute.
*/
public static final String PACKAGE_FORMAT = "package";
- /**
- * The name of the reference property on the rulepackage_node_type type node that objects of
- * this type hold a reference to
- */
- public static final String RULE_REFERENCE_PROPERTY_NAME = "drools:ruleReference";
/**
- * The name of the reference property on the rulepackage_node_type type node that objects of
- * this type hold a reference to
- */
- public static final String FUNCTION_REFERENCE_PROPERTY_NAME = "drools:functionReference";
-
- /**
* The name of the rule package node type
*/
public static final String RULE_PACKAGE_TYPE_NAME = "drools:rulepackageNodeType";
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 2007-01-23 00:00:01 UTC (rev 8984)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RepositoryConfigurator.java 2007-01-23 00:18:36 UTC (rev 8985)
@@ -114,9 +114,7 @@
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/rule_node_type.cnd", ws);
- this.registerNodeTypesFromCndFile("/node_type_definitions/function_node_type.cnd", ws);
this.registerNodeTypesFromCndFile("/node_type_definitions/rulepackage_node_type.cnd", ws);
}
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 2007-01-23 00:00:01 UTC (rev 8984)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RulesRepository.java 2007-01-23 00:18:36 UTC (rev 8985)
@@ -23,6 +23,7 @@
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 org.apache.log4j.Logger;
@@ -444,7 +445,18 @@
}
}
+ public void restoreHistoricalAsset(String uuid) {
+ AssetItem item = loadAssetByUUID( uuid );
+ Version v = (Version) item.getNode();
+ try {
+ this.session.getWorkspace().restore( new Version[] {v}, false );
+ } catch ( RepositoryException e ) {
+ log.error( "Unable to restore version of asset.", e );
+ throw new RulesRepositoryException(e);
+ }
+ }
+
/**
* Loads a rule by its UUID (generally the fastest way to load something).
*/
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 2007-01-23 00:00:01 UTC (rev 8984)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/VersionableItem.java 2007-01-23 00:18:36 UTC (rev 8985)
@@ -77,6 +77,8 @@
/**
* @return A unique identifier for this items content node.
+ * This UUID is constant even with new versions, it represents the asset, and
+ * ALL its historical versions.
*/
public String getUUID() {
try {
@@ -722,4 +724,24 @@
}
}
+ /**
+ * This returns the id of the exact version node (as opposed to the "main" node).
+ * Note that each asset has only one UUID the whole time, but there are also UUIDs
+ * for each item in the history.
+ * So while the main UUID version remains constant, the version UUIDs change on each
+ * checkin, which is what this method provides.
+ */
+ public String getVersionSnapshotUUID() {
+ try {
+ if ( isHistoricalVersion() ) {
+ return this.node.getUUID();
+ } else {
+ throw new RulesRepositoryException( "This is the current version of the asset." );
+ }
+ } catch ( RepositoryException e ) {
+ throw new RulesRepositoryException(e);
+ }
+
+ }
+
}
Deleted: labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/dsl_node_type.cnd
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/dsl_node_type.cnd 2007-01-23 00:00:01 UTC (rev 8984)
+++ labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/dsl_node_type.cnd 2007-01-23 00:18:36 UTC (rev 8985)
@@ -1,17 +0,0 @@
-/* The node type definition for the dsl node type.
- See http://jackrabbit.apache.org/doc/nodetype/cnd.html for an explanation
-*/
-
-// The namespace declaration
-<drools = 'http://www.jboss.org/drools-repository/1.0'>
-<nt='http://www.jcp.org/jcr/nt/1.0'>
-<mix='http://www.jcp.org/jcr/mix/1.0'>
-
-// Node type name
-[drools:dslNodeType]
-
-// Supertypes
-> 'drools:versionableNodeType'
-
-// Properties
-- drools:dslContent (string)
Deleted: 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 2007-01-23 00:00:01 UTC (rev 8984)
+++ labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/function_node_type.cnd 2007-01-23 00:18:36 UTC (rev 8985)
@@ -1,23 +0,0 @@
-/* The node type definition for the function node type.
- See http://jackrabbit.apache.org/doc/nodetype/cnd.html for an explanation
-*/
-
-// The namespace declaration
-<drools = 'http://www.jboss.org/drools-repository/1.0'>
-<nt='http://www.jcp.org/jcr/nt/1.0'>
-<mix='http://www.jcp.org/jcr/mix/1.0'>
-
-// Node type name
-[drools:functionNodeType]
-
-// Supertypes
-> 'drools:versionableNodeType'
-
-// Properties:
-- drools:content (string)
- mandatory
-
-- drools:functionLanguage (string)
- = 'Java'
- mandatory autocreated
-
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 2007-01-23 00:00:01 UTC (rev 8984)
+++ labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/rule_node_type.cnd 2007-01-23 00:18:36 UTC (rev 8985)
@@ -17,7 +17,6 @@
// Properties:
- drools:content (string)
-- drools:contentURI (string)
// use this to capture fields which are not known ahead of time
@@ -27,12 +26,11 @@
- drools:dateExpired (date)
+
+
- drools:packageName (string)
mandatory
-- drools:dslReference (reference)
- copy
- < 'drools:dslNodeType','nt:version'
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 2007-01-23 00:00:01 UTC (rev 8984)
+++ labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/rulepackage_node_type.cnd 2007-01-23 00:18:36 UTC (rev 8985)
@@ -28,8 +28,3 @@
< 'drools:ruleNodeType','nt:version'
*/
-//this will need to be removed eventually, best done like rules
-- drools:functionReference (reference)
- multiple
- copy
- < 'drools:functionNodeType','nt:version'
\ No newline at end of file
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-01-23 00:00:01 UTC (rev 8984)
+++ labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/AssetItemTest.java 2007-01-23 00:18:36 UTC (rev 8985)
@@ -67,15 +67,6 @@
assertEquals("test content", ruleItem1.getContent());
}
- public void testGetURI() {
- AssetItem ruleItem1 = getDefaultPackage().addAsset("testGetURI", "blah");
- ruleItem1.checkin( "version0" );
- ruleItem1.updateContentURI( "foo/bar" );
- ruleItem1.checkin( "ha !" );
- assertNotNull(ruleItem1);
- assertNotNull(ruleItem1.getNode());
- assertEquals("foo/bar", ruleItem1.getContentURI());
- }
public void testUpdateContent() {
AssetItem ruleItem1 = getDefaultPackage().addAsset("testUpdateContent", "test description");
@@ -362,8 +353,7 @@
}
- public void testGetPrecedingVersion() {
-
+ public void testGetPrecedingVersionAndRestore() throws Exception {
getRepo().loadCategory( "/" ).addCategory( "foo", "ka" );
AssetItem ruleItem1 = getRepo().loadDefaultPackage().addAsset("testGetPrecedingVersion", "descr");
ruleItem1.checkin( "version0" );
@@ -376,8 +366,15 @@
AssetItem predecessorRuleItem = (AssetItem) ruleItem1.getPrecedingVersion();
assertNotNull(predecessorRuleItem);
+ //check version handling
+ assertNotNull(predecessorRuleItem.getVersionSnapshotUUID());
+ assertFalse(predecessorRuleItem.getVersionSnapshotUUID().equals( ruleItem1.getUUID() ));
+
+ AssetItem loadedHistorical = getRepo().loadAssetByUUID( predecessorRuleItem.getVersionSnapshotUUID() );
+ assertTrue(loadedHistorical.isHistoricalVersion());
+ assertFalse(ruleItem1.getVersionNumber().equals(loadedHistorical.getVersionNumber()));
+
ruleItem1.updateContent("new content");
- ruleItem1.updateContentURI( "foobar" );
ruleItem1.checkin( "two changes" );
predecessorRuleItem = (AssetItem) ruleItem1.getPrecedingVersion();
@@ -400,6 +397,15 @@
assertNotNull(predecessorRuleItem);
assertEquals("test content", predecessorRuleItem.getContent());
+ //now try restoring
+ String oldVersionUUID = predecessorRuleItem.getVersionSnapshotUUID();
+
+ getRepo().restoreHistoricalAsset( oldVersionUUID );
+
+ AssetItem restored = getRepo().loadDefaultPackage().loadAsset( "testGetPrecedingVersion" );
+
+ assertEquals( predecessorRuleItem.getCheckinComment(), restored.getCheckinComment());
+
}
public void testGetSucceedingVersion() {
More information about the jboss-svn-commits
mailing list