private void buildTypeDeclarations(Collection<CompositePackageDescr> packages) { Map<String, AbstractClassTypeDeclarationDescr> unprocesseableDescrs = new HashMap<String, AbstractClassTypeDeclarationDescr>(); List<TypeDefinition> unresolvedTypes = new ArrayList<TypeDefinition>(); List<AbstractClassTypeDeclarationDescr> unsortedDescrs = new ArrayList<AbstractClassTypeDeclarationDescr>(); for (CompositePackageDescr packageDescr : packages) { for (TypeDeclarationDescr typeDeclarationDescr : packageDescr.getTypeDeclarations()) { unsortedDescrs.add(typeDeclarationDescr); } for (EnumDeclarationDescr enumDeclarationDescr : packageDescr.getEnumDeclarations()) { unsortedDescrs.add(enumDeclarationDescr); } } kBuilder .getTypeBuilder() .processTypeDeclarations(packages, unsortedDescrs, unresolvedTypes, unprocesseableDescrs); for (CompositePackageDescr packageDescr : packages) { for (ImportDescr importDescr : packageDescr.getImports()) { kBuilder.getPackageRegistry(packageDescr.getNamespace()).addImport(importDescr); } } }
public TypeDeclaration processTypeDeclaration( PackageRegistry pkgRegistry, AbstractClassTypeDeclarationDescr typeDescr) { TypeDeclaration type = kbuilder.getTypeBuilder().getExistingTypeDeclaration(typeDescr.getFullTypeName()); if (type == null) { type = new TypeDeclaration(typeDescr.getTypeName()); type.setResource(typeDescr.getResource()); // if is not new, search the already existing declaration and // compare them o see if they are at least compatibles // check whether it is necessary to build the class or not type.setNovel(TypeDeclarationUtils.isNovelClass(typeDescr, pkgRegistry)); type.setNature( type.isNovel() ? TypeDeclaration.Nature.DEFINITION : TypeDeclaration.Nature.DECLARATION); } processTypeAnnotations(typeDescr, type); return type; }