[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