Skip to content
This repository was archived by the owner on Jul 12, 2023. It is now read-only.

Commit 03890b8

Browse files
committed
kurento-java: unflattedComplexType bug fix (allow generic types)
1 parent 1681372 commit 03890b8

File tree

1 file changed

+18
-5
lines changed
  • kurento-client/src/main/java/org/kurento/client/internal/transport/serialization

1 file changed

+18
-5
lines changed

kurento-client/src/main/java/org/kurento/client/internal/transport/serialization/ParamsFlattener.java

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@
4444
import org.slf4j.Logger;
4545
import org.slf4j.LoggerFactory;
4646

47+
import sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl;
48+
4749
public class ParamsFlattener {
4850

4951
private static final String MODULE_PROPERTY = "__module__";
@@ -442,15 +444,26 @@ private boolean isPrimitiveClass(Class<?> clazz) {
442444
private Object unflattedComplexType(Class<?> clazz, Props props, ObjectRefsManager manager) {
443445

444446
Constructor<?> constructor = clazz.getConstructors()[0];
445-
446-
Object[] constParams = new Object[constructor.getParameterTypes().length];
447-
447+
448+
List<Type> constClasses = new ArrayList<>();
449+
Class<?>[] parameterTypes = constructor.getParameterTypes();
450+
Type[] parameterGenericTypes = constructor.getGenericParameterTypes();
451+
for (int i = 0; i < parameterGenericTypes.length; i++) {
452+
if (parameterGenericTypes[i] instanceof ParameterizedTypeImpl) {
453+
// This is a class with a generic type
454+
// (for example, a java.util.List<java.lang.String>)
455+
constClasses.add(parameterGenericTypes[i]);
456+
} else {
457+
constClasses.add(parameterTypes[i]);
458+
}
459+
}
460+
461+
Object[] constParams = new Object[parameterTypes.length];
448462
List<String> paramNames = ParamAnnotationUtils.getParamNames(constructor);
449-
Class<?>[] constClasses = constructor.getParameterTypes();
450463

451464
for (int i = 0; i < constParams.length; i++) {
452465
String paramName = paramNames.get(i);
453-
constParams[i] = unflattenValue(paramName, constClasses[i], props.getProp(paramName),
466+
constParams[i] = unflattenValue(paramName, constClasses.get(i), props.getProp(paramName),
454467
manager);
455468
}
456469

0 commit comments

Comments
 (0)