diff --git a/logicaldoc-webservice/src/main/java/com/logicaldoc/webservice/doc/model/JavaLanguageVariable.java b/logicaldoc-webservice/src/main/java/com/logicaldoc/webservice/doc/model/JavaLanguageVariable.java index 1df4f6daa..f86658ab0 100644 --- a/logicaldoc-webservice/src/main/java/com/logicaldoc/webservice/doc/model/JavaLanguageVariable.java +++ b/logicaldoc-webservice/src/main/java/com/logicaldoc/webservice/doc/model/JavaLanguageVariable.java @@ -34,6 +34,8 @@ public Class getType() { } public void setType(Class type) { + if (type == null) + throw new RuntimeException("null type"); this.type = type; } diff --git a/logicaldoc-webservice/src/main/java/com/logicaldoc/webservice/doc/service/JavaLanguageVariableFactory.java b/logicaldoc-webservice/src/main/java/com/logicaldoc/webservice/doc/service/JavaLanguageVariableFactory.java index f05af9d01..a56a1ad9d 100644 --- a/logicaldoc-webservice/src/main/java/com/logicaldoc/webservice/doc/service/JavaLanguageVariableFactory.java +++ b/logicaldoc-webservice/src/main/java/com/logicaldoc/webservice/doc/service/JavaLanguageVariableFactory.java @@ -5,6 +5,8 @@ import java.lang.annotation.Annotation; import java.lang.reflect.Field; import java.lang.reflect.Method; +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; @@ -45,10 +47,15 @@ public static JavaLanguageVariable createVariableFromField(Field field) { variable.setRequired(isVariableRequired(annotation)); variable.setDescription(getVariableDescription(annotation)); } - - if (isClassArrayOrCollection(field.getType())) - variable.setType(field.getType().getComponentType()); - else + + if (isClassArrayOrCollection(field.getType())) { + if(field.getGenericType() instanceof ParameterizedType aType){ + Type[] fieldArgTypes = aType.getActualTypeArguments(); + variable.setType((Class)fieldArgTypes[0]); + }else { + variable.setType(field.getType().getComponentType()); + } + } else variable.setType(GenericsUtils.getFieldGenericType(field)); variable.setMultiOccurs(isClassArrayOrCollection(field.getType())); return variable;