" @NonexistingAnnotation" +
" \n" +
" field : String @Annot \n" +
"end \n";
KnowledgeBase kbase = loadKnowledgeBaseFromString( drl );
Class clazz = kbase.getFactType( "org.drools.compiler.test",
"AnnotatedBean" ).getFactClass();
assertNotNull( clazz );
try {
Field fld = clazz.getDeclaredField( "name" );
assertEquals( 3,
fld.getAnnotations().length );
assertNotNull( fld.getAnnotation( Deprecated.class ) );
assertNotNull( fld.getAnnotation( Position.class ) );
assertNotNull( fld.getAnnotation( Key.class ) );
Position pos = fld.getAnnotation( Position.class );
assertEquals( 0,
pos.value() );
} catch ( NoSuchFieldException nsfe ) {
fail( "field name has not been generated correctly : " + nsfe.getMessage() );
}
Annotation[] anns = clazz.getAnnotations();
assertEquals( 3,
anns.length );
assertNotNull( clazz.getAnnotation( Deprecated.class ) );
assertNotNull( clazz.getAnnotation( Annot.class ) );
assertNotNull( clazz.getAnnotation( Role.class ) );
Annot ann = (Annot) clazz.getAnnotation( Annot.class );
assertEquals( 7,
ann.intProp() );
assertEquals( String.class,
ann.typeProp() );
assertEquals( "hello world",
ann.strProp() );
assertEquals( AnnPropEnum.THREE,
ann.enumProp() );
assertArrayEquals( new double[]{1.0, 2.0},
ann.dblArrProp(),
1e-16 );
assertArrayEquals( new Class[]{String.class, AnnotationsTest.class},
ann.typeArrProp() );
assertArrayEquals( new String[]{"x1", "x2"},
ann.strArrProp() );
assertArrayEquals( new AnnPropEnum[]{AnnPropEnum.ONE, AnnPropEnum.THREE},
ann.enumArrProp() );
Class clazz2 = kbase.getFactType( "org.drools.compiler.test",
"SecondBean" ).getFactClass();
assertNotNull( clazz2 );
Annotation[] anns2 = clazz2.getAnnotations();
assertEquals( 0,
anns2.length );