[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