use of org.eclipse.xtext.common.types.JvmAnnotationReference in project xtext-eclipse by eclipse.
the class JdtBasedTypeFactory method createAnnotationReference.
/**
* @since 2.4
*/
protected JvmAnnotationReference createAnnotationReference(/* @NonNull */
IAnnotationBinding annotation) {
JvmAnnotationReference annotationReference = TypesFactory.eINSTANCE.createJvmAnnotationReference();
ITypeBinding annotationType = annotation.getAnnotationType();
annotationReference.setAnnotation(createAnnotationProxy(annotationType));
InternalEList<JvmAnnotationValue> values = (InternalEList<JvmAnnotationValue>) annotationReference.getExplicitValues();
IMemberValuePairBinding[] allMemberValuePairs = annotation.getDeclaredMemberValuePairs();
for (IMemberValuePairBinding memberValuePair : allMemberValuePairs) {
IMethodBinding methodBinding = memberValuePair.getMethodBinding();
if (methodBinding != null) {
try {
values.addUnique(createAnnotationValue(annotationType, memberValuePair.getValue(), methodBinding));
} catch (NullPointerException npe) {
// memberValuePair#getValue may throw an NPE if the methodBinding has no return type
if (methodBinding.getReturnType() != null) {
throw npe;
} else {
if (log.isDebugEnabled()) {
log.debug(npe.getMessage(), npe);
}
}
}
}
}
return annotationReference;
}
use of org.eclipse.xtext.common.types.JvmAnnotationReference in project xtext-eclipse by eclipse.
the class AbstractTypeProviderTest method testAnnotationWithStringDefault_01.
@Test
public void testAnnotationWithStringDefault_01() throws Exception {
String typeName = TestAnnotationWithStringDefault.Annotated.class.getName();
JvmDeclaredType type = (JvmDeclaredType) getTypeProvider().findTypeByName(typeName);
List<JvmAnnotationReference> annotations = type.getAnnotations();
assertEquals(1, annotations.size());
JvmAnnotationReference annotationReference = annotations.get(0);
assertEquals(TestAnnotationWithStringDefault.class.getName(), annotationReference.getAnnotation().getIdentifier());
checkDefaultAnnotationValues(annotationReference);
}
use of org.eclipse.xtext.common.types.JvmAnnotationReference in project xtext-eclipse by eclipse.
the class AbstractTypeProviderTest method testAnnotationWithStringDefault_02.
@Test
public void testAnnotationWithStringDefault_02() throws Exception {
String typeName = AnnotatedInterfaceWithStringDefault.class.getName();
JvmDeclaredType type = (JvmDeclaredType) getTypeProvider().findTypeByName(typeName);
List<JvmAnnotationReference> annotations = type.getAnnotations();
assertEquals(1, annotations.size());
JvmAnnotationReference annotationReference = annotations.get(0);
assertEquals(TestAnnotationWithStringDefault.class.getName(), annotationReference.getAnnotation().getIdentifier());
checkDefaultAnnotationValuesAnnotatedExternalClass(annotationReference);
}
use of org.eclipse.xtext.common.types.JvmAnnotationReference in project xtext-eclipse by eclipse.
the class AbstractTypeProviderTest method testAnnotatedParameter_06.
@Test
public void testAnnotatedParameter_06() throws Exception {
String typeName = TestAnnotation.Annotated.class.getName();
JvmAnnotationType annotationType = (JvmAnnotationType) getTypeProvider().findTypeByName(TestAnnotation.NestedAnnotation.class.getName());
JvmDeclaredType type = (JvmDeclaredType) getTypeProvider().findTypeByName(typeName);
JvmOperation method = getMethodFromType(type, TestAnnotation.Annotated.class, "method(java.lang.String,java.lang.String,java.lang.String)");
JvmAnnotationTarget target = method.getParameters().get(2);
assertEquals(1, target.getAnnotations().size());
JvmAnnotationReference annotationReference = target.getAnnotations().get(0);
assertSame(annotationType, annotationReference.getAnnotation());
}
use of org.eclipse.xtext.common.types.JvmAnnotationReference in project xtext-eclipse by eclipse.
the class AbstractTypeProviderTest method getDefaultOrExplicitAnnotationValue.
public JvmAnnotationValue getDefaultOrExplicitAnnotationValue(String name, JvmAnnotationTarget target) {
JvmAnnotationReference annotationReference = target.getAnnotations().get(0);
for (JvmAnnotationValue value : annotationReference.getValues()) {
if (name.equals(value.getValueName()))
return value;
}
fail("Cannot find annotationValue " + name);
return null;
}
Aggregations