"declare org.kie.EventA \n" +
" @role (event) \n" +
" @duration (duration) \n" +
"end \n";
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add( ResourceFactory.newByteArrayResource( str1.getBytes() ),
ResourceType.DRL );
kbuilder.add( ResourceFactory.newByteArrayResource( str2.getBytes() ),
ResourceType.DRL );
if (kbuilder.hasErrors() ) {
fail( kbuilder.getErrors().toString() );
}
//No Warnings
KnowledgeBuilderResults warnings = kbuilder.getResults(ResultSeverity.WARNING);
Assert.assertEquals(0, warnings.size());
//just 1 package was created
Assert.assertEquals(1, kbuilder.getKnowledgePackages().size());
//Get the Fact Type for org.kie.EventA
FactType factType = ((KnowledgePackageImpl)kbuilder.getKnowledgePackages().iterator().next()).getFactType("org.kie.EventA");
assertNotNull( factType );
//'name' field must still be there
FactField field = factType.getField("name");
assertNotNull( field );
//'duration' field must still be there
field = factType.getField("duration");
assertNotNull( field );
//New Annotations must be there too
TypeDeclaration typeDeclaration = ((KnowledgePackageImpl)kbuilder.getKnowledgePackages().iterator().next()).getTypeDeclaration("EventA");
assertEquals(TypeDeclaration.Role.EVENT, typeDeclaration.getRole());
assertEquals("duration", typeDeclaration.getDurationAttribute());
}