@Test public void testMultiLineTemplates() throws Exception { final Reader source = new InputStreamReader( getClass().getResourceAsStream( "rule_with_expander_multiline.dslr" ) ); final Reader dsl = new InputStreamReader( getClass().getResourceAsStream( "test_dsl_multiline.dsl" ) ); Expander ex = new DefaultExpanderResolver(dsl).get("*", null); String r = ex.expand(source); assertEquals("when Car(color==\"Red\") then doSomething();", r.trim()); }
@Test public void testExpandDRLUsingInjectedExpander() throws Exception { String dsl = "[condition]Something=Something()" + NL + "[then]another=another();"; String drl = "rule 'foo' " + NL + " when " + NL + " Something " + NL + " then " + NL + " another " + NL + "end"; DefaultExpanderResolver resolver = new DefaultExpanderResolver(new StringReader(dsl)); final DSLMappingFile file = new DSLTokenizedMappingFile(); if ( file.parseAndLoad( new StringReader(dsl) ) ) { final Expander expander = new DefaultExpander(); expander.addDSLMapping( file.getMapping() ); resolver.addExpander("*", expander); } else { throw new RuntimeException( "Error parsing and loading DSL file." + file.getErrors() ); } DrlParser parser = new DrlParser(LanguageLevelOption.DRL5); String result = parser.getExpandedDRL( drl, resolver); Assertions.assertThat("rule 'foo' " + NL + " when " + NL + " Something() " + NL + " then " + NL + " another(); " + NL + "end") .isEqualToIgnoringWhitespace(result); }
public static void main(String[] args) throws IOException, DroolsParserException { String dslContent = "[when] There is a person = $p:Person()\n" + "[when] - id greater than {id:\\d*} = id > {id}\n" + "[then] print = System.out.println(\"I am fired!\")"; String dslrContent = "rule 'test-dsl'\n" + "\n" + "when\n" + " There is a person\n" + " - id greater than 10\n" + "then\n" + " print\n" + "end"; DefaultExpanderResolver resolver = new DefaultExpanderResolver(new StringReader(dslContent)); DrlParser parser = new DrlParser(); String string = parser.getExpandedDRL(dslrContent,resolver); System.out.println(string); } }