[jboss-svn-commits] JBL Code SVN: r20550 - in labs/jbossrules/trunk/drools-jbrms/src: test/java/org/drools/brms/server/files and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Jun 17 02:56:48 EDT 2008


Author: michael.neale at jboss.com
Date: 2008-06-17 02:56:48 -0400 (Tue, 17 Jun 2008)
New Revision: 20550

Modified:
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/files/FileManagerUtils.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/files/PackageDeploymentServlet.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/files/PackageDeploymentURIHelper.java
   labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/files/DeploymentURIHelperTest.java
   labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/files/PackageDeploymentServletTest.java
Log:
JBRULES-1648 URL to access generated DRL

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/files/FileManagerUtils.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/files/FileManagerUtils.java	2008-06-17 06:42:58 UTC (rev 20549)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/files/FileManagerUtils.java	2008-06-17 06:56:48 UTC (rev 20550)
@@ -23,14 +23,17 @@
 import org.apache.commons.fileupload.servlet.ServletFileUpload;
 import org.drools.brms.client.common.HTMLFileManagerFields;
 import org.drools.brms.server.ServiceImplementation;
+import org.drools.brms.server.builder.BRMSPackageBuilder;
 import org.drools.brms.server.builder.ContentPackageAssembler;
 import org.drools.brms.server.contenthandler.ContentHandler;
 import org.drools.brms.server.contenthandler.ContentManager;
+import org.drools.brms.server.contenthandler.IRuleAsset;
 import org.drools.brms.server.contenthandler.ModelContentHandler;
 import org.drools.brms.server.util.ClassicDRLImporter;
 import org.drools.brms.server.util.ClassicDRLImporter.Asset;
 import org.drools.brms.server.util.FormData;
 import org.drools.compiler.DroolsParserException;
+import org.drools.compiler.PackageBuilderConfiguration;
 import org.drools.repository.AssetItem;
 import org.drools.repository.PackageItem;
 import org.drools.repository.RulesRepository;
@@ -44,6 +47,8 @@
 
 import javax.jcr.RepositoryException;
 import javax.servlet.http.HttpServletRequest;
+
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
@@ -271,4 +276,35 @@
         return item.getLastModified().getTimeInMillis();
     }
 
+	public String loadSourceAsset(String packageName, String packageVersion,
+			boolean isLatest, String assetName, ByteArrayOutputStream out) throws IOException {
+        PackageItem pkg = null;
+        if ( isLatest ) {
+            pkg = repository.loadPackage( packageName );
+        } else {
+            pkg = repository.loadPackageSnapshot( packageName, packageVersion );
+        }
+
+        AssetItem item = pkg.loadAsset(assetName);
+        ContentHandler handler = ContentManager.getHandler( item.getFormat() );//new AssetContentFormatHandler();
+        StringBuffer buf = new StringBuffer();
+        if (handler.isRuleAsset()) {
+
+            BRMSPackageBuilder builder = new BRMSPackageBuilder(new PackageBuilderConfiguration());
+            //now we load up the DSL files
+            builder.setDSLFiles( BRMSPackageBuilder.getDSLMappingFiles( item.getPackage(), new BRMSPackageBuilder.DSLErrorEvent() {
+                public void recordError(AssetItem asset, String message) {
+                    //ignore at this point...
+                }
+            }));
+            ((IRuleAsset) handler).assembleDRL( builder, item, buf );
+            out.write(buf.toString().getBytes());
+            return item.getName() + ".drl";
+        } else {
+        	out.write(item.getContent().getBytes());
+        	return item.getName() + ".drl";
+        }
+
+	}
+
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/files/PackageDeploymentServlet.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/files/PackageDeploymentServlet.java	2008-06-17 06:42:58 UTC (rev 20549)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/files/PackageDeploymentServlet.java	2008-06-17 06:56:48 UTC (rev 20550)
@@ -100,7 +100,11 @@
         FileManagerUtils fm = getFileManager();
         String fileName = null;
         if (helper.isSource()) {
-            fileName = fm.loadSourcePackage(helper.getPackageName(), helper.getVersion(), helper.isLatest(), out );
+        	if (helper.isAsset()) {
+        		fileName = fm.loadSourceAsset(helper.getPackageName(), helper.getVersion(), helper.isLatest(), helper.getAssetName(), out);
+        	} else {
+        		fileName = fm.loadSourcePackage(helper.getPackageName(), helper.getVersion(), helper.isLatest(), out );
+        	}
         } else {
         	fileName = fm.loadBinaryPackage( helper.getPackageName(), helper.getVersion(), helper.isLatest(), out );
         }

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/files/PackageDeploymentURIHelper.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/files/PackageDeploymentURIHelper.java	2008-06-17 06:42:58 UTC (rev 20549)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/files/PackageDeploymentURIHelper.java	2008-06-17 06:56:48 UTC (rev 20550)
@@ -36,6 +36,7 @@
 
     private String version;
     private String packageName;
+    private String assetName = null;
 	private boolean source;
 
     public PackageDeploymentURIHelper(String uri) throws UnsupportedEncodingException {
@@ -54,6 +55,9 @@
             String []mtoks = result.split( "/" );
             this.version = mtoks[1];
             this.packageName = mtoks[0];
+            if (mtoks.length == 3) {
+            	this.assetName = mtoks[2];
+            }
         }
     }
 
@@ -73,4 +77,13 @@
 
 		return source;
 	}
+
+	public String getAssetName() {
+		return this.assetName;
+
+	}
+
+	public boolean isAsset() {
+		return assetName != null;
+	}
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/files/DeploymentURIHelperTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/files/DeploymentURIHelperTest.java	2008-06-17 06:42:58 UTC (rev 20549)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/files/DeploymentURIHelperTest.java	2008-06-17 06:56:48 UTC (rev 20550)
@@ -33,7 +33,7 @@
         helper = new PackageDeploymentURIHelper("/asset/bar/LATEST");
         assertTrue(helper.isLatest());
         assertEquals("bar", helper.getPackageName());
-
+        assertFalse(helper.isAsset());
     }
 
     public void testGetPackageWithDRL() throws Exception {
@@ -44,8 +44,20 @@
         assertEquals( "ya man", helper.getVersion() );
         assertEquals( "boo", helper.getPackageName() );
         assertFalse(helper.isLatest());
+        assertFalse(helper.isAsset());
 
+    }
 
+    public void testGetAssetDRL() throws Exception {
+    	String uri = "/org.drools.brms.JBRMS/package/packName/LATEST/assetName.drl";
+        PackageDeploymentURIHelper helper = new PackageDeploymentURIHelper(uri);
+        assertTrue(helper.isSource());
+        assertEquals("LATEST", helper.getVersion());
+        assertEquals("packName", helper.getPackageName());
+        assertEquals("assetName", helper.getAssetName());
+        assertTrue(helper.isAsset());
+
+
     }
 
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/files/PackageDeploymentServletTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/files/PackageDeploymentServletTest.java	2008-06-17 06:42:58 UTC (rev 20549)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/files/PackageDeploymentServletTest.java	2008-06-17 06:56:48 UTC (rev 20550)
@@ -88,6 +88,19 @@
 		assertEquals(bin_.length, bin.length);
 
 
+		//now get an individual asset source
+		serv = new PackageDeploymentServlet();
+		req = new MockHTTPRequest("/package/testPDSGetPackage/SNAP1/someRule.drl", null);
+		out = new ByteArrayOutputStream();
+		res = new MockHTTPResponse(out);
+		serv.doGet(req, res);
+
+		assertNotNull(out.toByteArray());
+		drl = new String(out.toByteArray());
+		System.err.println(drl);
+		assertTrue(drl.indexOf("rule") > -1);
+		assertEquals(-1, drl.indexOf("package"));
+
 	}
 
 	private void assertSameArray(byte[] bin_, byte[] bin) {




More information about the jboss-svn-commits mailing list