Search in sources :

Example 6 with JvmAnnotationReference

use of org.eclipse.xtext.common.types.JvmAnnotationReference in project xtext-eclipse by eclipse.

the class AbstractTypeProviderTest method getExplicitAnnotationValue.

public JvmAnnotationValue getExplicitAnnotationValue(String name, JvmAnnotationTarget target) {
    JvmAnnotationReference annotationReference = target.getAnnotations().get(0);
    for (JvmAnnotationValue value : annotationReference.getExplicitValues()) {
        if (name.equals(value.getValueName()))
            return value;
    }
    fail("Cannot find annotationValue " + name);
    return null;
}
Also used : JvmAnnotationReference(org.eclipse.xtext.common.types.JvmAnnotationReference) JvmAnnotationValue(org.eclipse.xtext.common.types.JvmAnnotationValue)

Example 7 with JvmAnnotationReference

use of org.eclipse.xtext.common.types.JvmAnnotationReference in project xtext-eclipse by eclipse.

the class AbstractTypeProviderTest method testBug427098.

@Test
public void testBug427098() {
    String typeName = Bug427098.class.getName();
    JvmDeclaredType type = (JvmDeclaredType) getTypeProvider().findTypeByName(typeName);
    JvmAnnotationReference annotationReference = type.getAnnotations().get(0);
    JvmTypeAnnotationValue annotationValue = getClassArrayAnnotationValue(annotationReference);
    assertEquals("classArray", annotationValue.getOperation().getSimpleName());
    List<JvmTypeReference> typeReferences = annotationValue.getValues();
    assertEquals(5, typeReferences.size());
    assertTypeReference("int", typeReferences, 0);
    assertTypeReference("void", typeReferences, 1);
    assertTypeReference("double[][][]", typeReferences, 2);
    assertTypeReference("CharSequence[]", typeReferences, 3);
    assertTypeReference("Iterable", typeReferences, 4);
}
Also used : JvmTypeAnnotationValue(org.eclipse.xtext.common.types.JvmTypeAnnotationValue) JvmTypeReference(org.eclipse.xtext.common.types.JvmTypeReference) JvmDeclaredType(org.eclipse.xtext.common.types.JvmDeclaredType) JvmAnnotationReference(org.eclipse.xtext.common.types.JvmAnnotationReference) Test(org.junit.Test)

Example 8 with JvmAnnotationReference

use of org.eclipse.xtext.common.types.JvmAnnotationReference in project xtext-eclipse by eclipse.

the class AbstractTypeProviderTest method testAnnotatedParameter_04.

@Test
public void testAnnotatedParameter_04() throws Exception {
    String typeName = TestAnnotation.Annotated.class.getName();
    JvmAnnotationType annotationType = (JvmAnnotationType) getTypeProvider().findTypeByName(TestAnnotation.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(0);
    assertEquals(2, target.getAnnotations().size());
    JvmAnnotationReference annotationReference = target.getAnnotations().get(0);
    assertSame(annotationType, annotationReference.getAnnotation());
    annotationType = (JvmAnnotationType) getTypeProvider().findTypeByName(TestAnnotation.NestedAnnotation.class.getName());
    annotationReference = target.getAnnotations().get(1);
    assertSame(annotationType, annotationReference.getAnnotation());
}
Also used : JvmAnnotationType(org.eclipse.xtext.common.types.JvmAnnotationType) JvmOperation(org.eclipse.xtext.common.types.JvmOperation) JvmAnnotationTarget(org.eclipse.xtext.common.types.JvmAnnotationTarget) TestAnnotation(org.eclipse.xtext.common.types.testSetups.TestAnnotation) JvmDeclaredType(org.eclipse.xtext.common.types.JvmDeclaredType) JvmAnnotationReference(org.eclipse.xtext.common.types.JvmAnnotationReference) Test(org.junit.Test)

Example 9 with JvmAnnotationReference

use of org.eclipse.xtext.common.types.JvmAnnotationReference in project xtext-eclipse by eclipse.

the class AbstractTypeProviderTest method testAnnotationWithStringDefault_03.

@Test
public void testAnnotationWithStringDefault_03() throws Exception {
    String typeName = TestAnnotationWithStringDefault.AnnotatedInterface.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);
}
Also used : TestAnnotationWithStringDefault(org.eclipse.xtext.common.types.testSetups.TestAnnotationWithStringDefault) JvmDeclaredType(org.eclipse.xtext.common.types.JvmDeclaredType) JvmAnnotationReference(org.eclipse.xtext.common.types.JvmAnnotationReference) Test(org.junit.Test)

Example 10 with JvmAnnotationReference

use of org.eclipse.xtext.common.types.JvmAnnotationReference in project xtext-eclipse by eclipse.

the class SourceBasedJdtTypeProviderTest method testClassAnnotationValue_07.

@Test
public void testClassAnnotationValue_07() throws Exception {
    IJavaProject project = projectProvider.getJavaProject(null);
    String typeName = EmptyAbstractClass.class.getName();
    IFile javaFile = (IFile) project.getProject().findMember(new Path("src/" + typeName.replace('.', '/') + ".java"));
    assertNotNull(javaFile);
    String content = Files.readStreamIntoString(javaFile.getContents());
    try {
        String newContent = content.replace("public abstract ", "@SimpleAnnotation( type = DoesNotExist.class ) public abstract ");
        javaFile.setContents(new StringInputStream(newContent), IResource.NONE, new NullProgressMonitor());
        JvmDeclaredType type = (JvmDeclaredType) getTypeProvider().findTypeByName(typeName);
        List<JvmAnnotationReference> annotations = type.getAnnotations();
        assertEquals(1, annotations.size());
        JvmAnnotationReference annotation = annotations.get(0);
        assertEquals(1, annotation.getExplicitValues().size());
        JvmAnnotationValue value = annotation.getExplicitValues().get(0);
        assertTrue(value instanceof JvmTypeAnnotationValue);
        assertTrue(((JvmTypeAnnotationValue) value).getValues().isEmpty());
    } finally {
        javaFile.setContents(new StringInputStream(content), IResource.NONE, new NullProgressMonitor());
    }
}
Also used : Path(org.eclipse.core.runtime.Path) NullProgressMonitor(org.eclipse.core.runtime.NullProgressMonitor) JvmTypeAnnotationValue(org.eclipse.xtext.common.types.JvmTypeAnnotationValue) StringInputStream(org.eclipse.xtext.util.StringInputStream) IJavaProject(org.eclipse.jdt.core.IJavaProject) IFile(org.eclipse.core.resources.IFile) JvmDeclaredType(org.eclipse.xtext.common.types.JvmDeclaredType) JvmAnnotationReference(org.eclipse.xtext.common.types.JvmAnnotationReference) JvmAnnotationValue(org.eclipse.xtext.common.types.JvmAnnotationValue) Test(org.junit.Test)

Aggregations

JvmAnnotationReference (org.eclipse.xtext.common.types.JvmAnnotationReference)47 Test (org.junit.Test)23 JvmDeclaredType (org.eclipse.xtext.common.types.JvmDeclaredType)15 JvmAnnotationValue (org.eclipse.xtext.common.types.JvmAnnotationValue)11 JvmAnnotationType (org.eclipse.xtext.common.types.JvmAnnotationType)9 JvmOperation (org.eclipse.xtext.common.types.JvmOperation)7 JvmAnnotationAnnotationValue (org.eclipse.xtext.common.types.JvmAnnotationAnnotationValue)6 JvmAnnotationTarget (org.eclipse.xtext.common.types.JvmAnnotationTarget)6 JvmTypeAnnotationValue (org.eclipse.xtext.common.types.JvmTypeAnnotationValue)6 JvmTypeReference (org.eclipse.xtext.common.types.JvmTypeReference)6 EObject (org.eclipse.emf.ecore.EObject)5 AnnotationReference (org.eclipse.xtend.lib.macro.declaration.AnnotationReference)5 StringConcatenation (org.eclipse.xtend2.lib.StringConcatenation)5 JvmStringAnnotationValue (org.eclipse.xtext.common.types.JvmStringAnnotationValue)5 Procedure1 (org.eclipse.xtext.xbase.lib.Procedures.Procedure1)5 TestAnnotation (org.eclipse.xtext.common.types.testSetups.TestAnnotation)4 TestAnnotationWithStringDefault (org.eclipse.xtext.common.types.testSetups.TestAnnotationWithStringDefault)4 Extension (org.eclipse.xtext.xbase.lib.Extension)4 IFile (org.eclipse.core.resources.IFile)3 NullProgressMonitor (org.eclipse.core.runtime.NullProgressMonitor)3