@Test public void testTypeDeclaration() throws Exception { PackageDescr pkgDescr = new PackageDescr( "org.drools.compiler" ); TypeDeclarationDescr typeDescr = new TypeDeclarationDescr( "StockTick" ); typeDescr.addAnnotation( Role.class.getCanonicalName(), "Event" ); typeDescr.addAnnotation( TypeSafe.class.getCanonicalName(), "true" ); pkgDescr.addTypeDeclaration( typeDescr ); KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); builder.addPackage( pkgDescr ); if ( builder.hasErrors() ) { fail( builder.getErrors().toString() ); } InternalKnowledgePackage pkg = builder.getPackage(pkgDescr.getName()); assertEquals( 1, pkg.getTypeDeclarations().size() ); TypeDeclaration type = pkg.getTypeDeclaration( "StockTick" ); assertTrue( type.isTypesafe() ); assertEquals( Role.Type.EVENT, type.getRole() ); assertEquals( StockTick.class, type.getTypeClass() ); }
@Test public void testTypeDeclarationNewBean() throws Exception { PackageDescr pkgDescr = new PackageDescr( "org.drools.compiler.test" ); TypeDeclarationDescr typeDescr = new TypeDeclarationDescr( "NewBean" ); TypeFieldDescr f1 = new TypeFieldDescr( "name", new PatternDescr( "String" ) ); TypeFieldDescr f2 = new TypeFieldDescr( "age", new PatternDescr( "int" ) ); typeDescr.addField( f1 ); typeDescr.addField( f2 ); pkgDescr.addTypeDeclaration( typeDescr ); KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); builder.addPackage( pkgDescr ); InternalKnowledgePackage pkg = builder.getPackage(pkgDescr.getName()); assertEquals( 1, pkg.getTypeDeclarations().size() ); TypeDeclaration type = pkg.getTypeDeclaration( "NewBean" ); assertEquals( "NewBean", type.getTypeName() ); assertEquals( Role.Type.FACT, type.getRole() ); assertEquals( "org.drools.compiler.test.NewBean", type.getTypeClass().getName() ); assertFalse( builder.hasErrors() ); InternalKnowledgePackage bp = builder.getPackage(pkgDescr.getName()); Class newBean = bp.getPackageClassLoader().loadClass( "org.drools.compiler.test.NewBean" ); assertNotNull( newBean ); }