Skip to content

Commit

Permalink
GUVNOR-1956: adding CF as a supported constant metadata for DSLs
Browse files Browse the repository at this point in the history
  • Loading branch information
etirelli committed Oct 12, 2012
1 parent 65df41d commit 61051cc
Show file tree
Hide file tree
Showing 9 changed files with 49 additions and 45 deletions.

Large diffs are not rendered by default.

@@ -1,4 +1,4 @@
// $ANTLR 3.3 Nov 30, 2010 12:46:29 src/main/resources/org/drools/lang/DRLLexer.g 2012-10-01 16:38:40
// $ANTLR 3.3 Nov 30, 2010 12:46:29 src/main/resources/org/drools/lang/DRLLexer.g 2012-10-12 17:52:52

package org.drools.lang;

Expand Down
@@ -1,4 +1,4 @@
// $ANTLR 3.3 Nov 30, 2010 12:46:29 src/main/resources/org/drools/lang/dsl/DSLMap.g 2012-10-01 16:38:44
// $ANTLR 3.3 Nov 30, 2010 12:46:29 src/main/resources/org/drools/lang/dsl/DSLMap.g 2012-10-12 17:52:56

package org.drools.lang.dsl;
import java.util.List;
Expand Down
@@ -1,4 +1,4 @@
// $ANTLR 3.3 Nov 30, 2010 12:46:29 src/main/resources/org/drools/lang/dsl/DSLMap.g 2012-10-01 16:38:44
// $ANTLR 3.3 Nov 30, 2010 12:46:29 src/main/resources/org/drools/lang/dsl/DSLMap.g 2012-10-12 17:52:56

package org.drools.lang.dsl;
import java.util.List;
Expand Down Expand Up @@ -472,7 +472,7 @@ else if ( (LA5_0==EOF) ) {


// AST REWRITE
// elements: scope_section, meta_section, value_section, key_section
// elements: meta_section, scope_section, key_section, value_section
// token labels:
// rule labels: retval
// token list labels:
Expand Down Expand Up @@ -667,7 +667,7 @@ else if ( ((validateIdentifierKey("*"))) ) {


// AST REWRITE
// elements: value1, value4, value2, value3
// elements: value3, value1, value4, value2
// token labels:
// rule labels: retval, value3, value4, value1, value2
// token list labels:
Expand Down Expand Up @@ -1724,7 +1724,7 @@ public final DSLMapParser.variable_definition_return variable_definition() throw


// AST REWRITE
// elements: name, name, q, q, q, name, q, name, q, q, q, q, name, name, name, q, name, name
// elements: q, name, q, name, name, name, q, name, q, name, q, q, name, name, q, name, q, q
// token labels: q, name
// rule labels: retval
// token list labels:
Expand Down
35 changes: 18 additions & 17 deletions drools-compiler/src/main/java/org/drools/lang/dsl/DSLMapWalker.java
@@ -1,4 +1,4 @@
// $ANTLR 3.3 Nov 30, 2010 12:46:29 src/main/resources/org/drools/lang/dsl/DSLMapWalker.g 2012-10-01 16:38:44
// $ANTLR 3.3 Nov 30, 2010 12:46:29 src/main/resources/org/drools/lang/dsl/DSLMapWalker.g 2012-10-12 17:52:57

package org.drools.lang.dsl;

Expand Down Expand Up @@ -838,7 +838,8 @@ public final void variable_definition() throws RecognitionException {
((entry_scope)entry_stack.peek()).sentenceKeyBuffer.append("{"+(varname!=null?varname.getText():null)+"}");
}

if(q == null || (!q.getText().equals("ENUM") && !q.getText().equals("DATE") && !q.getText().equals("BOOLEAN"))){
if(q == null || (!q.getText().equals("ENUM") && !q.getText().equals("CF") &&
!q.getText().equals("DATE") && !q.getText().equals("BOOLEAN"))){
((entry_scope)entry_stack.peek()).keybuffer.append(pattern != null? "(" + (pattern!=null?pattern.getText():null) + ")" : "(.*?)");
}else{
((entry_scope)entry_stack.peek()).keybuffer.append("(.*?)");
Expand All @@ -860,14 +861,14 @@ public final void variable_definition() throws RecognitionException {


// $ANTLR start "variable_reference"
// src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:148:1: variable_reference : ^(varref= VT_VAR_REF lit= LITERAL ) ;
// src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:149:1: variable_reference : ^(varref= VT_VAR_REF lit= LITERAL ) ;
public final void variable_reference() throws RecognitionException {
CommonTree varref=null;
CommonTree lit=null;

try {
// src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:149:5: ( ^(varref= VT_VAR_REF lit= LITERAL ) )
// src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:149:7: ^(varref= VT_VAR_REF lit= LITERAL )
// src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:150:5: ( ^(varref= VT_VAR_REF lit= LITERAL ) )
// src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:150:7: ^(varref= VT_VAR_REF lit= LITERAL )
{
varref=(CommonTree)match(input,VT_VAR_REF,FOLLOW_VT_VAR_REF_in_variable_reference471);

Expand Down Expand Up @@ -895,11 +896,11 @@ public final void variable_reference() throws RecognitionException {


// $ANTLR start "condition_key"
// src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:156:1: condition_key : VT_CONDITION ;
// src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:157:1: condition_key : VT_CONDITION ;
public final void condition_key() throws RecognitionException {
try {
// src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:157:5: ( VT_CONDITION )
// src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:157:7: VT_CONDITION
// src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:158:5: ( VT_CONDITION )
// src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:158:7: VT_CONDITION
{
match(input,VT_CONDITION,FOLLOW_VT_CONDITION_in_condition_key500);
((entry_scope)entry_stack.peek()).retval.setSection(DSLMappingEntry.CONDITION);
Expand All @@ -919,11 +920,11 @@ public final void condition_key() throws RecognitionException {


// $ANTLR start "consequence_key"
// src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:161:1: consequence_key : VT_CONSEQUENCE ;
// src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:162:1: consequence_key : VT_CONSEQUENCE ;
public final void consequence_key() throws RecognitionException {
try {
// src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:162:5: ( VT_CONSEQUENCE )
// src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:162:7: VT_CONSEQUENCE
// src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:163:5: ( VT_CONSEQUENCE )
// src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:163:7: VT_CONSEQUENCE
{
match(input,VT_CONSEQUENCE,FOLLOW_VT_CONSEQUENCE_in_consequence_key524);
((entry_scope)entry_stack.peek()).retval.setSection(DSLMappingEntry.CONSEQUENCE);
Expand All @@ -943,11 +944,11 @@ public final void consequence_key() throws RecognitionException {


// $ANTLR start "keyword_key"
// src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:166:1: keyword_key : VT_KEYWORD ;
// src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:167:1: keyword_key : VT_KEYWORD ;
public final void keyword_key() throws RecognitionException {
try {
// src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:167:5: ( VT_KEYWORD )
// src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:167:7: VT_KEYWORD
// src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:168:5: ( VT_KEYWORD )
// src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:168:7: VT_KEYWORD
{
match(input,VT_KEYWORD,FOLLOW_VT_KEYWORD_in_keyword_key548);
((entry_scope)entry_stack.peek()).retval.setSection(DSLMappingEntry.KEYWORD);
Expand All @@ -967,11 +968,11 @@ public final void keyword_key() throws RecognitionException {


// $ANTLR start "any_key"
// src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:171:1: any_key : VT_ANY ;
// src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:172:1: any_key : VT_ANY ;
public final void any_key() throws RecognitionException {
try {
// src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:172:5: ( VT_ANY )
// src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:172:7: VT_ANY
// src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:173:5: ( VT_ANY )
// src/main/resources/org/drools/lang/dsl/DSLMapWalker.g:173:7: VT_ANY
{
match(input,VT_ANY,FOLLOW_VT_ANY_in_any_key572);
((entry_scope)entry_stack.peek()).retval.setSection(DSLMappingEntry.ANY);
Expand Down
@@ -1,4 +1,4 @@
// $ANTLR 3.3 Nov 30, 2010 12:46:29 src/main/resources/org/drools/semantics/java/parser/Java.g 2012-10-01 16:38:48
// $ANTLR 3.3 Nov 30, 2010 12:46:29 src/main/resources/org/drools/semantics/java/parser/Java.g 2012-10-12 17:53:00

package org.drools.rule.builder.dialect.java.parser;

Expand Down
@@ -1,4 +1,4 @@
// $ANTLR 3.3 Nov 30, 2010 12:46:29 src/main/resources/org/drools/semantics/java/parser/Java.g 2012-10-01 16:38:46
// $ANTLR 3.3 Nov 30, 2010 12:46:29 src/main/resources/org/drools/semantics/java/parser/Java.g 2012-10-12 17:52:59

package org.drools.rule.builder.dialect.java.parser;
import java.util.Iterator;
Expand Down
Expand Up @@ -136,7 +136,8 @@ variable_definition
$entry::sentenceKeyBuffer.append("{"+$varname.text+"}");
}

if($q == null || (!$q.getText().equals("ENUM") && !$q.getText().equals("DATE") && !$q.getText().equals("BOOLEAN"))){
if($q == null || (!$q.getText().equals("ENUM") && !$q.getText().equals("CF") &&
!$q.getText().equals("DATE") && !$q.getText().equals("BOOLEAN"))){
$entry::keybuffer.append($pattern != null? "(" + $pattern.text + ")" : "(.*?)");
}else{
$entry::keybuffer.append("(.*?)");
Expand Down
Expand Up @@ -409,22 +409,23 @@ public void testExpandQuery() throws Exception {
}

@Test
public void testExpandQueryWithParams() throws Exception {
public void testExpandExpr() throws Exception {
DSLTokenizedMappingFile file = new DSLTokenizedMappingFile();
String dsl = "[when]There is a person=Person()\n" +
"[when]- {field:\\w*} {operator} {value:\\d*}={field} {operator} {value}\n" +
"[when]- equals {variable}=this == {variable}\n" +
"[when]is greater than=>";

String source = "query \"isMature\"(Person p)\n" +
"There is a person\n" +
"- age is greater than 18\n" +
"- equals p\n" +
"end\n";

String expected = "query \"isMature\"(Person p)\n" +
"Person(age > 18, this == p)\n" +
"end\n";
String dsl = "[when]Name of Applicant {nameVar:CF:Applicant.age}= System.out.println({nameVar})";

String source = "rule \"test rule for custom form in DSL\"\n" +
" dialect \"mvel\"\n" +
" when\n" +
" Name of Applicant Bojan Oklahoma and NJ,Andrew AMW Test\n" +
" then\n" +
"end";

String expected = "rule \"test rule for custom form in DSL\"\n" +
" dialect \"mvel\"\n" +
" when\n" +
" System.out.println(Bojan Oklahoma and NJ,Andrew AMW Test)\n" +
" then\n" +
"end";

file.parseAndLoad( new StringReader( dsl ) );
assertEquals( 0,
Expand All @@ -434,6 +435,7 @@ public void testExpandQueryWithParams() throws Exception {
ex.addDSLMapping( file.getMapping() );

String drl = ex.expand( source );

assertFalse( ex.hasErrors() );

assertEquals( expected, drl );
Expand Down

0 comments on commit 61051cc

Please sign in to comment.