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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Apr 20 15:50:52 EDT 2007


Author: fmeyer
Date: 2007-04-20 15:50:52 -0400 (Fri, 20 Apr 2007)
New Revision: 11170

Modified:
   labs/jbossrules/trunk/drools-repository/
   labs/jbossrules/trunk/drools-repository/.classpath
   labs/jbossrules/trunk/drools-repository/pom.xml
   labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RulesRepository.java
   labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RulesRepositoryTest.java
Log:
JBRULES-571 Export-Import from XML drools-repository backend



Property changes on: labs/jbossrules/trunk/drools-repository
___________________________________________________________________
Name: svn:ignore
   + .settings
target


Modified: labs/jbossrules/trunk/drools-repository/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-repository/.classpath	2007-04-20 19:47:01 UTC (rev 11169)
+++ labs/jbossrules/trunk/drools-repository/.classpath	2007-04-20 19:50:52 UTC (rev 11170)
@@ -5,17 +5,17 @@
   <classpathentry kind="src" path="src/test/resources" output="target/test-classes"/>
   <classpathentry kind="output" path="target/classes"/>
   <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-  <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-log4j12/1.0/slf4j-log4j12-1.0.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/tmatesoft/javasvn/1.1-beta5/javasvn-1.1-beta5.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/apache/derby/derby/10.2.1.6/derby-10.2.1.6.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/apache/jackrabbit/jackrabbit-api/1.2.2/jackrabbit-api-1.2.2.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/apache/jackrabbit/jackrabbit-jcr-commons/1.2.2/jackrabbit-jcr-commons-1.2.2.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/apache/jackrabbit/jackrabbit-api/1.2.2/jackrabbit-api-1.2.2.jar" sourcepath="M2_REPO/org/apache/jackrabbit/jackrabbit-api/1.2.2/jackrabbit-api-1.2.2-sources.jar"/>
   <classpathentry kind="var" path="M2_REPO/org/apache/geronimo/specs/geronimo-jta_1.0.1B_spec/1.0.1/geronimo-jta_1.0.1B_spec-1.0.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/apache/jackrabbit/jackrabbit-jcr-commons/1.2.2/jackrabbit-jcr-commons-1.2.2.jar" sourcepath="M2_REPO/org/apache/jackrabbit/jackrabbit-jcr-commons/1.2.2/jackrabbit-jcr-commons-1.2.2-sources.jar"/>
+  <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar" sourcepath="M2_REPO/junit/junit/3.8.1/junit-3.8.1-sources.jar"/>
+  <classpathentry kind="var" path="M2_REPO/commons-collections/commons-collections/3.1/commons-collections-3.1.jar" sourcepath="M2_REPO/commons-collections/commons-collections/3.1/commons-collections-3.1-sources.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/apache/jackrabbit/jackrabbit-core/1.2.2/jackrabbit-core-1.2.2.jar" sourcepath="M2_REPO/org/apache/jackrabbit/jackrabbit-core/1.2.2/jackrabbit-core-1.2.2-sources.jar"/>
+  <classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.8/log4j-1.2.8.jar" sourcepath="M2_REPO/log4j/log4j/1.2.8/log4j-1.2.8-sources.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-log4j12/1.0/slf4j-log4j12-1.0.jar" sourcepath="M2_REPO/org/slf4j/slf4j-log4j12/1.0/slf4j-log4j12-1.0-sources.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/apache/lucene/lucene-core/2.0.0/lucene-core-2.0.0.jar"/>
   <classpathentry kind="var" path="M2_REPO/javax/jcr/jcr/1.0/jcr-1.0.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/apache/jackrabbit/jackrabbit-core/1.2.2/jackrabbit-core-1.2.2.jar"/>
-  <classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.8/log4j-1.2.8.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/apache/lucene/lucene-core/2.0.0/lucene-core-2.0.0.jar"/>
-  <classpathentry kind="var" path="M2_REPO/concurrent/concurrent/1.3.4/concurrent-1.3.4.jar"/>
-  <classpathentry kind="var" path="M2_REPO/commons-collections/commons-collections/3.1/commons-collections-3.1.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/apache/derby/derby/10.2.1.6/derby-10.2.1.6.jar"/>
+  <classpathentry kind="var" path="M2_REPO/concurrent/concurrent/1.3.4/concurrent-1.3.4.jar" sourcepath="M2_REPO/concurrent/concurrent/1.3.4/concurrent-1.3.4-sources.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/tmatesoft/javasvn/1.1-beta5/javasvn-1.1-beta5.jar"/>
 </classpath>
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-repository/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-repository/pom.xml	2007-04-20 19:47:01 UTC (rev 11169)
+++ labs/jbossrules/trunk/drools-repository/pom.xml	2007-04-20 19:50:52 UTC (rev 11170)
@@ -24,7 +24,7 @@
 	            <directory>./</directory>
 	            <includes>
 	              <include>repository**/*</include>
-				  <include>repository.xml</include>
+				  <include>repository*.xml</include>
 				  <include>repository</include>				
 	            </includes>
 	            <followSymlinks>false</followSymlinks>

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-04-20 19:47:01 UTC (rev 11169)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RulesRepository.java	2007-04-20 19:50:52 UTC (rev 11170)
@@ -1,13 +1,25 @@
 package org.drools.repository;
  
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Calendar;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Random;
 import java.util.StringTokenizer;
 
+import javax.jcr.ImportUUIDBehavior;
+import javax.jcr.InvalidSerializedDataException;
 import javax.jcr.ItemExistsException;
 import javax.jcr.Node;
 import javax.jcr.NodeIterator;
@@ -17,9 +29,12 @@
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 import javax.jcr.Value;
+import javax.jcr.lock.LockException;
+import javax.jcr.nodetype.ConstraintViolationException;
 import javax.jcr.query.Query;
 import javax.jcr.query.QueryResult;
 import javax.jcr.version.Version;
+import javax.jcr.version.VersionException;
 
 import org.apache.log4j.Logger;
 
@@ -59,6 +74,7 @@
  * scheme to be better aligned with JCR's versioning abilities.
  * 
  * @author Ben Truitt
+ * @author Fernando Meyer
  */
 public class RulesRepository {
 
@@ -810,6 +826,23 @@
         return this.findAssetsByCategory( categoryTag,
                                           false );
     }
+    
+    public byte[] exportRulesRepository() throws IOException, PathNotFoundException, RepositoryException {
+        ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
+        session.exportSystemView( "/drools:repository", byteOut , false, false );
+        return byteOut.toByteArray();
+    }
+    
+    public void importRulesRepository(byte[] byteArray) {
+        try {
+            session.importXML( "/drools:repository", new ByteArrayInputStream(byteArray), ImportUUIDBehavior.IMPORT_UUID_COLLISION_REPLACE_EXISTING);
+            session.save();
+        } catch ( RepositoryException e ) {
+            throw new RulesRepositoryException();
+        } catch ( IOException e ) {
+            e.printStackTrace();
+        }
+    }
 
     boolean isNotSnapshot(Node parentNode) throws RepositoryException {
         return parentNode.getPath().indexOf( PACKAGE_SNAPSHOT_AREA ) == -1;

Modified: labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RulesRepositoryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RulesRepositoryTest.java	2007-04-20 19:47:01 UTC (rev 11169)
+++ labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RulesRepositoryTest.java	2007-04-20 19:50:52 UTC (rev 11170)
@@ -11,7 +11,6 @@
 import junit.framework.TestCase;
 
 public class RulesRepositoryTest extends TestCase {
-
     
     public void testDefaultPackage() throws Exception {
         RulesRepository repo = RepositorySessionUtil.getRepository();
@@ -335,6 +334,23 @@
         assertEquals(items.length + 1, items2.length);
     }
     
+    public void testImportExport() {
+        RulesRepository repo = RepositorySessionUtil.getRepository();
+        byte []byteArray;
+        
+        try {
+            repo.createPackage( "testImportExport", "nodescription" );
+            byteArray = repo.exportRulesRepository(); 
+            assertTrue( byteArray.length >= 2048 ); // empty repository must have a minimum of 2048 bytes.
+            repo.importRulesRepository( byteArray );
+            assertTrue( repo.containsPackage( "testImportExport" ) ); 
+            
+        } catch ( Exception e ) {
+            e.printStackTrace();
+        }
+    }
+    
+    
     List iteratorToList(Iterator it) {
         List list = new ArrayList();
         while(it.hasNext()) {




More information about the jboss-svn-commits mailing list