@Override public ValueReference apply(AnnotationParameter parameter) { Preconditions.checkArgument(parameter != null); return parameter.getValue(); } });
public static Map<String, Object> evaluateAnnotationParameters(Annotation annotation) { Map<String, Object> result = Maps.newHashMap(); for (AnnotationParameter param : annotation.getParameters()) { String parameterName = param.getName(); ValueReference ref = param.getValue(); if (ref != null) { final Object valueReference = CorePatternLanguageHelper.getValue(ref); if (!Strings.isNullOrEmpty(parameterName) && valueReference != null) { result.put(parameterName, valueReference); } } } return result; }
if (expectedParameterType != null && parameter.getValue() != null && !expectedParameterType.isAssignableFrom(parameter.getValue().getClass())) { error(String.format(ANNOTATION_PARAMETER_TYPE_ERROR, getTypeName(parameter.getValue().getClass()), getTypeName(expectedParameterType)), parameter, PatternLanguagePackage.Literals.ANNOTATION_PARAMETER__NAME, annotation.getParameters() .indexOf(parameter), IssueCodes.MISTYPED_ANNOTATION_PARAMETER); } else if (parameter.getValue() instanceof VariableValue) { VariableValue value = (VariableValue) parameter.getValue(); if (value.getValue().getVariable() == null) { error(String.format("Unknown variable %s", value.getValue().getVar()), parameter,
/** * Contexts: * AnnotationParameter returns AnnotationParameter * * Constraint: * (name=ID value=AnnotationValueReference) */ protected void sequence_AnnotationParameter(ISerializationContext context, AnnotationParameter semanticObject) { if (errorAcceptor != null) { if (transientValues.isValueTransient(semanticObject, PatternLanguagePackage.Literals.ANNOTATION_PARAMETER__NAME) == ValueTransient.YES) errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, PatternLanguagePackage.Literals.ANNOTATION_PARAMETER__NAME)); if (transientValues.isValueTransient(semanticObject, PatternLanguagePackage.Literals.ANNOTATION_PARAMETER__VALUE) == ValueTransient.YES) errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, PatternLanguagePackage.Literals.ANNOTATION_PARAMETER__VALUE)); } SequenceFeeder feeder = createSequencerFeeder(context, semanticObject); feeder.accept(grammarAccess.getAnnotationParameterAccess().getNameIDTerminalRuleCall_0_0(), semanticObject.getName()); feeder.accept(grammarAccess.getAnnotationParameterAccess().getValueAnnotationValueReferenceParserRuleCall_2_0(), semanticObject.getValue()); feeder.finish(); }