Java 类java.lang.annotation.ElementType 实例源码

项目:GitHub    文件:IncludeTypes.java   
void use() {
  // this immutable type (package style used)
  ImIncludeTypes.builder().build();
  // included on this type (package style used)
  ImSerializable.builder().build();
  // included on package (package style used)
  ImTicker.builder().read(1).build();

  // included in IncludeNestedTypes
  ImmutableIncludeNestedTypes.Retention retention =
      ImmutableIncludeNestedTypes.Retention.builder()
          .value(RetentionPolicy.CLASS)
          .build();

  // included in IncludeNestedTypes
  ImmutableIncludeNestedTypes.Target target =
      ImmutableIncludeNestedTypes.Target.builder()
          .value(ElementType.CONSTRUCTOR, ElementType.ANNOTATION_TYPE)
          .build();

  // package applied style "copyWith*" test
  // see PackageStyle
  retention.copyWithValue(RetentionPolicy.RUNTIME);
  target.copyWithValue(ElementType.CONSTRUCTOR, ElementType.LOCAL_VARIABLE);
}
项目:GitHub    文件:Annotations.java   
static boolean annotationMatchesTarget(Element annotationElement, ElementType elementType) {
  @Nullable Target target = annotationElement.getAnnotation(Target.class);
  if (target != null) {
    ElementType[] targetTypes = target.value();
    if (targetTypes.length == 0) {
      return false;
    }
    boolean found = false;
    for (ElementType t : targetTypes) {
      if (t == elementType) {
        found = true;
      }
    }
    if (!found) {
      return false;
    }
  }
  return true;
}
项目:GitHub    文件:ValueAttribute.java   
public List<CharSequence> getBuilderAttributeAnnotation() {
  if (containingType.isGenerateJacksonProperties()
      && protoclass().isJacksonDeserialized()) {
    List<CharSequence> jacksonPropertyAnnotation = Annotations.getAnnotationLines(element,
        Collections.singleton(Annotations.JACKSON_PROPERTY),
        false,
        ElementType.METHOD,
        importsResolver,
        nullability);
    List<CharSequence> annotations = Lists.newArrayList();
    if (jacksonPropertyAnnotation.isEmpty()) {
      annotations.add(jacksonPropertyAnnotation());
    }
    annotations.addAll(Annotations.getAnnotationLines(element,
        Collections.<String>emptySet(),
        protoclass().environment().hasJacksonLib(),
        ElementType.METHOD,
        importsResolver,
        nullability));
    return annotations;
  }
  return ImmutableList.of();
}
项目:GitHub    文件:ValueAttribute.java   
private List<CharSequence> extractAnnotationsForElement(ElementType elementType, Set<String> additionalAnnotations) {
  List<CharSequence> allAnnotations = Lists.newArrayListWithCapacity(1);

  boolean dontHaveJsonPropetyAnnotationAlready = Annotations.getAnnotationLines(element,
      Collections.singleton(Annotations.JACKSON_PROPERTY),
      false,
      elementType,
      importsResolver,
      nullability).isEmpty();

  if (dontHaveJsonPropetyAnnotationAlready) {
    allAnnotations.add(jacksonPropertyAnnotation());
  }

  allAnnotations.addAll(
      Annotations.getAnnotationLines(element,
          Sets.union(additionalAnnotations,
              protoclass().styles().style().additionalJsonAnnotationsNames()),
          protoclass().environment().hasJacksonLib(),
          elementType,
          importsResolver,
          nullability));

  return allAnnotations;
}
项目:hibernate-ogm-redis    文件:TTLConfiguredProgrammaticallyTest.java   
@Test
public void ttlOnPropertyLevel() throws Exception {
    Map<String, Object> settings = new HashMap<String, Object>();

    TestHelper.configureOptionsFor( settings, Redis.class )
            .associationStorage( AssociationStorageType.ASSOCIATION_DOCUMENT )
            .entity( Cloud.class )
            .property( "backupSnowFlakes", ElementType.METHOD )
            .ttl( 1, TimeUnit.DAYS );

    setupSessionFactory( settings );
    createCloudWithTwoProducedAndOneBackupSnowflake();

    // property-level options are applied to the type as well.
    // not sure, whether this is a good idea.
    assertThat( cloudTtl() ).isGreaterThan( TimeUnit.HOURS.toMillis( 23 ) )
            .isLessThanOrEqualTo( TimeUnit.HOURS.toMillis( 24 ) );

    assertThat( associationTtl() ).isGreaterThan( TimeUnit.HOURS.toMillis( 23 ) )
            .isLessThanOrEqualTo( TimeUnit.HOURS.toMillis( 24 ) );
}
项目:beanvalidation-benchmark    文件:Jsr303Annotator.java   
private JDefinedClass buildTemplateConstraint(String name) {
    try {
        JDefinedClass tplConstraint = codeModel._class(Config.CFG.getBasePackageName() + ".annot."+name, ClassType.ANNOTATION_TYPE_DECL);
        tplConstraint.annotate(Documented.class);
        tplConstraint.annotate(Retention.class).param("value", RetentionPolicy.RUNTIME);
        tplConstraint.annotate(Target.class).paramArray("value").param(ElementType.TYPE).param(ElementType.ANNOTATION_TYPE).param(ElementType.FIELD).param(ElementType.METHOD);

        // Using direct as I don't know how to build default { } with code model
        tplConstraint.direct("\n" + "    Class<?>[] groups() default {};\n" + "    String message() default \"Invalid value\";\n" + "    Class<? extends Payload>[] payload() default {};\n");

        // Hack to force the import of javax.validation.Payload
        tplConstraint.javadoc().addThrows((JClass) codeModel._ref(Payload.class)).add("Force import");

        return tplConstraint;
    } catch (JClassAlreadyExistsException e) {
        throw new RuntimeException("Tried to create an already existing class: " + name, e);
    }
}
项目:oscm    文件:CommandContextTest.java   
@Test
public void testGetEnumInvalid() {
    args.put("key", "CONSTRUCTOR");
    Set<ElementType> all = EnumSet.noneOf(ElementType.class);
    all.add(ElementType.FIELD);
    all.add(ElementType.METHOD);
    System.out.print(all);
    try {
        ctx.getEnum("key", all);
        fail("IllegalArgumentException expected.");
    } catch (IllegalArgumentException e) {
        assertEquals(
                "Invalid parameter value 'CONSTRUCTOR' for key. Valid values are [FIELD, METHOD].",
                e.getMessage());
    }
}
项目:atlas    文件:AnnotationLister.java   
/**
 * Inspects a class annotation.
 *
 * @param cf {@code non-null;} class file
 * @param ann {@code non-null;} annotation
 */
private void visitClassAnnotation(DirectClassFile cf,
        BaseAnnotations ann) {

    if (!args.eTypes.contains(ElementType.TYPE)) {
        return;
    }

    for (Annotation anAnn : ann.getAnnotations().getAnnotations()) {
        String annClassName
                = anAnn.getType().getClassType().getClassName();
        if (args.aclass.equals(annClassName)) {
            printMatch(cf);
        }
    }
}
项目:javaide    文件:AnnotationLister.java   
/**
 * Inspects a class annotation.
 *
 * @param cf {@code non-null;} class file
 * @param ann {@code non-null;} annotation
 */
private void visitClassAnnotation(DirectClassFile cf,
        BaseAnnotations ann) {

    if (!args.eTypes.contains(ElementType.TYPE)) {
        return;
    }

    for (Annotation anAnn : ann.getAnnotations().getAnnotations()) {
        String annClassName
                = anAnn.getType().getClassType().getClassName();
        if (args.aclass.equals(annClassName)) {
            printMatch(cf);
        }
    }
}
项目:bootstrap    文件:ValidationJsonExceptionTest.java   
@Test
public void testConstraintViolationExceptionParameter() {
    final Wine bean = new Wine();
    final Set<ConstraintViolation<?>> violations = new LinkedHashSet<>();

    final ConstraintHelper helper = new ConstraintHelper();

    final ConstraintDescriptor<NotEmpty> notEmptyNameDescriptor = new ConstraintDescriptorImpl<>(helper, (Member) null,
            getAnnotation("name", NotEmpty.class), ElementType.FIELD);
    PathImpl path = PathImpl.createPathFromString("name");
    violations.add(ConstraintViolationImpl.<Wine> forParameterValidation("name-Empty", null, null, "interpolated", Wine.class, bean, new Object(),
            "value", path, notEmptyNameDescriptor, ElementType.PARAMETER, null, null));
    path.addParameterNode("parameter1", 0);

    final ConstraintViolationException violationException = Mockito.mock(ConstraintViolationException.class);
    Mockito.when(violationException.getConstraintViolations()).thenReturn(violations);

    final ValidationJsonException validationJsonException = new ValidationJsonException(violationException);
    Assert.assertFalse(validationJsonException.getErrors().isEmpty());
    Assert.assertEquals("{parameter1=[{rule=name-Empty}]}", validationJsonException.getErrors().toString());
}
项目:multidex-maker    文件:AnnotationLister.java   
/**
 * Inspects a class annotation.
 *
 * @param cf {@code non-null;} class file
 * @param ann {@code non-null;} annotation
 */
private void visitClassAnnotation(DirectClassFile cf,
        BaseAnnotations ann) {

    if (!args.eTypes.contains(ElementType.TYPE)) {
        return;
    }

    for (Annotation anAnn : ann.getAnnotations().getAnnotations()) {
        String annClassName
                = anAnn.getType().getClassType().getClassName();
        if (args.aclass.equals(annClassName)) {
            printMatch(cf);
        }
    }
}
项目:xtext-extras    文件:XAnnotationUtil.java   
public Set<ElementType> getAnnotationTargets(JvmAnnotationType annotation) {
    EList<JvmAnnotationReference> annotations = annotation.getAnnotations();
    for (JvmAnnotationReference annoRef : annotations) {
        if (Target.class.getName().equals(annoRef.getAnnotation().getIdentifier())) {
            EList<JvmAnnotationValue> values = annoRef.getValues();
            JvmAnnotationValue value = values.isEmpty() ? null : values.get(0);
            if (value instanceof JvmEnumAnnotationValue) {
                Set<ElementType> result = newHashSet();
                for (JvmEnumerationLiteral elementType : ((JvmEnumAnnotationValue) value).getValues()) {
                    final String simpleName = elementType.getSimpleName();
                    result.add(ElementType.valueOf(simpleName));
                }
                return result;
            }
        }
    }
    return emptySet();
}
项目:listing    文件:TypeDeclaration.java   
/** Return simple name representation of this type declaration. */
public Name toName() {
  String packageName = "";
  if (getCompilationUnit() != null) {
    packageName = getCompilationUnit().getPackageName();
  }
  List<String> simpleNames = new ArrayList<>();
  TypeDeclaration current = this;
  while (current != null) {
    simpleNames.add(0, current.getName());
    current = current.getEnclosingDeclaration();
  }
  Name name = new Name(packageName, simpleNames);
  name.getModifiers().addAll(getModifiers());
  name.setTarget(ElementType.TYPE);
  return name;
}
项目:listing    文件:Name.java   
/** Create new Name based on the array of Strings, with the first denoting the package name. */
public static Name of(String... names) {
  requireNonNull(names, "names");
  if (names.length == 0) {
    throw new IllegalArgumentException("non-empty names array expected");
  }
  List<String> simples = new ArrayList<>(Arrays.asList(names));
  Iterator<String> iterator = simples.iterator();
  String packageName = iterator.next();
  iterator.remove();
  if (!simples.stream().allMatch(SourceVersion::isIdentifier)) {
    throw new IllegalArgumentException("non-name in: " + simples);
  }
  Name name = new Name(packageName, simples);
  if (names.length == 1) {
    name.setTarget(ElementType.PACKAGE);
  } else if (names.length == 2) {
    name.setTarget(ElementType.TYPE);
  }
  return name;
}
项目:listing    文件:ImportDeclarationsTest.java   
@Test
void singleStaticImport() throws Exception {
  Member micros = TimeUnit.class.getField("MICROSECONDS");
  Name parameter = Name.of("java.lang.annotation", "ElementType", "PARAMETER");

  parameter.setTarget(ElementType.FIELD);
  parameter.setModifiers(Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL);
  check(
      imports ->
          imports
              .addSingleStaticImport(Thread.State.NEW)
              .addSingleStaticImport(micros)
              .addSingleStaticImport(parameter),
      "import static java.lang.Thread.State.NEW;",
      "import static java.lang.annotation.ElementType.PARAMETER;",
      "import static java.util.concurrent.TimeUnit.MICROSECONDS;");
}
项目:listing    文件:MethodParameterTest.java   
@Test
void simple() {
  assertEquals("int i", MethodParameter.of(int.class, "i").list());
  assertEquals("int... ia1", MethodParameter.of(int[].class, "ia1").setVariable(true).list());
  assertEquals("int[]... ia2", MethodParameter.of(int[][].class, "ia2").setVariable(true).list());
  MethodParameter parameter =
      new MethodParameter().setType(new TypeVariable()).setName("t").setFinal(true);
  parameter.addAnnotation(new Annotation(Name.of("", "A")));
  assertEquals("final @A T t", parameter.list());
  assertEquals(ElementType.PARAMETER, new MethodParameter().getAnnotationTarget());
  IllegalStateException expected =
      expectThrows(
          IllegalStateException.class,
          () -> MethodParameter.of(int.class, "i").setVariable(true));
  assertEquals(true, expected.toString().contains("array type expected"));
}
项目:listing    文件:NameTest.java   
@Test
void testToString() {
  assertEquals("Name{a.b.X, target=Optional[TYPE], modifiers=[]}", of("a.b", "X").toString());
  testToString(of(Object.class), "java.lang.Object", "public");
  testToString(of(byte.class), "byte", "public, abstract, final");
  testToString(of(Object[].class), "Object[]", "public, abstract, final");
  testToString(of(Object[][].class), "Object[][]", "public, abstract, final");
  testToString(of(Name.class), Name.class.getCanonicalName(), "public");
  testToString(of(Character.Subset.class), "java.lang.Character.Subset", "public, static");
  testToString(of(Thread.State.class), "java.lang.Thread.State", "public, static, final");
  testToString(
      of(Thread.State.NEW),
      "java.lang.Thread.State.NEW",
      ElementType.FIELD,
      "public, static, final");
  testToString(NormalClassDeclaration.of("Abc").toName(), "Abc", "");
  testToString(CompilationUnit.of("abc").declareClass("Abc").toName(), "abc.Abc", "");
}
项目:BoostSRL    文件:Utils.java   
/** Creates the power set of the items in elements.
 *
 * This version of the method will modify the elements list
 * as the power set is built.
 *
 * @param <ElementType> Type of elements.
 * @param elements Items to create power set over.
 * @return Returns power set of elements.
 */
private static <ElementType> Set<Set<ElementType>> getPowerSetDestructive(Set<ElementType> elements) {
    if ( elements.isEmpty() ) {
        return Collections.EMPTY_SET;
    }
    else if ( elements.size() == 1 ) {
        HashSet<Set<ElementType>> s = new HashSet<Set<ElementType>>();
        s.add(Collections.EMPTY_SET);
        s.add(Collections.singleton(elements.iterator().next()));
        return s;
    }
    else {
        ElementType e = elements.iterator().next();  // Next is gaurantee to work, since we check isEmpty
        elements.remove(e);

        Set<Set<ElementType>> pT = getPowerSetDestructive(elements);
        Set<Set<ElementType>> cross = getCrossProduct(pT, e);
        pT.addAll(cross);

        return pT;
    }
}
项目:listing    文件:JavaMirrorsTest.java   
@Test
void rootAnnotation() {
  CompilationUnit unit = CompilationUnit.of("test");

  Annotation annotation = Annotation.of(All.class);
  annotation.addObject("o", Annotation.of(Target.class, ElementType.TYPE));
  annotation.addObject("p", 4711);
  annotation.addObject("r", Double.class);
  annotation.addObject("r", Float.class);

  NormalClassDeclaration type = unit.declareClass("Root");
  type.addAnnotation(annotation);
  type.addTypeParameter(TypeParameter.of("X"));
  mark(type.declareField(TypeVariable.of("X"), "i"));

  Counter counter = new Counter();
  Compilation.compile(null, emptyList(), asList(counter), asList(unit.toJavaFileObject()));
  assertEquals(1, counter.annotations.size());
  assertEquals(annotation.list(), counter.annotations.get(0).list());
}
项目:turbine    文件:ConstBinder.java   
static AnnotationMetadata bindAnnotationMetadata(
    TurbineTyKind kind, Iterable<AnnoInfo> annotations) {
  if (kind != TurbineTyKind.ANNOTATION) {
    return null;
  }
  RetentionPolicy retention = null;
  ImmutableSet<ElementType> target = null;
  ClassSymbol repeatable = null;
  for (AnnoInfo annotation : annotations) {
    switch (annotation.sym().binaryName()) {
      case "java/lang/annotation/Retention":
        retention = bindRetention(annotation);
        break;
      case "java/lang/annotation/Target":
        target = bindTarget(annotation);
        break;
      case "java/lang/annotation/Repeatable":
        repeatable = bindRepeatable(annotation);
        break;
      default:
        break;
    }
  }
  return new AnnotationMetadata(retention, target, repeatable);
}
项目:turbine    文件:ConstBinder.java   
private static ImmutableSet<ElementType> bindTarget(AnnoInfo annotation) {
  ImmutableSet.Builder<ElementType> result = ImmutableSet.builder();
  Const val = annotation.values().get("value");
  switch (val.kind()) {
    case ARRAY:
      for (Const element : ((ArrayInitValue) val).elements()) {
        if (element.kind() == Kind.ENUM_CONSTANT) {
          bindTargetElement(result, (EnumConstantValue) element);
        }
      }
      break;
    case ENUM_CONSTANT:
      bindTargetElement(result, (EnumConstantValue) val);
      break;
    default:
      break;
  }
  return result.build();
}
项目:turbine    文件:DisambiguateTypeAnnotations.java   
private static MethodInfo bindMethod(Env<ClassSymbol, TypeBoundClass> env, MethodInfo base) {
  ImmutableList.Builder<AnnoInfo> declarationAnnotations = ImmutableList.builder();
  Type returnType =
      disambiguate(
          env,
          base.name().equals("<init>") ? ElementType.CONSTRUCTOR : ElementType.METHOD,
          base.returnType(),
          base.annotations(),
          declarationAnnotations);
  return new MethodInfo(
      base.sym(),
      base.tyParams(),
      returnType,
      bindParameters(env, base.parameters()),
      base.exceptions(),
      base.access(),
      base.defaultValue(),
      base.decl(),
      declarationAnnotations.build(),
      base.receiver() != null ? bindParam(env, base.receiver()) : null);
}
项目:turbine    文件:DisambiguateTypeAnnotations.java   
/**
 * Moves type annotations in {@code annotations} to {@code type}, and adds any declaration
 * annotations on {@code type} to {@code declarationAnnotations}.
 */
private static Type disambiguate(
    Env<ClassSymbol, TypeBoundClass> env,
    ElementType declarationTarget,
    Type type,
    ImmutableList<AnnoInfo> annotations,
    Builder<AnnoInfo> declarationAnnotations) {
  // desugar @Repeatable annotations before disambiguating: annotation containers may target
  // a subset of the types targeted by their element annotation
  annotations = groupRepeated(env, annotations);
  ImmutableList.Builder<AnnoInfo> typeAnnotations = ImmutableList.builder();
  for (AnnoInfo anno : annotations) {
    Set<ElementType> target = env.get(anno.sym()).annotationMetadata().target();
    if (target.contains(ElementType.TYPE_USE)) {
      typeAnnotations.add(anno);
    }
    if (target.contains(declarationTarget)) {
      declarationAnnotations.add(anno);
    }
  }
  return addAnnotationsToType(type, typeAnnotations.build());
}
项目:turbine    文件:BytecodeBoundClass.java   
@Override
public AnnotationMetadata get() {
  if ((access() & TurbineFlag.ACC_ANNOTATION) != TurbineFlag.ACC_ANNOTATION) {
    return null;
  }
  RetentionPolicy retention = null;
  ImmutableSet<ElementType> target = null;
  ClassSymbol repeatable = null;
  for (ClassFile.AnnotationInfo annotation : classFile.get().annotations()) {
    switch (annotation.typeName()) {
      case "Ljava/lang/annotation/Retention;":
        retention = bindRetention(annotation);
        break;
      case "Ljava/lang/annotation/Target;":
        target = bindTarget(annotation);
        break;
      case "Ljava/lang/annotation/Repeatable;":
        repeatable = bindRepeatable(annotation);
        break;
      default:
        break;
    }
  }
  return new AnnotationMetadata(retention, target, repeatable);
}
项目:turbine    文件:BytecodeBoundClass.java   
private static ImmutableSet<ElementType> bindTarget(AnnotationInfo annotation) {
  ImmutableSet.Builder<ElementType> result = ImmutableSet.builder();
  ElementValue val = annotation.elementValuePairs().get("value");
  switch (val.kind()) {
    case ARRAY:
      for (ElementValue element : ((ArrayValue) val).elements()) {
        if (element.kind() == Kind.ENUM) {
          bindTargetElement(result, (EnumConstValue) element);
        }
      }
      break;
    case ENUM:
      bindTargetElement(result, (EnumConstValue) val);
      break;
    default:
      break;
  }
  return result.build();
}
项目:kawa-mirror    文件:Declaration.java   
public void compileAnnotations (AttrContainer container, ElementType etype)
{
  if (container == null)
    return;
  int n = numAnnotations();
  for (int i = 0;  i < n;  i++)
    {
      Object ann = getAnnotation(i).valueIfConstant();
      if (ann != null)
        {
          AnnotationEntry ae = (AnnotationEntry) Proxy.getInvocationHandler(ann);
          if (container != null && ae.hasTarget(etype))
            RuntimeAnnotationsAttr.maybeAddAnnotation(container, ae);
        }
    }
}
项目:Lyrics    文件:TypeModel.java   
public TypeModel(Type type, Modifier[] modifiers, VariableModel extendsType, Set<VariableModel> interfaces, List<GenericVariableModel> genericVariables, List<AnnotationModel> annotations, Map<String, FieldModel> fields, Map<String, MethodModel> methods, InclusionType inclusion, List<String> values, Map<String, Object[]> valuesWithFields, List<String> fieldOrder, SubTypeModel subTypes, RetentionPolicy retention, ElementType[] elementTypes, List<String> customConstructorFields) {
    this.type = type;
    this.modifiers = modifiers;
    this.extendsType = extendsType;
    this.interfaces = interfaces;
    this.genericVariables = genericVariables;
    this.annotations = annotations;
    this.fields = fields;
    this.methods = methods;
    this.inclusion = inclusion;
    this.values = values;
    this.valuesWithFields = valuesWithFields;
    this.fieldOrder = fieldOrder;
    this.subTypes = subTypes;
    this.retention = retention;
    this.elementTypes = elementTypes;
    this.customConstructorFields = customConstructorFields;
}
项目:dex    文件:AnnotationLister.java   
/**
 * Inspects a class annotation.
 *
 * @param cf {@code non-null;} class file
 * @param ann {@code non-null;} annotation
 */
private void visitClassAnnotation(DirectClassFile cf,
        BaseAnnotations ann) {

    if (!args.eTypes.contains(ElementType.TYPE)) {
        return;
    }

    for (Annotation anAnn : ann.getAnnotations().getAnnotations()) {
        String annClassName
                = anAnn.getType().getClassType().getClassName();
        if (args.aclass.equals(annClassName)) {
            printMatch(cf);
        }
    }
}
项目:naum    文件:ClassTest.java   
@Test
public void loadAndCheckAnnotatedAnnotation() throws Exception {
    ClassInfo classInfo = ClassInfo.newAnnotation()
        .name("org.kordamp.naum.processor.klass.AnnotatedAnnotation")
        .iface(Annotation.class.getName())
        .build();
    classInfo.addToAnnotations(annotationInfo()
        .name(Retention.class.getName())
        .annotationValue("value", new EnumValue(RetentionPolicy.class.getName(), "SOURCE"))
        .build());
    classInfo.addToAnnotations(annotationInfo()
        .name(Target.class.getName())
        .annotationValue("value", newArrayValue(asList(
                newEnumValue(ElementType.class.getName(), ElementType.TYPE.name()),
                newEnumValue(ElementType.class.getName(), ElementType.FIELD.name()))
        ))
        .build());
    loadAndCheck("org/kordamp/naum/processor/klass/AnnotatedAnnotation.class", (klass) -> {
        assertThat(klass.getContentHash(), equalTo(classInfo.getContentHash()));
        assertThat(klass, equalTo(classInfo));
    });
}
项目:wildfly-swarm    文件:GenericConfig.java   
/**
 * Note that:
 *
 * <pre>
 * If no annotation matches the specified parameter, the property will be ignored.
 * </pre>
 *
 * @param key
 * @param expectedType
 * @return the configured value
 */
private <U> U lookup(String key, Class<U> expectedType) {
    Config config = getConfig();
    Optional<U> value = null;
    if (ElementType.METHOD.equals(annotationSource)) {
        // <classname>/<methodname>/<annotation>/<parameter>
        value = config.getOptionalValue(getConfigKeyForMethod() + key, expectedType);
    } else {
        // <classname>/<annotation>/<parameter>
        value = config.getOptionalValue(getConfigKeyForClass() + key, expectedType);
    }
    if (!value.isPresent()) {
        // <annotation>/<parameter>
        value = config.getOptionalValue(getConfigType().getSimpleName() + "/" + key, expectedType);
    }
    // annotation values
    return value.isPresent() ? value.get() : getConfigFromAnnotation(key);
}
项目:JCL    文件:AnnotationLister.java   
/**
 * Inspects a class annotation.
 *
 * @param cf {@code non-null;} class file
 * @param ann {@code non-null;} annotation
 */
private void visitClassAnnotation(DirectClassFile cf,
        BaseAnnotations ann) {

    if (!args.eTypes.contains(ElementType.TYPE)) {
        return;
    }

    for (Annotation anAnn : ann.getAnnotations().getAnnotations()) {
        String annClassName
                = anAnn.getType().getClassType().getClassName();
        if (args.aclass.equals(annClassName)) {
            printMatch(cf);
        }
    }
}
项目:GitHub    文件:Annotations.java   
static List<CharSequence> getAnnotationLines(
    Element element,
    Set<String> includeAnnotations,
    boolean includeJacksonAnnotations,
    ElementType elementType,
    Function<String, String> importsResolver,
    @Nullable NullabilityAnnotationInfo nullability) {
  return getAnnotationLines(element,
      includeAnnotations,
      false,
      includeJacksonAnnotations,
      elementType,
      importsResolver,
      nullability);
}
项目:GitHub    文件:Annotations.java   
static List<CharSequence> getAnnotationLines(
    Element element,
    Set<String> includeAnnotations,
    boolean includeAllAnnotations,
    boolean includeJacksonAnnotations,
    ElementType elementType,
    Function<String, String> importsResolver,
    @Nullable NullabilityAnnotationInfo nullability) {
  List<CharSequence> lines = Lists.newArrayList();

  Set<String> seenAnnotations = new HashSet<>();
  for (AnnotationMirror annotation : element.getAnnotationMirrors()) {
    TypeElement annotationElement = (TypeElement) annotation.getAnnotationType().asElement();

    if (annotationTypeMatches(element,
        annotationElement,
        includeAnnotations,
        includeAllAnnotations,
        includeJacksonAnnotations,
        seenAnnotations,
        lines,
        importsResolver,
        elementType,
        nullability)
        && annotationMatchesTarget(annotationElement, elementType)) {
      lines.add(AnnotationMirrors.toCharSequence(annotation, importsResolver));
    }
  }
  return lines;
}
项目:GitHub    文件:ValueType.java   
public List<CharSequence> getBuilderAnnotations() {
  Optional<DeclaringType> declaringType = constitution.protoclass().declaringType();
  if (declaringType.isPresent() && declaringType.get().jacksonSerializeMode() == JacksonMode.BUILDER) {
    return Annotations.getAnnotationLines(
        element,
        Collections.<String>emptySet(),
        true,
        ElementType.TYPE,
        newTypeStringResolver(),
        null);
  }
  return ImmutableList.of();
}
项目:GitHub    文件:ValueType.java   
public List<CharSequence> passedAnnotations() {
  return Annotations.getAnnotationLines(
      element,
      Sets.union(
          constitution.style().passAnnotationsNames(),
          constitution.style().additionalJsonAnnotationsNames()),
      false,
      ElementType.TYPE,
      newTypeStringResolver(),
      null);
}
项目:GitHub    文件:ValueAttribute.java   
public List<CharSequence> getAnnotations() {
  if (containingType.isGenerateJacksonProperties()) {
    return extractAnnotationsForElement(
        ElementType.METHOD,
        protoclass().styles().style().passAnnotationsNames());

  }
  return Annotations.getAnnotationLines(element,
      protoclass().styles().style().passAnnotationsNames(),
      false,
      ElementType.METHOD,
      importsResolver,
      nullability);
}
项目:GitHub    文件:ValueAttribute.java   
public List<CharSequence> getFieldAnnotations() {
  return Annotations.getAnnotationLines(element,
      protoclass().styles().style().passAnnotationsNames(),
      false,
      ElementType.FIELD,
      importsResolver,
      null/* do not propagate nullable here */);
}
项目:GitHub    文件:ValueAttribute.java   
public CharSequence getConstructorParameterAnnotations() {
  List<CharSequence> annotations =
      Annotations.getAnnotationLines(element,
          protoclass().styles().style().passAnnotationsNames(),
          false,
          ElementType.PARAMETER,
          importsResolver,
          nullability);

  if (!annotations.isEmpty()) {
    return Joiner.on(' ').join(annotations).concat(" ");
  }

  return "";
}
项目:GitHub    文件:NullabilityAnnotationInfo.java   
@Value.Lazy
String asLocalPrefix() {
  boolean applicableToLocal = Annotations.annotationMatchesTarget(
      element(),
      ElementType.LOCAL_VARIABLE);

  return applicableToLocal
      ? asPrefix()
      : "";
}
项目:oscm    文件:CommandContextTest.java   
@Test
public void testGetEnumOptionalInvalid() {
    args.put("key", "CONSTRUCTOR");
    Set<ElementType> all = EnumSet.noneOf(ElementType.class);
    all.add(ElementType.FIELD);
    all.add(ElementType.METHOD);
    assertEquals(null, ctx.getEnumOptional("key", all));
}