Search in sources :

Example 26 with JvmAnnotationReference

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

the class AbstractTypeProviderTest method testAnnotatedParameter_03.

@Test
public void testAnnotatedParameter_03() throws Exception {
    String typeName = TestAnnotation.Annotated.class.getName();
    JvmAnnotationType annotationType = (JvmAnnotationType) getTypeProvider().findTypeByName(TestAnnotation.NestedAnnotation.class.getName());
    JvmDeclaredType type = (JvmDeclaredType) getTypeProvider().findTypeByName(typeName);
    JvmConstructor constructor = getConstructorFromType(type, TestAnnotation.Annotated.class, "Annotated(java.lang.String,java.lang.String,java.lang.String)");
    JvmAnnotationTarget target = constructor.getParameters().get(2);
    assertEquals(1, target.getAnnotations().size());
    JvmAnnotationReference annotationReference = target.getAnnotations().get(0);
    assertSame(annotationType, annotationReference.getAnnotation());
}
Also used : JvmAnnotationType(org.eclipse.xtext.common.types.JvmAnnotationType) JvmAnnotationTarget(org.eclipse.xtext.common.types.JvmAnnotationTarget) TestAnnotation(org.eclipse.xtext.common.types.testSetups.TestAnnotation) JvmConstructor(org.eclipse.xtext.common.types.JvmConstructor) JvmDeclaredType(org.eclipse.xtext.common.types.JvmDeclaredType) JvmAnnotationReference(org.eclipse.xtext.common.types.JvmAnnotationReference) Test(org.junit.Test)

Example 27 with JvmAnnotationReference

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

the class SourceBasedJdtTypeProviderTest method testClassAnnotationValue_09.

@Test
public void testClassAnnotationValue_09() 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 ", "@TestAnnotation( classArray = ) 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);
        List<JvmTypeReference> typeLiterals = ((JvmTypeAnnotationValue) value).getValues();
        assertEquals(0, typeLiterals.size());
    } 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) 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) StringInputStream(org.eclipse.xtext.util.StringInputStream) IJavaProject(org.eclipse.jdt.core.IJavaProject) JvmTypeReference(org.eclipse.xtext.common.types.JvmTypeReference) Test(org.junit.Test)

Example 28 with JvmAnnotationReference

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

the class SourceBasedJdtTypeProviderTest method testClassAnnotationValue_08.

@Test
public void testClassAnnotationValue_08() 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 ", "@TestAnnotation( classArray = { String.class, DoesNotExist.class, String.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);
        List<JvmTypeReference> typeLiterals = ((JvmTypeAnnotationValue) value).getValues();
        assertEquals(2, typeLiterals.size());
    } 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) 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) StringInputStream(org.eclipse.xtext.util.StringInputStream) IJavaProject(org.eclipse.jdt.core.IJavaProject) JvmTypeReference(org.eclipse.xtext.common.types.JvmTypeReference) Test(org.junit.Test)

Example 29 with JvmAnnotationReference

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

the class AbstractTypeProviderTest method testAnnotationAnnotationValue_03.

@Test
public void testAnnotationAnnotationValue_03() throws Exception {
    JvmAnnotationAnnotationValue value = (JvmAnnotationAnnotationValue) getMethodParameterAnnotationValue("annotationValue");
    assertEquals(1, value.getValues().size());
    JvmAnnotationReference annotationReference = value.getValues().get(0);
    assertEquals(TestAnnotation.NestedAnnotation.class.getName(), annotationReference.getAnnotation().getIdentifier());
    assertEquals(1, annotationReference.getValues().size());
    JvmStringAnnotationValue nestedValue = (JvmStringAnnotationValue) annotationReference.getValues().get(0);
    assertEquals(1, nestedValue.getValues().size());
    assertEquals("MyString", nestedValue.getValues().get(0));
}
Also used : JvmAnnotationAnnotationValue(org.eclipse.xtext.common.types.JvmAnnotationAnnotationValue) JvmStringAnnotationValue(org.eclipse.xtext.common.types.JvmStringAnnotationValue) JvmAnnotationReference(org.eclipse.xtext.common.types.JvmAnnotationReference) Test(org.junit.Test)

Example 30 with JvmAnnotationReference

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

the class AbstractTypeProviderTest method testDefaultAnnotationAnnotationValueByReference.

@Test
public void testDefaultAnnotationAnnotationValueByReference() throws Exception {
    String typeName = Bug334943Client.class.getName();
    JvmDeclaredType client = (JvmDeclaredType) getTypeProvider().findTypeByName(typeName);
    JvmOperation operation = Iterables.get(client.getDeclaredOperations(), 0);
    List<JvmAnnotationReference> annotations = operation.getAnnotations();
    assertEquals(1, annotations.size());
    JvmAnnotationReference annotation = annotations.get(0);
    for (JvmAnnotationValue value : annotation.getValues()) {
        if ("enumValue".equals(value.getValueName())) {
            JvmEnumAnnotationValue enumValue = (JvmEnumAnnotationValue) value;
            assertEquals(1, enumValue.getValues().size());
            assertEquals("FirstValue", enumValue.getValues().get(0).getSimpleName());
        }
    }
}
Also used : JvmOperation(org.eclipse.xtext.common.types.JvmOperation) JvmEnumAnnotationValue(org.eclipse.xtext.common.types.JvmEnumAnnotationValue) 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