private KieBase createKnowledgeBase() { KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add(ResourceFactory.newClassPathResource("memory/BPMN2-RuleTaskWithInsertProcessInstance.bpmn2"), ResourceType.BPMN2); kbuilder.add(ResourceFactory.newClassPathResource("memory/ProcessInstanceRule.drl"), ResourceType.DRL); if (!kbuilder.getErrors().isEmpty()) { Iterator<KnowledgeBuilderError> errIter = kbuilder.getErrors().iterator(); while( errIter.hasNext() ) { KnowledgeBuilderError err = errIter.next(); StringBuilder lines = new StringBuilder(""); if( err.getLines().length > 0 ) { lines.append(err.getLines()[0]); for( int i = 1; i < err.getLines().length; ++i ) { lines.append(", " + err.getLines()[i]); } } logger.warn( err.getMessage() + " (" + lines.toString() + ")" ); } throw new IllegalArgumentException("Errors while parsing knowledge base"); } InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addPackages(kbuilder.getKnowledgePackages()); return kbase; }
@Test public void testRuleExtendsNonexistingRule() { // DROOLS-100 String str = "package org.drools.test;\n" + "\n" + "global java.util.List list;\n" + "\n" + "rule \"Base\"\n" + "when\n" + " String( this == \"go\" )\n" + "then\n" + "end\n" + "\n" + "rule \"ExtYes\" extends \"Bas\"\n" + "when\n" + "then\n" + " list.add( 1 );\n" + "end\n"; KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add( ResourceFactory.newByteArrayResource(str.getBytes()), ResourceType.DRL ); assertTrue( kbuilder.hasErrors() ); kbuilder.getErrors().iterator().next().toString().contains("Base"); }
@Test public void testJBRULES2872() { final String str = "package org.drools.compiler.test\n" + "import org.drools.compiler.FactA\n" + "rule X\n" + "when\n" + " FactA( enumVal == TestEnum.ONE || == TestEnum.TWO )\n" + "then\n" + "end\n"; final KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add(ResourceFactory.newByteArrayResource(str.getBytes()), ResourceType.DRL); assertTrue(kbuilder.hasErrors()); final KnowledgeBuilderErrors errors = kbuilder.getErrors(); assertEquals(1, errors.size()); final KnowledgeBuilderError error = errors.iterator().next(); assertEquals(5, error.getLines()[0]); }
assertTrue( kbuilder.getErrors().iterator().next().toString().contains("Circular") );
private KieBase createKnowledgeBase() { KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add(ResourceFactory.newClassPathResource("memory/BPMN2-RuleTaskWithInsertProcessInstance.bpmn2"), ResourceType.BPMN2); kbuilder.add(ResourceFactory.newClassPathResource("memory/ProcessInstanceRule.drl"), ResourceType.DRL); if (!kbuilder.getErrors().isEmpty()) { Iterator<KnowledgeBuilderError> errIter = kbuilder.getErrors().iterator(); while( errIter.hasNext() ) { KnowledgeBuilderError err = errIter.next(); StringBuilder lines = new StringBuilder(""); if( err.getLines().length > 0 ) { lines.append(err.getLines()[0]); for( int i = 1; i < err.getLines().length; ++i ) { lines.append(", " + err.getLines()[i]); } } logger.warn( err.getMessage() + " (" + lines.toString() + ")" ); } throw new IllegalArgumentException("Errors while parsing knowledge base"); } InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addPackages(kbuilder.getKnowledgePackages()); return kbase; }
@Test public void testJBRULES2872() { String str = "package org.drools.compiler.test\n" + "import org.drools.compiler.FactA\n" + "rule X\n" + "when\n" + " FactA( enumVal == TestEnum.ONE || == TestEnum.TWO )\n" + "then\n" + "end\n"; KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ), ResourceType.DRL ); assertTrue( kbuilder.hasErrors() ); KnowledgeBuilderErrors errors = kbuilder.getErrors(); logger.info( errors.toString() ); assertEquals( 1, errors.size() ); KnowledgeBuilderError error = errors.iterator().next(); assertEquals( 5, error.getLines()[0] ); }