[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