[jboss-svn-commits] JBL Code SVN: r19595 - in labs/jbossrules/trunk: drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Apr 16 13:53:59 EDT 2008
Author: tirelli
Date: 2008-04-16 13:53:59 -0400 (Wed, 16 Apr 2008)
New Revision: 19595
Modified:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaConsequenceBuilder.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/benchmark/manners/manners.drl
Log:
Preserving line breaks on modify block
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaConsequenceBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaConsequenceBuilder.java 2008-04-16 17:48:47 UTC (rev 19594)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaConsequenceBuilder.java 2008-04-16 17:53:59 UTC (rev 19595)
@@ -23,6 +23,8 @@
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import org.drools.compiler.DescrBuildError;
import org.drools.compiler.Dialect;
@@ -44,6 +46,8 @@
implements
ConsequenceBuilder {
+ private final Pattern lineBreakFinder = Pattern.compile( "\\r\\n|\\r|\\n" );
+
/* (non-Javadoc)
* @see org.drools.semantics.java.builder.ConsequenceBuilder#buildConsequence(org.drools.semantics.java.builder.BuildContext, org.drools.semantics.java.builder.BuildUtils, org.drools.lang.descr.RuleDescr)
*/
@@ -180,32 +184,59 @@
return null;
}
String retString = ClassUtils.canonicalName( ret );
-
+
// adding modify expression
- consequence.append( "{\n" );
+ consequence.append( "{ " );
consequence.append( retString );
consequence.append( " __obj__ = (" );
consequence.append( retString );
consequence.append( ") " );
consequence.append( d.getModifyExpression() );
- consequence.append( ";\n" );
+ consequence.append( "; " );
// adding the modifyRetract call:
- consequence.append( "modifyRetract( __obj__ );\n" );
-
+ consequence.append( "modifyRetract( __obj__ ); " );
+ // the following is a hack to preserve line breaks.
+ String originalBlock = originalCode.substring( d.getStart()-1,
+ d.getEnd() );
+ int end = originalBlock.indexOf( "{" );
+ addLineBreaks( consequence,
+ originalBlock.substring( 0,
+ end ) );
+
+ int start = end+1;
// adding each of the expressions:
for ( Iterator exprIt = d.getExpressions().iterator(); exprIt.hasNext(); ) {
+ String exprStr = (String) exprIt.next();
+ end = originalBlock.indexOf( exprStr,
+ start );
+ addLineBreaks( consequence,
+ originalBlock.substring( start,
+ end ) );
consequence.append( "__obj__." );
- consequence.append( exprIt.next() );
- consequence.append( ";\n" );
+ consequence.append( exprStr );
+ consequence.append( "; " );
+ start = end + exprStr.length();
}
// adding the modifyInsert call:
- consequence.append( "modifyInsert( __obj__ );" );
- consequence.append( "}\n" );
+ addLineBreaks( consequence, originalBlock.substring( end ) );
+ consequence.append( "modifyInsert( __obj__ ); }" );
}
consequence.append( originalCode.substring( lastAdded ) );
return consequence.toString();
}
+ /**
+ * @param consequence
+ * @param chunk
+ */
+ private void addLineBreaks(StringBuffer consequence,
+ String chunk) {
+ Matcher m = lineBreakFinder.matcher( chunk );
+ while ( m.find() ) {
+ consequence.append( "\n" );
+ }
+ }
+
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java 2008-04-16 17:48:47 UTC (rev 19594)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java 2008-04-16 17:53:59 UTC (rev 19595)
@@ -469,7 +469,6 @@
ExpressionCompiler compiler = new ExpressionCompiler( text.trim() );
if ( MVELDebugHandler.isDebugMode() ) {
- System.out.println( "Source before MVEL Compilation:\n" + text.trim() );
compiler.setDebugSymbols( true );
}
Modified: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/benchmark/manners/manners.drl
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/benchmark/manners/manners.drl 2008-04-16 17:48:47 UTC (rev 19594)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/benchmark/manners/manners.drl 2008-04-16 17:53:59 UTC (rev 19595)
@@ -18,7 +18,9 @@
System.out.println( "assign first seat : " + seating + " : " + path );
- modify( context ) { setState( Context.ASSIGN_SEATS ) }
+ modify( context ) {
+ setState( Context.ASSIGN_SEATS )
+ }
end
rule findSeating
More information about the jboss-svn-commits
mailing list