javax.lang.model.element.TypeElement#getEnclosingElement ( )源码实例Demo

下面列出了javax.lang.model.element.TypeElement#getEnclosingElement ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: FreeBuilder   文件: QualifiedName.java
/**
 * Returns a {@link QualifiedName} for {@code type}.
 */
public static QualifiedName of(TypeElement type) {
  switch (type.getNestingKind()) {
    case TOP_LEVEL:
      PackageElement pkg = (PackageElement) type.getEnclosingElement();
      return QualifiedName.of(pkg.getQualifiedName().toString(), type.getSimpleName().toString());

    case MEMBER:
      List<String> reversedNames = new ArrayList<String>();
      reversedNames.add(type.getSimpleName().toString());
      Element parent = type.getEnclosingElement();
      while (parent.getKind() != ElementKind.PACKAGE) {
        reversedNames.add(parent.getSimpleName().toString());
        parent = parent.getEnclosingElement();
      }
      return new QualifiedName(
          ((PackageElement) parent).getQualifiedName().toString(),
          ImmutableList.copyOf(Lists.reverse(reversedNames)));

    default:
      throw new IllegalArgumentException("Cannot determine qualified name of " + type);
  }
}
 
源代码2 项目: takari-lifecycle   文件: ProcessorImpl.java
@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
  for (Element element : roundEnv.getElementsAnnotatedWith(Annotation.class)) {
    try {
      TypeElement cls = (TypeElement) element;
      PackageElement pkg = (PackageElement) cls.getEnclosingElement();
      String clsSimpleName = getGeneratedClassName(cls, prefix);
      String pkgName = pkg.getQualifiedName().toString();
      FileObject sourceFile = createFile(pkgName, clsSimpleName, element);
      BufferedWriter w = new BufferedWriter(sourceFile.openWriter());
      try {
        w.append("package ").append(pkgName).append(";");
        w.newLine();
        appendClassAnnotations(w);
        w.append("public class ").append(clsSimpleName);
        appendBody(pkgName, clsSimpleName, w);
      } finally {
        w.close();
      }
    } catch (IOException e) {
      e.printStackTrace();
      processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR, e.getMessage(), element);
    }
  }
  return false; // not "claimed" so multiple processors can be tested
}
 
源代码3 项目: turbine   文件: TurbineElementTest.java
@Test
public void typeElement() {
  TypeElement e = factory.typeElement(new ClassSymbol("java/util/Map$Entry"));
  TypeElement m = (TypeElement) e.getEnclosingElement();
  TypeMirror t = e.asType();

  assertThat(e.getSimpleName().toString()).isEqualTo("Entry");
  assertThat(e.getQualifiedName().toString()).isEqualTo("java.util.Map.Entry");
  assertThat(e.toString()).isEqualTo("java.util.Map.Entry");
  assertThat(e.asType().toString()).isEqualTo("java.util.Map.Entry<K,V>");
  assertThat(e.getKind()).isEqualTo(ElementKind.INTERFACE);
  assertThat(e.getNestingKind()).isEqualTo(NestingKind.MEMBER);
  assertThat(e.getModifiers())
      .containsExactly(Modifier.PUBLIC, Modifier.ABSTRACT, Modifier.STATIC);

  assertThat(m.getSimpleName().toString()).isEqualTo("Map");
  assertThat(m.getSuperclass().getKind()).isEqualTo(TypeKind.NONE);
  assertThat(m.getQualifiedName().toString()).isEqualTo("java.util.Map");
  assertThat(m.toString()).isEqualTo("java.util.Map");
  assertThat(m.asType().toString()).isEqualTo("java.util.Map<K,V>");
  assertThat(m.getNestingKind()).isEqualTo(NestingKind.TOP_LEVEL);
  assertThat(m.getSuperclass().getKind()).isEqualTo(TypeKind.NONE);
  assertThat(m.getEnclosingElement().getKind()).isEqualTo(ElementKind.PACKAGE);

  assertThat(t.getKind()).isEqualTo(TypeKind.DECLARED);
}
 
源代码4 项目: quarkus   文件: ExtensionAnnotationProcessor.java
private StringBuilder getRelativeBinaryName(TypeElement te, StringBuilder b) {
    final Element enclosing = te.getEnclosingElement();
    if (enclosing instanceof TypeElement) {
        getRelativeBinaryName((TypeElement) enclosing, b);
        b.append('$');
    }
    b.append(te.getSimpleName());
    return b;
}
 
源代码5 项目: buck   文件: InferredPackageElementTest.java
@Test
public void testToStringSimpleNamePackage() throws IOException {
  compile(Joiner.on('\n').join("public class Foo extends pkg.Bar.Baz {", "}"));

  DeclaredType superclass = (DeclaredType) elements.getTypeElement("Foo").getSuperclass();
  TypeElement superclassElement = (TypeElement) superclass.asElement();
  TypeElement superclassEnclosingTypeElement =
      (TypeElement) superclassElement.getEnclosingElement();
  PackageElement element =
      (InferredPackageElement) superclassEnclosingTypeElement.getEnclosingElement();

  assertEquals("pkg", element.toString());
}
 
源代码6 项目: core   文件: StoreInitProcessor.java
@Override
protected boolean onProcess(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
    for (Element e : roundEnv.getElementsAnnotatedWith(Store.class)) {
        TypeElement storeElement = (TypeElement) e;
        PackageElement packageElement = (PackageElement) storeElement.getEnclosingElement();
        String packageName = packageElement.getQualifiedName().toString();
        String storeDelegate = storeElement.getSimpleName().toString();
        String storeAdapter = storeDelegate + ADAPTER_SUFFIX;
        StoreInfo storeInfo = new StoreInfo(packageName, storeDelegate, storeAdapter);
        storeInfos.add(storeInfo);
        debug("Discovered store / store adapter [%s]", storeInfo);
    }

    // Don't generate files in onLastRound, since the generated GIN module
    // needs to be picked up by the GinProcessor!
    if (!storeInfos.isEmpty()) {
        debug("Generating code for store ginjector");
        code(STORE_GINJECTOR_TEMPLATE, STORE_GINJECTOR_PACKAGE, STORE_GINJECTOR_CLASS,
                context(STORE_GINJECTOR_PACKAGE, STORE_GINJECTOR_CLASS));

        debug("Generating code for store module");
        code(STORE_MODULE_TEMPLATE, STORE_MODULE_PACKAGE, STORE_MODULE_CLASS,
                context(STORE_MODULE_PACKAGE, STORE_MODULE_CLASS));

        info("Successfully generated store initialization classes [%s] and [%s].",
                STORE_GINJECTOR_CLASS, STORE_MODULE_CLASS);
        storeInfos.clear();
    }
    return false;
}
 
源代码7 项目: j2objc   文件: GeneratedTypeElement.java
public static GeneratedTypeElement mutableCopy(TypeElement element) {
  GeneratedTypeElement generatedTypeElement =
      new GeneratedTypeElement(
          element.getSimpleName().toString(),
          element.getKind(),
          element.getEnclosingElement(),
          element.getSuperclass(),
          element.getNestingKind(),
          ElementUtil.getHeader(element),
          ElementUtil.isIosType(element),
          ElementUtil.isSynthetic(element));
  generatedTypeElement.addModifiers(element.getModifiers());
  generatedTypeElement.addAnnotationMirrors(element.getAnnotationMirrors());
  return generatedTypeElement;
}
 
源代码8 项目: netbeans   文件: ELHyperlinkProvider.java
Void printType(TypeElement e, DeclaredType dt, Boolean highlightName) {
    modifier(e.getModifiers());
    switch (e.getKind()) {
        case CLASS:
            result.append("class ");
            break;
        case INTERFACE:
            result.append("interface ");
            break;
        case ENUM:
            result.append("enum ");
            break;
        case ANNOTATION_TYPE:
            result.append("@interface ");
            break;
        default:
            break;
    }
    Element enclosing = e.getEnclosingElement();

    if (enclosing == info.getElementUtilities().enclosingTypeElement(e)) {
        result.append(((TypeElement) enclosing).getQualifiedName());
        result.append('.');
        boldStartCheck(highlightName);
        result.append(e.getSimpleName());
        boldStopCheck(highlightName);
    } else {
        result.append(e.getQualifiedName());
    }

    if (dt != null)
        dumpRealTypeArguments(dt.getTypeArguments());

    return null;
}
 
源代码9 项目: takari-lifecycle   文件: MyAnnotationProcessor.java
@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
  for (Element element : roundEnv.getElementsAnnotatedWith(MyAnnotation.class)) {
    try {
      TypeElement cls = (TypeElement) element;
      PackageElement pkg = (PackageElement) cls.getEnclosingElement();
      String clsSimpleName = "My" + cls.getSimpleName();
      String clsQualifiedName = pkg.getQualifiedName() + "." + clsSimpleName;
      JavaFileObject sourceFile =
          processingEnv.getFiler().createSourceFile(clsQualifiedName, element);
      OutputStream ios = sourceFile.openOutputStream();
      OutputStreamWriter writer = new OutputStreamWriter(ios, "UTF-8");
      BufferedWriter w = new BufferedWriter(writer);
      try {
        w.append("package ").append(pkg.getQualifiedName()).append(";");
        w.newLine();
        w.append("public class ").append(clsSimpleName).append(" { }");
      } finally {
        w.close();
        writer.close();
        ios.close();
      }
    } catch (IOException e) {
      e.printStackTrace();
    } 
  }
  return true;
}
 
private void generateCompositeTypeConstructor(final Filer filer, final TypeElement typeElement)
{
    String objectQualifiedClassName = typeElement.getQualifiedName().toString();
    String objectSimpleName = typeElement.getSimpleName().toString();
    String compositeTypeConstructorNameSimpleName = objectSimpleName + "Constructor";
    PackageElement packageElement = (PackageElement) typeElement.getEnclosingElement();
    final String compositeTypeConstructorPackage = packageElement.getQualifiedName() + ".codec";
    String compositeTypeConstructorName = compositeTypeConstructorPackage + "." + compositeTypeConstructorNameSimpleName;
    final CompositeType annotation = typeElement.getAnnotation(CompositeType.class);

    processingEnv.getMessager().printMessage(Diagnostic.Kind.NOTE, "Generating composite constructor file for " + objectQualifiedClassName);

    try
    {
        JavaFileObject factoryFile = filer.createSourceFile(compositeTypeConstructorName);
        PrintWriter pw = new PrintWriter(new OutputStreamWriter(factoryFile.openOutputStream(), "UTF-8"));
        pw.println("/*");
        for(String headerLine : License.LICENSE)
        {
            pw.println(" *" + headerLine);
        }
        pw.println(" */");
        pw.println();
        pw.print("package ");
        pw.print(compositeTypeConstructorPackage);
        pw.println(";");
        pw.println();

        pw.println("import java.util.List;");
        pw.println();
        pw.println("import org.apache.qpid.server.protocol.v1_0.codec.AbstractCompositeTypeConstructor;");
        pw.println("import org.apache.qpid.server.protocol.v1_0.codec.DescribedTypeConstructorRegistry;");
        pw.println("import org.apache.qpid.server.protocol.v1_0.type.AmqpErrorException;");
        pw.println("import org.apache.qpid.server.protocol.v1_0.type.Symbol;");
        pw.println("import org.apache.qpid.server.protocol.v1_0.type.UnsignedLong;");
        pw.println("import org.apache.qpid.server.protocol.v1_0.type.transport.AmqpError;");
        pw.println("import org.apache.qpid.server.protocol.v1_0.type.transport.Error;");
        pw.println("import " + objectQualifiedClassName + ";");
        pw.println();

        pw.println("public final class " + compositeTypeConstructorNameSimpleName + " extends AbstractCompositeTypeConstructor<"+ objectSimpleName +">");
        pw.println("{");
        pw.println("    private static final " + compositeTypeConstructorNameSimpleName + " INSTANCE = new " + compositeTypeConstructorNameSimpleName + "();");
        pw.println();

        pw.println("    public static void register(DescribedTypeConstructorRegistry registry)");
        pw.println("    {");
        pw.println("        registry.register(Symbol.valueOf(\"" + annotation.symbolicDescriptor() + "\"), INSTANCE);");
        pw.println(String.format("        registry.register(UnsignedLong.valueOf(%#016x), INSTANCE);", annotation.numericDescriptor()));
        pw.println("    }");
        pw.println();

        pw.println("    @Override");
        pw.println("    protected String getTypeName()");
        pw.println("    {");
        pw.println("        return " + objectSimpleName + ".class.getSimpleName();");
        pw.println("    }");
        pw.println();

        pw.println("    @Override");
        pw.println("    protected " + objectSimpleName + " construct(final FieldValueReader fieldValueReader) throws AmqpErrorException");
        pw.println("    {");
        pw.println("        " + objectSimpleName + " obj = new " + objectSimpleName + "();");
        pw.println();
        generateAssigners(pw, typeElement);
        pw.println("        return obj;");
        pw.println("    }");
        pw.println("}");
        pw.close();
    }
    catch (IOException e)
    {
        processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR,
                                                 "Failed to write composite constructor file: "
                                                 + compositeTypeConstructorName
                                                 + " - "
                                                 + e.getLocalizedMessage());
    }
}
 
源代码11 项目: TencentKona-8   文件: ApNavigator.java
public boolean isInnerClass(TypeElement clazz) {
    return clazz.getEnclosingElement() != null && !clazz.getModifiers().contains(Modifier.STATIC);
}
 
源代码12 项目: stitch   文件: ElementCheck.java
static void checkTopLevel(TypeElement e) {
    Element element = e.getEnclosingElement();
    if (element.getKind() != ElementKind.PACKAGE) {
        throw new IllegalStateException("@Component error: " + e.getQualifiedName() + " can not be inner class!");
    }
}
 
源代码13 项目: jdk8u60   文件: WebServiceVisitor.java
protected boolean isLegalImplementation(WebService webService, TypeElement classElement) {
    boolean isStateful = isStateful(classElement);

    Collection<Modifier> modifiers = classElement.getModifiers();
    if (!modifiers.contains(Modifier.PUBLIC)) {
        builder.processError(WebserviceapMessages.WEBSERVICEAP_WEBSERVICE_CLASS_NOT_PUBLIC(classElement.getQualifiedName()), classElement);
        return false;
    }
    if (modifiers.contains(Modifier.FINAL) && !isStateful) {
        builder.processError(WebserviceapMessages.WEBSERVICEAP_WEBSERVICE_CLASS_IS_FINAL(classElement.getQualifiedName()), classElement);
        return false;
    }
    if (modifiers.contains(Modifier.ABSTRACT) && !isStateful) {
        builder.processError(WebserviceapMessages.WEBSERVICEAP_WEBSERVICE_CLASS_IS_ABSTRACT(classElement.getQualifiedName()), classElement);
        return false;
    }
    boolean hasDefaultConstructor = false;
    for (ExecutableElement constructor : ElementFilter.constructorsIn(classElement.getEnclosedElements())) {
        if (constructor.getModifiers().contains(Modifier.PUBLIC) &&
                constructor.getParameters().isEmpty()) {
            hasDefaultConstructor = true;
            break;
        }
    }
    if (!hasDefaultConstructor && !isStateful) {
        if (classElement.getEnclosingElement() != null && !modifiers.contains(Modifier.STATIC)) {
            builder.processError(WebserviceapMessages.WEBSERVICEAP_WEBSERVICE_CLASS_IS_INNERCLASS_NOT_STATIC(
                    classElement.getQualifiedName()), classElement);
            return false;
        }

        builder.processError(WebserviceapMessages.WEBSERVICEAP_WEBSERVICE_NO_DEFAULT_CONSTRUCTOR(
                classElement.getQualifiedName()), classElement);
        return false;
    }
    if (webService.endpointInterface().isEmpty()) {
        if (!methodsAreLegal(classElement))
            return false;
    } else {
        TypeElement interfaceElement = getEndpointInterfaceElement(webService.endpointInterface(), classElement);
        if (!classImplementsSei(classElement, interfaceElement))
            return false;
    }

    return true;
}
 
源代码14 项目: jdk8u60   文件: ApNavigator.java
public boolean isInnerClass(TypeElement clazz) {
    return clazz.getEnclosingElement() != null && !clazz.getModifiers().contains(Modifier.STATIC);
}
 
源代码15 项目: openjdk-jdk8u   文件: ApNavigator.java
public boolean isInnerClass(TypeElement clazz) {
    return clazz.getEnclosingElement() != null && !clazz.getModifiers().contains(Modifier.STATIC);
}
 
源代码16 项目: hottub   文件: WebServiceVisitor.java
protected boolean isLegalImplementation(WebService webService, TypeElement classElement) {
    boolean isStateful = isStateful(classElement);

    Collection<Modifier> modifiers = classElement.getModifiers();
    if (!modifiers.contains(Modifier.PUBLIC)) {
        builder.processError(WebserviceapMessages.WEBSERVICEAP_WEBSERVICE_CLASS_NOT_PUBLIC(classElement.getQualifiedName()), classElement);
        return false;
    }
    if (modifiers.contains(Modifier.FINAL) && !isStateful) {
        builder.processError(WebserviceapMessages.WEBSERVICEAP_WEBSERVICE_CLASS_IS_FINAL(classElement.getQualifiedName()), classElement);
        return false;
    }
    if (modifiers.contains(Modifier.ABSTRACT) && !isStateful) {
        builder.processError(WebserviceapMessages.WEBSERVICEAP_WEBSERVICE_CLASS_IS_ABSTRACT(classElement.getQualifiedName()), classElement);
        return false;
    }
    boolean hasDefaultConstructor = false;
    for (ExecutableElement constructor : ElementFilter.constructorsIn(classElement.getEnclosedElements())) {
        if (constructor.getModifiers().contains(Modifier.PUBLIC) &&
                constructor.getParameters().isEmpty()) {
            hasDefaultConstructor = true;
            break;
        }
    }
    if (!hasDefaultConstructor && !isStateful) {
        if (classElement.getEnclosingElement() != null && !modifiers.contains(Modifier.STATIC)) {
            builder.processError(WebserviceapMessages.WEBSERVICEAP_WEBSERVICE_CLASS_IS_INNERCLASS_NOT_STATIC(
                    classElement.getQualifiedName()), classElement);
            return false;
        }

        builder.processError(WebserviceapMessages.WEBSERVICEAP_WEBSERVICE_NO_DEFAULT_CONSTRUCTOR(
                classElement.getQualifiedName()), classElement);
        return false;
    }
    if (webService.endpointInterface().isEmpty()) {
        if (!methodsAreLegal(classElement))
            return false;
    } else {
        TypeElement interfaceElement = getEndpointInterfaceElement(webService.endpointInterface(), classElement);
        if (!classImplementsSei(classElement, interfaceElement))
            return false;
    }

    return true;
}
 
源代码17 项目: openjdk-jdk8u-backup   文件: ApNavigator.java
public boolean isInnerClass(TypeElement clazz) {
    return clazz.getEnclosingElement() != null && !clazz.getModifiers().contains(Modifier.STATIC);
}
 
源代码18 项目: openjdk-8   文件: ApNavigator.java
public boolean isInnerClass(TypeElement clazz) {
    return clazz.getEnclosingElement() != null && !clazz.getModifiers().contains(Modifier.STATIC);
}
 
private String generateObjectFactory(final Filer filer, final ExecutableElement constructorElement)
{
    TypeElement classElement = (TypeElement) constructorElement.getEnclosingElement();
    String factoryName = classElement.getQualifiedName().toString() + "Factory";
    String factorySimpleName = classElement.getSimpleName().toString() + "Factory";
    String objectSimpleName = classElement.getSimpleName().toString();
    processingEnv.getMessager().printMessage(Diagnostic.Kind.NOTE, "Generating factory file for " + classElement.getQualifiedName().toString());

    PackageElement packageElement = (PackageElement) classElement.getEnclosingElement();

    try
    {
        JavaFileObject factoryFile = filer.createSourceFile(factoryName);
        PrintWriter pw = new PrintWriter(new OutputStreamWriter(factoryFile.openOutputStream(), "UTF-8"));
        pw.println("/*");
        for(String headerLine : License.LICENSE)
        {
            pw.println(" *" + headerLine);
        }
        pw.println(" */");
        pw.println();
        pw.print("package ");
        pw.print(packageElement.getQualifiedName());
        pw.println(";");
        pw.println();

        pw.println("import java.security.Principal;");
        pw.println("import java.util.Map;");
        pw.println();
        pw.println("import org.apache.qpid.server.configuration.updater.TaskExecutor;");
        pw.println("import org.apache.qpid.server.logging.EventLogger;");
        pw.println("import org.apache.qpid.server.model.ConfiguredObjectTypeRegistry;");
        pw.println("import org.apache.qpid.server.model.SystemConfig;");
        pw.println("import org.apache.qpid.server.plugin.PluggableService;");
        pw.println("import org.apache.qpid.server.plugin.SystemConfigFactory;");
        pw.println();
        pw.println("@PluggableService");
        pw.println("public final class " + factorySimpleName + " implements SystemConfigFactory<"+ objectSimpleName +">");
        pw.println("{");
        pw.println("    public " + factorySimpleName + "()");
        pw.println("    {");
        pw.println("    }");
        pw.println();
        pw.println("    @Override");
        pw.println("    public final String getType()");
        pw.println("    {");
        pw.println("        return ConfiguredObjectTypeRegistry.getType(" + objectSimpleName + ".class);");
        pw.println("    }");
        pw.println();
        pw.println("    @Override");
        pw.println("    public "+objectSimpleName+" newInstance(final TaskExecutor taskExecutor,");
        pw.println("                       final EventLogger eventLogger,");
        pw.println("                       final Principal systemPrincipal,");
        pw.println("                       final Map<String,Object> attributes)");
        pw.println("    {");
        pw.println("        return new "+objectSimpleName+"(taskExecutor, eventLogger, systemPrincipal, attributes);");
        pw.println("    }");
        pw.println("}");

        pw.close();
    }
    catch (IOException e)
    {
        processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR,
                                                 "Failed to write factory file: "
                                                 + factoryName
                                                 + " - "
                                                 + e.getLocalizedMessage());
    }

    return factoryName;
}
 
源代码20 项目: openjdk-8-source   文件: ApNavigator.java
public boolean isInnerClass(TypeElement clazz) {
    return clazz.getEnclosingElement() != null && !clazz.getModifiers().contains(Modifier.STATIC);
}