[jboss-svn-commits] JBL Code SVN: r20390 - in labs/jbossrules/trunk/drools-repository/src: main/java/org/drools/repository/migration and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Jun 9 21:53:48 EDT 2008


Author: michael.neale at jboss.com
Date: 2008-06-09 21:53:48 -0400 (Mon, 09 Jun 2008)
New Revision: 20390

Added:
   labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/migration/
   labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/migration/MigrateDroolsPackage.java
   labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/migration/
   labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/migration/MigrateDroolsPackageTest.java
Log:
Migrated package configuration from text field on package node to a drools.package file (as it is drools specific)

Added: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/migration/MigrateDroolsPackage.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/migration/MigrateDroolsPackage.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/migration/MigrateDroolsPackage.java	2008-06-10 01:53:48 UTC (rev 20390)
@@ -0,0 +1,58 @@
+package org.drools.repository.migration;
+
+import javax.jcr.RepositoryException;
+
+import org.drools.repository.AssetItem;
+import org.drools.repository.PackageItem;
+import org.drools.repository.PackageIterator;
+import org.drools.repository.RulesRepository;
+
+/**
+ * This is a one time class which will be used to migrate package header info for drools.
+ * Only needed for drools version 4 repositories.
+ * @author Michael Neale
+ */
+public class MigrateDroolsPackage {
+
+	public boolean needsMigration(RulesRepository repo) throws RepositoryException {
+		return !repo.getSession().getRootNode().hasNode("drools.package.migrated");
+	}
+
+	public void migrate(RulesRepository repo) throws RepositoryException {
+		System.out.println("AUTO MIGRATION: Performing drools.package migration...");
+    	PackageIterator pkgs = repo.listPackages();
+    	boolean performed = false;
+    	while(pkgs.hasNext()) {
+    		performed = true;
+    		PackageItem pkg = (PackageItem) pkgs.next();
+    		migratePackage(pkg);
+
+    		String[] snaps = repo.listPackageSnapshots(pkg.getName());
+    		if (snaps != null) {
+	    		for (int i = 0; i < snaps.length; i++) {
+	    			PackageItem snap = repo.loadPackageSnapshot(pkg.getName(), snaps[i]);
+	    			migratePackage(snap);
+				}
+    		}
+    	}
+
+
+
+    	if (performed) {
+	    	repo.getSession().getRootNode().addNode("drools.package.migrated");
+	    	repo.save();
+	    	System.out.println("AUTO MIGRATION: drools.package migration completed.");
+    	}
+	}
+
+	private void migratePackage(PackageItem pkg) {
+		if (!pkg.containsAsset("drools")) {
+			AssetItem asset = pkg.addAsset("drools", "");
+			asset.updateFormat("package");
+			asset.updateContent(pkg.getStringProperty(pkg.HEADER_PROPERTY_NAME));
+			asset.checkin("");
+		}
+	}
+
+
+}


Property changes on: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/migration/MigrateDroolsPackage.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/migration/MigrateDroolsPackageTest.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/migration/MigrateDroolsPackageTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/migration/MigrateDroolsPackageTest.java	2008-06-10 01:53:48 UTC (rev 20390)
@@ -0,0 +1,56 @@
+package org.drools.repository.migration;
+
+import javax.jcr.Session;
+
+import org.drools.repository.AssetItem;
+import org.drools.repository.PackageItem;
+import org.drools.repository.RepositorySessionUtil;
+import org.drools.repository.RulesRepository;
+
+import junit.framework.TestCase;
+
+public class MigrateDroolsPackageTest extends TestCase {
+
+	public void testMigrate() throws Exception {
+		RulesRepository repo = RepositorySessionUtil.getRepository();
+		Session sess = repo.getSession();
+		sess.getRootNode().getNode("drools.package.migrated").remove();
+		sess.save();
+
+		MigrateDroolsPackage mig = new MigrateDroolsPackage();
+
+		PackageItem pkg = repo.createPackage("testMigratePackage", "");
+		pkg.updateStringProperty("some header", pkg.HEADER_PROPERTY_NAME);
+		sess.save();
+
+		repo.createPackageSnapshot("testMigratePackage", "SNAP1");
+		repo.createPackageSnapshot("testMigratePackage", "SNAP2");
+
+
+
+		assertTrue(mig.needsMigration(repo));
+		mig.migrate(repo);
+		assertFalse(repo.getSession().hasPendingChanges());
+		assertFalse(mig.needsMigration(repo));
+		pkg = repo.loadPackage("testMigratePackage");
+		assertTrue(pkg.containsAsset("drools"));
+		AssetItem as = pkg.loadAsset("drools");
+		assertEquals("some header", as.getContent());
+
+
+		pkg = repo.loadPackageSnapshot("testMigratePackage", "SNAP1");
+		assertTrue(pkg.containsAsset("drools"));
+		as = pkg.loadAsset("drools");
+		assertEquals("some header", as.getContent());
+
+		pkg = repo.loadPackageSnapshot("testMigratePackage", "SNAP2");
+		assertTrue(pkg.containsAsset("drools"));
+		as = pkg.loadAsset("drools");
+		assertEquals("some header", as.getContent());
+
+
+
+
+	}
+
+}


Property changes on: labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/migration/MigrateDroolsPackageTest.java
___________________________________________________________________
Name: svn:eol-style
   + native




More information about the jboss-svn-commits mailing list