コード例 #1
0
ファイル: AbstractJavaSource.java プロジェクト: ahmedae/core
  @Override
  public String resolveType(final String type) {
    String original = type;
    String result = type;

    // Strip away any characters that might hinder the type matching process
    if (Types.isArray(result)) {
      original = Types.stripArray(result);
      result = Types.stripArray(result);
    }

    if (Types.isGeneric(result)) {
      original = Types.stripGenerics(result);
      result = Types.stripGenerics(result);
    }

    if (Types.isPrimitive(result)) {
      return result;
    }

    // Check for direct import matches first since they are the fastest and least work-intensive
    if (Types.isSimpleName(result)) {
      if (!hasImport(type) && Types.isJavaLang(type)) {
        result = "java.lang." + result;
      }

      if (result.equals(original)) {
        for (Import imprt : getImports()) {
          if (Types.areEquivalent(result, imprt.getQualifiedName())) {
            result = imprt.getQualifiedName();
            break;
          }
        }
      }
    }

    // If we didn't match any imports directly, we might have a wild-card/on-demand import.
    if (Types.isSimpleName(result)) {
      for (Import imprt : getImports()) {
        if (imprt.isWildcard()) {
          // TODO warn if no wild-card resolvers are configured
          // TODO Test wild-card/on-demand import resolving
          for (WildcardImportResolver r : getImportResolvers()) {
            result = r.resolve(this, result);
            if (Types.isQualified(result)) break;
          }
        }
      }
    }

    // No import matches and no wild-card/on-demand import matches means this class is in the same
    // package.
    if (Types.isSimpleName(result)) {
      if (getPackage() != null) result = getPackage() + "." + result;
    }

    return result;
  }
コード例 #2
0
ファイル: JavaPlugin.java プロジェクト: ryanbradley/core
 @Command("list-imports")
 @RequiresResource(JavaResource.class)
 public void listImports(final PipeOut out) throws FileNotFoundException {
   List<Import> imports = resource.getJavaSource().getImports();
   for (Import i : imports) {
     String str = "import " + (i.isStatic() ? "static " : "") + i.getQualifiedName() + ";";
     str = JavaColorizer.format(out, str);
     out.println(str);
   }
 }
コード例 #3
0
ファイル: AbstractJavaSource.java プロジェクト: ahmedae/core
 @Override
 public O removeImport(final String name) {
   for (Import i : getImports()) {
     if (i.getQualifiedName().equals(name)) {
       removeImport(i);
       break;
     }
   }
   return (O) this;
 }
コード例 #4
0
ファイル: AbstractJavaSource.java プロジェクト: ahmedae/core
 @Override
 public Import getImport(final String className) {
   List<Import> imports = getImports();
   for (Import imprt : imports) {
     if (imprt.getQualifiedName().equals(className) || imprt.getSimpleName().equals(className)) {
       return imprt;
     }
   }
   return null;
 }
コード例 #5
0
ファイル: AbstractJavaSource.java プロジェクト: ahmedae/core
 @Override
 public boolean hasImport(final Import imprt) {
   return hasImport(imprt.getQualifiedName());
 }
コード例 #6
0
ファイル: AbstractJavaSource.java プロジェクト: ahmedae/core
 @Override
 public Import getImport(final Import imprt) {
   return getImport(imprt.getQualifiedName());
 }
コード例 #7
0
ファイル: AbstractJavaSource.java プロジェクト: ahmedae/core
 @Override
 public Import addImport(final Import imprt) {
   return addImport(imprt.getQualifiedName()).setStatic(imprt.isStatic());
 }