[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