[jboss-svn-commits] JBL Code SVN: r11349 - in labs/jbossrules/trunk/drools-repository/src/main: resources/node_type_definitions and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Apr 26 06:02:46 EDT 2007


Author: michael.neale at jboss.com
Date: 2007-04-26 06:02:46 -0400 (Thu, 26 Apr 2007)
New Revision: 11349

Modified:
   labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/PackageItem.java
   labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/rulepackage_node_type.cnd
Log:
JBRULES-773 BRMS assembler

Modified: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/PackageItem.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/PackageItem.java	2007-04-26 07:44:32 UTC (rev 11348)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/PackageItem.java	2007-04-26 10:02:46 UTC (rev 11349)
@@ -1,5 +1,6 @@
 package org.drools.repository;
 
+import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Collections;
@@ -9,6 +10,7 @@
 
 import javax.jcr.ItemExistsException;
 import javax.jcr.Node;
+import javax.jcr.Property;
 import javax.jcr.RepositoryException;
 import javax.jcr.query.Query;
 import javax.jcr.query.QueryResult;
@@ -48,6 +50,8 @@
     public static final String HEADER_PROPERTY_NAME             = "drools:header";
     public static final String EXTERNAL_URI_PROPERTY_NAME             = "drools:externalURI";
 
+    private static final String COMPILED_PACKAGE_PROPERTY_NAME = "drools:compiledPackage";
+
     /**
      * Constructs an object of type RulePackageItem corresponding the specified node
      * @param rulesRepository the rulesRepository that instantiated this object
@@ -586,7 +590,62 @@
         }
     }
     
+    /**
+     * If the asset is a binary asset, then use this to update the content
+     * (do NOT use text).
+     */
+    public PackageItem updateCompiledPackage(InputStream data) {
+        checkout();
+        try {
+            this.node.setProperty( COMPILED_PACKAGE_PROPERTY_NAME, data );            
+            return this;
+        } catch (RepositoryException e ) {
+            log.error( "Unable to update the assets binary content", e );
+            throw new RulesRepositoryException( e );
+        }
+    }    
     
+    /**
+     * This is a convenience method for returning the binary data as a byte array.
+     */
+    public byte[] getCompiledPackageBytes() {
+        
+        try {
+            Node ruleNode = getVersionContentNode();
+            if ( ruleNode.hasProperty(  COMPILED_PACKAGE_PROPERTY_NAME ) ) {
+                Property data = ruleNode.getProperty( COMPILED_PACKAGE_PROPERTY_NAME );
+                InputStream in = data.getStream();
+                
+                // Create the byte array to hold the data
+                byte[] bytes = new byte[(int) data.getLength()];
+            
+                // Read in the bytes
+                int offset = 0;
+                int numRead = 0;
+                while (offset < bytes.length
+                       && (numRead=in.read(bytes, offset, bytes.length-offset)) >= 0) {
+                    offset += numRead;
+                }
+            
+                // Ensure all the bytes have been read in
+                if (offset < bytes.length) {
+                    throw new RulesRepositoryException("Could not completely read binary package for "+ getName());
+                }
+            
+                // Close the input stream and return bytes
+                in.close();   
+                return bytes;
+            } else {
+                return null;
+            }
+        } catch ( Exception e ) {
+            log.error( e );
+            if (e instanceof RuntimeException) throw (RuntimeException) e;
+            throw new RulesRepositoryException( e );
+        }  
+    }    
+    
+    
 
 
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/rulepackage_node_type.cnd
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/rulepackage_node_type.cnd	2007-04-26 07:44:32 UTC (rev 11348)
+++ labs/jbossrules/trunk/drools-repository/src/main/resources/node_type_definitions/rulepackage_node_type.cnd	2007-04-26 10:02:46 UTC (rev 11349)
@@ -35,3 +35,6 @@
   < 'drools:assetNodeType','nt:version'
 */
 
+//optionally store the binary compiled package (really a cache)
+- drools:compiledPackage (binary)
+




More information about the jboss-svn-commits mailing list