private void processTypeAnnotations( AbstractClassTypeDeclarationDescr typeDescr, TypeDeclaration type) { try { Role role = typeDescr.getTypedAnnotation(Role.class); if (role != null) { type.setRole(role.value()); } TypeSafe typeSafe = typeDescr.getTypedAnnotation(TypeSafe.class); if (typeSafe != null) { type.setTypesafe(typeSafe.value()); } if (typeDescr instanceof EnumDeclarationDescr) { type.setKind(TypeDeclaration.Kind.ENUM); } else if (typeDescr instanceof TypeDeclarationDescr && ((TypeDeclarationDescr) typeDescr).isTrait()) { type.setKind(TypeDeclaration.Kind.TRAIT); } type.setDynamic(typeDescr.hasAnnotation(PropertyChangeSupport.class)); } catch (Exception e) { kbuilder.addBuilderResult(new TypeDeclarationError(typeDescr, e.getMessage())); } }
private void testKieModuleMetaDataInMemory(boolean useTypeDeclaration) throws Exception { KieServices ks = KieServices.Factory.get(); ReleaseId dependency = ks.newReleaseId("org.drools", "drools-core", "5.5.0.Final"); ReleaseId releaseId = ks.newReleaseId("org.kie", "metadata-test", "1.0-SNAPSHOT"); InternalKieModule kieModule = createKieJarWithClass(ks, releaseId, useTypeDeclaration, 2, 7, dependency); KieModuleMetaData kieModuleMetaData = KieModuleMetaData.Factory.newKieModuleMetaData(kieModule); checkDroolsCoreDep(kieModuleMetaData); Collection<String> testClasses = kieModuleMetaData.getClasses("org.kie.test"); assertEquals(1, testClasses.size()); assertEquals("Bean", testClasses.iterator().next()); Class<?> beanClass = kieModuleMetaData.getClass("org.kie.test", "Bean"); assertNotNull(beanClass.getMethod("getValue")); TypeMetaInfo beanTypeInfo = kieModuleMetaData.getTypeMetaInfo(beanClass); assertNotNull(beanTypeInfo); assertTrue(beanTypeInfo.isEvent()); Role role = beanClass.getAnnotation(Role.class); assertNotNull(role); assertEquals(Role.Type.EVENT, role.value()); assertEquals(useTypeDeclaration, beanTypeInfo.isDeclaredType()); }
/** * Returns true if clazz is imported as an Event class in this package * * @param clazz * @return true if clazz is imported as an Event class in this package */ public boolean isEvent(Class clazz) { TypeDeclaration typeDeclaration = getTypeDeclaration(clazz); if (typeDeclaration != null) { return typeDeclaration.getRole() == Role.Type.EVENT; } Role role = (Role) clazz.getAnnotation(Role.class); return role != null && role.value() == Role.Type.EVENT; }