All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.jangaroo.jooc.model.CompilationUnitModelResolver Maven / Gradle / Ivy

The newest version!
package net.jangaroo.jooc.model;

import javax.annotation.Nonnull;

/**
 * Base class for CompilationUniteModelResolvers with some convenience methods.
 */
public abstract class CompilationUnitModelResolver {

  public abstract CompilationUnitModel resolveCompilationUnit(@Nonnull String qName);

  public boolean implementsInterface(CompilationUnitModel classCompilationUnitModel, String anInterface) {
    if (classCompilationUnitModel == null) {
      return false;
    }
    ClassModel classModel = classCompilationUnitModel.getClassModel();
    if (classModel.isInterface() && anInterface.equals(classCompilationUnitModel.getQName())) {
      return true;
    }
    for (String interfaceName : classModel.getInterfaces()) {
      CompilationUnitModel compilationUnitModel = resolveCompilationUnit(interfaceName);
      if (compilationUnitModel == null) {
        throw new NullPointerException("AS3 compilation unit not found: " + interfaceName);
      }
      if (implementsInterface(compilationUnitModel, anInterface)) {
        return true;
      }
    }
    return implementsInterface(getSuperclassCompilationUnit(classModel), anInterface);
  }

  public CompilationUnitModel getSuperclassCompilationUnit(ClassModel classModel) {
    String superclass = classModel.getSuperclass();
    return superclass == null ? null : resolveCompilationUnit(superclass);
  }

  public ClassModel getSuperclass(ClassModel classModel) {
    CompilationUnitModel superclassCompilationUnit = getSuperclassCompilationUnit(classModel);
    return superclassCompilationUnit == null ? null : superclassCompilationUnit.getClassModel();
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy