[jboss-svn-commits] JBL Code SVN: r9801 - in labs/jbossrules/trunk/drools-repository/src: test/java/org/drools/repository and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Feb 27 01:27:19 EST 2007


Author: michael.neale at jboss.com
Date: 2007-02-27 01:27:19 -0500 (Tue, 27 Feb 2007)
New Revision: 9801

Modified:
   labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RulesRepository.java
   labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/PackageItemTest.java
Log:
JBRULES-644 Nearly done, a few simple actions to go

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-02-27 02:44:57 UTC (rev 9800)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RulesRepository.java	2007-02-27 06:27:19 UTC (rev 9801)
@@ -477,7 +477,7 @@
             Node snaps = this.getAreaNode( PACKAGE_SNAPSHOT_AREA );
             
             if (!snaps.hasNode( packageName )) {
-                return;
+                throw new RulesRepositoryException("The package " + packageName + " does not have any snapshots.");
             }
             
             Node pkgSnaps = snaps.getNode( packageName ); 
@@ -494,6 +494,33 @@
     }
 
     /**
+     * Copies a snapshot to the new location/label.
+     * @param packageName The name of the package.
+     * @param snapshotName The label of the source snapshot 
+     * @param newName The new label. The old one is left intact.
+     */
+    public void copyPackageSnapshot(String packageName, String snapshotName, String newName) {
+        log.info( "Creating snapshot for [" + packageName + "] called [" + snapshotName + "]");
+        try {
+            Node snaps = this.getAreaNode( PACKAGE_SNAPSHOT_AREA );
+            
+
+            
+            Node pkgSnaps = snaps.getNode( packageName ); 
+
+            Node sourceNode = pkgSnaps.getNode( snapshotName );
+            
+            String destinationPath = pkgSnaps.getPath() + "/" + newName;
+            
+            
+            this.session.getWorkspace().copy( sourceNode.getPath(), destinationPath );
+        } catch (RepositoryException e) {
+            log.error( "Unable to create snapshot", e );
+            throw new RulesRepositoryException(e);
+        }        
+    }
+
+    /**
      * This will return or create the default package for rules that have no home yet.
      */
     public PackageItem loadDefaultPackage() throws RulesRepositoryException {

Modified: labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/PackageItemTest.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/PackageItemTest.java	2007-02-27 02:44:57 UTC (rev 9800)
+++ labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/PackageItemTest.java	2007-02-27 06:27:19 UTC (rev 9801)
@@ -153,6 +153,12 @@
         
         repo.removePackageSnapshot( "testPackageSnapshot", "XX" );
         //does nothing... but should not barf...
+        try {
+            repo.removePackageSnapshot( "NOTHING SENSIBLE", "XX" );
+            fail("should not be able to remove this.");
+        } catch (RulesRepositoryException e) {
+            assertNotNull(e.getMessage());
+        }
         
         repo.removePackageSnapshot( "testPackageSnapshot", "PROD 2.0" );
         repo.save();
@@ -160,6 +166,17 @@
         res = repo.listPackageSnapshots( "testPackageSnapshot" );
         assertEquals(0, res.length);
         
+        repo.createPackageSnapshot( "testPackageSnapshot", "BOO" );
+        res = repo.listPackageSnapshots( "testPackageSnapshot" );
+        assertEquals(1, res.length);
+        repo.copyPackageSnapshot( "testPackageSnapshot", "BOO", "BOO2" );
+        res = repo.listPackageSnapshots( "testPackageSnapshot" );
+        assertEquals(2, res.length);
+        
+        assertEquals("BOO", res[0]);
+        assertEquals("BOO2", res[1]);
+        
+        
     }
 
     private RulesRepository getRepo() {




More information about the jboss-svn-commits mailing list