[jboss-svn-commits] JBL Code SVN: r14506 - in labs/jbossrules/trunk/drools-compiler/src: test/java/org/drools/brms/modeldriven and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Aug 23 21:42:56 EDT 2007


Author: michael.neale at jboss.com
Date: 2007-08-23 21:42:55 -0400 (Thu, 23 Aug 2007)
New Revision: 14506

Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/util/DataEnumLoader.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/modeldriven/DataEnumLoaderTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/brms/modeldriven/Some.enumeration
Log:
a fix to fix cbrocks fix in MVEL

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/util/DataEnumLoader.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/util/DataEnumLoader.java	2007-08-24 00:23:26 UTC (rev 14505)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/util/DataEnumLoader.java	2007-08-24 01:42:55 UTC (rev 14506)
@@ -6,6 +6,7 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.StringTokenizer;
 
 import org.mvel.MVEL;
 
@@ -26,13 +27,15 @@
 	}
 
 	private Map loadEnum(String mvelSource) {
+
         if (mvelSource == null || (mvelSource.trim().equals( "" ))) {
             return Collections.EMPTY_MAP;
         }
+        mvelSource = addCommasForNewLines(mvelSource);
 		final Object mvelData;
 		try {
-
-			mvelData = MVEL.eval("[ " + mvelSource + " ]", new HashMap());
+		    mvelSource = "[ " + mvelSource + " ]";
+			mvelData = MVEL.eval(mvelSource, new HashMap());
 		} catch (RuntimeException e) {
 			addError("Unable to load enumeration data.");
 			addError(e.getMessage());
@@ -71,7 +74,27 @@
 		return newMap;
 	}
 
-	private void addError(String string) {
+	public static String addCommasForNewLines(String mvelSource) {
+        StringTokenizer st = new StringTokenizer(mvelSource, "\r\n");
+        StringBuffer buf = new StringBuffer();
+        while(st.hasMoreTokens()) {
+            String line = st.nextToken().trim();
+            if (st.hasMoreTokens() && line.endsWith( "," )) {
+                buf.append( line );
+            } else {
+                buf.append( line );
+                if (st.hasMoreTokens()) {
+                    buf.append( "," );
+                }
+            }
+            if (st.hasMoreTokens()) {
+                buf.append( "\n" );
+            }
+        }
+        return buf.toString();
+    }
+
+    private void addError(String string) {
 		this.errors.add(string);
 	}
 

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/modeldriven/DataEnumLoaderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/modeldriven/DataEnumLoaderTest.java	2007-08-24 00:23:26 UTC (rev 14505)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/brms/modeldriven/DataEnumLoaderTest.java	2007-08-24 01:42:55 UTC (rev 14506)
@@ -16,16 +16,22 @@
 public class DataEnumLoaderTest extends TestCase {
 
 	public void testEnumGeneration() throws Exception {
+
+
+
 		Object result = MVEL.eval("[2, 3, 4, ]", new HashMap());
 		assertTrue(result instanceof List);
 		List l = (List) result;
 		assertEquals(3, l.size());
 
-		result = MVEL.eval("['Person.age' : [2, 3], 'Person.name' : ['qqq', \n'ccc']]", new HashMap());
+		result = MVEL.eval("['Person.age' : [2, 3]\n 'Person.name' : ['qqq', \n'ccc']]", new HashMap());
 
+
+
+
 		DataEnumLoader loader = new DataEnumLoader(readLines().toString());
 
-        assertFalse(loader.hasErrors());
+        assertFalse(loader.getErrors().toString(), loader.hasErrors());
 
 		Map enumeration = (Map) loader.getData();
 		assertEquals(loader.getErrors().toString(), 0, loader.getErrors().size());
@@ -51,6 +57,8 @@
 
 	}
 
+
+
     public void testNoOp() {
         DataEnumLoader loader = new DataEnumLoader(" ");
         assertFalse(loader.hasErrors());
@@ -63,6 +71,11 @@
     }
 
 
+    public void testNewLines() {
+        String s = "yeah yeah, \nyeah \nyeah";
+        assertEquals("yeah yeah,\nyeah,\nyeah", DataEnumLoader.addCommasForNewLines( s ));
+    }
+
 	private StringBuffer readLines() throws IOException {
 		BufferedReader r = new BufferedReader(new InputStreamReader(this.getClass().getResourceAsStream("Some.enumeration")));
 		String line = "";

Modified: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/brms/modeldriven/Some.enumeration
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/brms/modeldriven/Some.enumeration	2007-08-24 00:23:26 UTC (rev 14505)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/brms/modeldriven/Some.enumeration	2007-08-24 01:42:55 UTC (rev 14506)
@@ -1,4 +1,3 @@
 'Person.age' : [1, 2, 3, 4]
 'Person.rating' : ["High", "Low"]
-/* and this shows how to get data from some external source */
 'Person.something' : (new org.drools.brms.modeldriven.SampleDataSource()).getData()




More information about the jboss-svn-commits mailing list