Example #1
0
    @Value.Lazy
    Optional<DeclaringPackage> namedParentPackage() {
      String parentPackageName = SourceNames.parentPackageName(element());
      if (!parentPackageName.isEmpty()) {
        @Nullable
        PackageElement parentPackage =
            environment().processing().getElementUtils().getPackageElement(parentPackageName);

        if (parentPackage != null) {
          return Optional.of(
              interner()
                  .forPackage(
                      ImmutableProto.DeclaringPackage.builder()
                          .environment(environment())
                          .interner(interner())
                          .element(parentPackage)
                          .build()));
        }
      }
      return Optional.absent();
    }
  /**
   * Actual abstract value type that is definitive model for the value type.
   *
   * @return abstract value type name forms
   */
  @Value.Lazy
  public NameForms typeAbstract() {
    List<String> classSegments = Lists.newArrayListWithExpectedSize(2);
    Element e = SourceNames.collectClassSegments(protoclass().sourceElement(), classSegments);
    verify(e instanceof PackageElement);

    String packageOf = ((PackageElement) e).getQualifiedName().toString();
    String relative = DOT_JOINER.join(classSegments);
    boolean relativeAlreadyQualified = false;

    if (!implementationPackage().equals(packageOf)) {
      relative = DOT_JOINER.join(packageOf, relative);
      relativeAlreadyQualified = true;
    }

    return ImmutableConstitution.NameForms.builder()
        .simple(names().typeAbstract)
        .relativeRaw(relative)
        .packageOf(packageOf)
        .genericArgs(generics().args())
        .relativeAlreadyQualified(relativeAlreadyQualified)
        .visibility(protoclass().visibility())
        .build();
  }
Example #3
0
 @Value.Derived
 public String name() {
   return SourceNames.sourceQualifiedNameFor(sourceElement());
 }