コード例 #1
0
  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);
      }
    }
  }
コード例 #2
0
  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;
  }