[jboss-svn-commits] JBL Code SVN: r36868 - in labs/jbossrules/soa_branches/BRMS-5.1.x/drools-ant/src: test/resources and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Mar 28 12:15:03 EDT 2011


Author: tsurdilovic
Date: 2011-03-28 12:15:02 -0400 (Mon, 28 Mar 2011)
New Revision: 36868

Added:
   labs/jbossrules/soa_branches/BRMS-5.1.x/drools-ant/src/main/java/org/drools/contrib/JackrabbitMigrationAntTask
   labs/jbossrules/soa_branches/BRMS-5.1.x/drools-ant/src/test/resources/JackrabbitMigrationAntTask.xml
Log:
BRMS-575 : Jackrabbit repository migration ant task

Added: labs/jbossrules/soa_branches/BRMS-5.1.x/drools-ant/src/main/java/org/drools/contrib/JackrabbitMigrationAntTask
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.1.x/drools-ant/src/main/java/org/drools/contrib/JackrabbitMigrationAntTask	                        (rev 0)
+++ labs/jbossrules/soa_branches/BRMS-5.1.x/drools-ant/src/main/java/org/drools/contrib/JackrabbitMigrationAntTask	2011-03-28 16:15:02 UTC (rev 36868)
@@ -0,0 +1,137 @@
+package org.drools.contrib;
+
+import java.io.File;
+import java.io.IOException;
+
+import javax.jcr.RepositoryException;
+
+import org.apache.jackrabbit.core.RepositoryCopier;
+import org.apache.jackrabbit.core.config.RepositoryConfig;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.taskdefs.MatchingTask;
+
+/**
+ * Ant task to help backup and migrate jackrabbit repo.
+ */
+public class JackrabbitMigrationAntTask extends MatchingTask {
+    private String verbose;
+    private boolean verboseVal;
+    private String sourcedir;
+    private String sourceconfig;
+    private String targetdir;
+    private String targetconfig;
+    
+    /**
+     * Task's main method
+     */
+    public void execute() throws BuildException {
+        super.execute();
+        verboseVal = verbose != null && verbose.equalsIgnoreCase("true");
+        
+        String inputErrors = checkInput();
+        if( inputErrors.length() >  0) {
+            throw new BuildException(inputErrors);
+        }
+        
+        try {
+            if (verboseVal) {
+                log("Installing source repository.");
+            }
+            RepositoryConfig sourceRepo = RepositoryConfig.install(
+                    new File(sourceconfig), new File(sourcedir));
+            if (verboseVal) {
+                log("Installing target repository.");
+            }
+            RepositoryConfig targetRepo = RepositoryConfig.install(
+                        new File(targetconfig), new File(targetdir));
+                if (verboseVal) {
+                    log("Migrating source repository to target repository.");
+                }
+                RepositoryCopier.copy(sourceRepo, targetRepo);
+        } catch (Exception e) {
+            log(e.getMessage());
+            throw new BuildException(e.getMessage());
+        }
+    }
+    
+    public void setVerbose(String verbose) {
+        this.verbose = verbose;
+    }
+
+    private String checkInput() {
+        if(verboseVal) {
+            log("Validating task input parameters.");
+        }
+        String errors = "";
+        
+        if(isEmpty(sourcedir)) {
+            errors += "\nInvalid source repository directory.";
+        } else {
+            File sourceDirFile = new File(sourcedir);
+            if(!sourceDirFile.canRead()) {
+                errors += "\nInvalid source repository directory.";
+            }
+        }
+        
+        if(isEmpty(sourceconfig)) {
+            errors += "\nInvalid source source configuration.";
+        } else {
+            File sourceConfFile = new File(sourceconfig);
+            if(!sourceConfFile.canRead()) {
+                errors += "\nInvalid source repository configuration file.";
+            }
+        }
+        
+        if(isEmpty(targetconfig)) {
+            errors += "\nInvalid target repository configuration.";
+        } else {
+            File targetConfFile = new File(targetconfig);
+            if(!targetConfFile.canRead()) {
+                errors += "\nInvalid target repository configuration file.";
+            }
+        }
+        
+        if(isEmpty(targetdir)) {
+            errors += "\nInvalid target directory configuration.";
+        } else {
+            File targetDirFile = new File(targetdir);
+            if(!targetDirFile.canRead()) {
+                errors += "\nInvalid target repository directory.";
+            }
+        }
+        
+        return errors;
+    }
+    
+    public static boolean isEmpty(final CharSequence str) {
+        if ( str == null || str.length() == 0 ) {
+            return true;
+        }
+        
+        for ( int i = 0, length = str.length(); i < length; i++ ){
+            if ( str.charAt( i ) != ' ' )  {
+                return false;
+            }
+        }
+        
+        return true;
+    }
+
+    public void setSourcedir(String sourcedir) {
+        this.sourcedir = sourcedir;
+    }
+    
+    public void setSourceconfig(String sourceconfig) {
+        this.sourceconfig = sourceconfig;
+    }
+
+    public void setTargetdir(String targetdir) {
+        this.targetdir = targetdir;
+    }
+
+    public void setTargetconfig(String targetconfig) {
+        this.targetconfig = targetconfig;
+    }
+
+}
+

Added: labs/jbossrules/soa_branches/BRMS-5.1.x/drools-ant/src/test/resources/JackrabbitMigrationAntTask.xml
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.1.x/drools-ant/src/test/resources/JackrabbitMigrationAntTask.xml	                        (rev 0)
+++ labs/jbossrules/soa_branches/BRMS-5.1.x/drools-ant/src/test/resources/JackrabbitMigrationAntTask.xml	2011-03-28 16:15:02 UTC (rev 36868)
@@ -0,0 +1,30 @@
+<project default="migraterepo">
+  <path id="migration.classpath">
+    <pathelement path="${classpath}" />
+    <fileset dir="/Users/tihomir/development/droolsjbpm/workspace/guvnor/guvnor-webapp/target/guvnor-webapp/WEB-INF/lib/">
+        <include name="**/*.jar"/>
+     </fileset>
+    <filelist refid="drools-ant" />
+    <filelist refid="db-driver-jars" />
+  </path>
+
+  <filelist id="db-driver-jars" dir="lib">
+    <file name="mysql-connector-java-5.1.11-bin.jar" />
+  </filelist>
+
+  <filelist id="drools-ant" dir="lib">
+    <file name="drools-ant-5.2.0-SNAPSHOT.jar" />
+  </filelist>
+
+  <taskdef name="migrate" classname="org.drools.contrib.JackrabbitMigrationAntTask"
+    classpathref="migration.classpath" />
+
+  <target name="migraterepo">
+    <record name="migration-log.txt"/>
+    <migrate verbose="true"
+        sourcedir="/Users/tihomir/development/droolsjbpm/jboss-4.2.3.GA/bin/repository/"
+        sourceconfig="/Users/tihomir/development/droolsjbpm/jboss-4.2.3.GA/bin/repository.xml"
+        targetdir="/Users/tihomir/demo-jrmigration/targetrepo/"
+        targetconfig="/Users/tihomir/demo-jrmigration/targetrepo/repository.xml" />
+  </target>
+</project>



More information about the jboss-svn-commits mailing list