From 35d5fb2f03e2a7a4316bfce6e68123c45f87c71b Mon Sep 17 00:00:00 2001 From: Andreas Stadelmeier Date: Mon, 7 May 2018 15:12:07 +0200 Subject: [PATCH] Fehler in ASTFactory mit Generischen FEldern beheben --- .../dhbwstuttgart/syntaxtree/factory/ASTFactory.java | 4 ++-- test/astfactory/ASTFactoryTest.java | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/de/dhbwstuttgart/syntaxtree/factory/ASTFactory.java b/src/de/dhbwstuttgart/syntaxtree/factory/ASTFactory.java index 52921c5d..efd20831 100644 --- a/src/de/dhbwstuttgart/syntaxtree/factory/ASTFactory.java +++ b/src/de/dhbwstuttgart/syntaxtree/factory/ASTFactory.java @@ -37,7 +37,7 @@ public class ASTFactory { methoden.add(createMethod(method, jreClass)); } List felder = new ArrayList<>(); - for(java.lang.reflect.Field field : jreClass.getFields()){ + for(java.lang.reflect.Field field : jreClass.getDeclaredFields()){ felder.add(createField(field, name)); } int modifier = jreClass.getModifiers(); @@ -89,7 +89,7 @@ public class ASTFactory { } private static Field createField(java.lang.reflect.Field field, JavaClassName jreClass) { - return new Field(field.getName(), createType(field.getType(), jreClass, null), field.getModifiers(), new NullToken()); + return new Field(field.getName(), createType(field.getGenericType(), jreClass, null), field.getModifiers(), new NullToken()); } //private static RefType createType(Class classType) { diff --git a/test/astfactory/ASTFactoryTest.java b/test/astfactory/ASTFactoryTest.java index c3b62b0b..6285cf0a 100644 --- a/test/astfactory/ASTFactoryTest.java +++ b/test/astfactory/ASTFactoryTest.java @@ -1,6 +1,9 @@ package astfactory; //import javafx.collections.ObservableList; +import de.dhbwstuttgart.syntaxtree.ClassOrInterface; +import de.dhbwstuttgart.syntaxtree.factory.ASTFactory; +import de.dhbwstuttgart.syntaxtree.type.GenericRefType; import org.junit.Test; import java.lang.reflect.ParameterizedType; @@ -19,4 +22,13 @@ public class ASTFactoryTest extends HashMap{ System.out.println(Arrays.toString(arguments)); System.out.println(((TypeVariable)arguments[1]).getGenericDeclaration()); } + + public static class GenericFieldTest{ + public G testField; + } + @Test + public void genericFieldTest(){ + ClassOrInterface test = ASTFactory.createClass(GenericFieldTest.class); + assertTrue(test.getFieldDecl().get(0).getType() instanceof GenericRefType); + } } \ No newline at end of file