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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Feb 12 22:06:17 EST 2007


Author: michael.neale at jboss.com
Date: 2007-02-12 22:06:17 -0500 (Mon, 12 Feb 2007)
New Revision: 9463

Modified:
   labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/scm/jcr/JcrActionFactory.java
   labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/scm/jcr/JcrActionFactoryTest.java
Log:
JBRULES-670 - JCR is now updating files

Modified: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/scm/jcr/JcrActionFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/scm/jcr/JcrActionFactory.java	2007-02-13 00:36:11 UTC (rev 9462)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/scm/jcr/JcrActionFactory.java	2007-02-13 03:06:17 UTC (rev 9463)
@@ -6,6 +6,8 @@
 import java.util.List;
 import java.util.StringTokenizer;
 
+import org.drools.repository.AssetItem;
+import org.drools.repository.PackageItem;
 import org.drools.repository.RulesRepository;
 import org.drools.scm.ScmAction;
 import org.drools.scm.ScmActionFactory;
@@ -22,6 +24,10 @@
 
     private RulesRepository repository;
 
+    public JcrActionFactory(RulesRepository repo) {
+        this.repository = repo;
+    }
+    
     public ScmAction addDirectory(String root,
                                   String path) {
         return null;
@@ -30,7 +36,7 @@
     public ScmAction addFile(String path,
                              String file,
                              byte[] content) {
-        return null;
+        return new AddFile(path, file, content);
     }
 
     public ScmAction copyDirectory(String path,
@@ -58,6 +64,8 @@
 
     public void execute(ScmAction action,
                         String message) throws Exception {
+        
+        action.applyAction( new RepositoryContext(repository, message));
     }
 
     public void getContent(String path,
@@ -96,7 +104,7 @@
                                 String file,
                                 byte[] oldContent,
                                 byte[] newContent) {
-        return null;
+        return new UpdateFile(path, file, oldContent, newContent);
     }
 
     public void syncToScmLog(List list,
@@ -225,11 +233,39 @@
         }
 
         public void applyAction(Object context) throws Exception {
+            RepositoryContext ctx = (RepositoryContext) context;
+            
+            
+            PackageItem pkg = ctx.repository.loadPackage( toPackageName(path) );
+            
+            StringTokenizer tk = new StringTokenizer(file, ".");
+            
+            String name = tk.nextToken();
+            String format = tk.nextToken();
+            
+            AssetItem asset = pkg.addAsset( name, ctx.message );
+            asset.updateFormat( format );
+            asset.updateContent( new String(content) );
+            ctx.repository.save();
+            
+        }
+    }
 
+    /**
+     * This is used for passing in a context to perform the actions.
+     */
+    public static class RepositoryContext {
+        
+        public RepositoryContext(RulesRepository repository2, String message2) {
+            this.repository = repository2;
+            this.message = message2;
         }
+        
+        public RulesRepository repository;
+        public String message;
     }
-
-    private String convertPath(String path, String token, String replace) {
+    
+    private static String convertPath(String path, String token, String replace) {
         if (path.indexOf( token ) == -1) return path;
         StringTokenizer tk = new StringTokenizer(path, token);
         StringBuffer buf = new StringBuffer();
@@ -241,13 +277,14 @@
         return buf.toString();
     }
     
-    public String toDirectoryName(String packageName) {
+    static String toDirectoryName(String packageName) {
         return convertPath( packageName, ".", "/" );
     }
     
-    public String toPackageName(String directory) {
+    static String toPackageName(String directory) {
         return convertPath( directory, "/", "." );
     }
+    
 
     /**
      * root should be the last, previously created, parent folder. Each directory in the path
@@ -290,7 +327,12 @@
         }
 
         public void applyAction(Object context) throws Exception {
-
+            RepositoryContext ctx = (RepositoryContext) context;
+            PackageItem pkg = ctx.repository.loadPackage( toPackageName( path ) );
+            String name = file.substring( 0, file.indexOf( '.' ) );
+            AssetItem asset = pkg.loadAsset( name );
+            asset.updateContent( new String(newContent) );
+            asset.checkin( ctx.message );
         }
     }
 

Modified: labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/scm/jcr/JcrActionFactoryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/scm/jcr/JcrActionFactoryTest.java	2007-02-13 00:36:11 UTC (rev 9462)
+++ labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/scm/jcr/JcrActionFactoryTest.java	2007-02-13 03:06:17 UTC (rev 9463)
@@ -1,11 +1,18 @@
 package org.drools.scm.jcr;
 
+import org.drools.repository.AssetItem;
+import org.drools.repository.PackageItem;
+import org.drools.repository.RepositorySessionUtil;
+import org.drools.repository.RulesRepository;
+import org.drools.scm.ScmAction;
+import org.drools.scm.jcr.JcrActionFactory.AddFile;
+
 import junit.framework.TestCase;
 
 public class JcrActionFactoryTest extends TestCase {
 
     public void testMapPathNameToPackage() {
-        JcrActionFactory fact = new JcrActionFactory();
+        JcrActionFactory fact = new JcrActionFactory(null);
         assertEquals("org.foo.bar", fact.toPackageName("org/foo/bar"));
         assertEquals("foo", fact.toPackageName("foo"));
         assertEquals("FooBar", fact.toPackageName("FooBar"));
@@ -15,6 +22,48 @@
         assertEquals("foo", fact.toDirectoryName("foo"));
     }
     
+    public void testAddFiles() throws Exception {
+        RulesRepository repo = RepositorySessionUtil.getRepository();
+        
+        repo.createPackage( "testAddFiles.package", "just for testing" );
+        
+        JcrActionFactory fact = new JcrActionFactory(repo);
+        
+        byte[] data = "this is content".getBytes();
+        ScmAction action = fact.addFile( "testAddFiles/package", "someFile.drl", data );
+        
+        fact.execute( action, "some message" );
+        
+        PackageItem pk = repo.loadPackage( "testAddFiles.package" );
+        AssetItem asset = pk.loadAsset( "someFile" );
+        
+        assertEquals("drl", asset.getFormat());
+        assertEquals("this is content", asset.getContent());
+        assertEquals("some message", asset.getDescription());
+        assertEquals("Draft", asset.getStateDescription());
+    }
     
+    public void testUpdateFiles() throws Exception {
+        RulesRepository repo = RepositorySessionUtil.getRepository();
+        PackageItem pkg = repo.loadDefaultPackage();
+        AssetItem asset = pkg.addAsset( "testUpdateFilesSVN", "something" );
+        
+        asset.updateContent( "lala" );
+        asset.checkin( "yeah" );
+        String oldVersion = asset.getVersionNumber();
+        
+        JcrActionFactory fact = new JcrActionFactory(repo);
+        ScmAction action = fact.updateFile( "default", "testUpdateFilesSVN.drl", "lala".getBytes(), "lala2".getBytes() );
+
+        fact.execute( action, "goo" );
+        
+        AssetItem asset2 = pkg.loadAsset( "testUpdateFilesSVN" );
+        assertFalse(oldVersion.equals( asset2.getVersionNumber() ));
+        assertEquals("lala2", asset2.getContent());
+        assertEquals("goo", asset2.getCheckinComment());
+        
+    }
     
+    
+    
 }




More information about the jboss-svn-commits mailing list