@Override public <T> T mapRequest( EndpointParamDef endpointParamDef, RestxRequest request, RestxRequestMatch match, EndpointParameterKind parameterKind) { List<String> values = parameterKind.extractQueryParamStringedValuesFor(endpointParamDef, request, match); if(values == null) { return null; } final Optional<AggregateType> aggregateType = AggregateType.fromType(endpointParamDef.getRawType().getCanonicalName()); if(!aggregateType.isPresent()) { throw new IllegalStateException("Called mapRequest() on base type aggregate whereas it is not considered as an aggregate !"); } final Class aggregatedType = AggregateType.aggregatedTypeOf(endpointParamDef.getType()); List convertedValues = FluentIterable.from(values).transform(new Function<String, Object>() { @Override public Object apply(String requestValue) { return baseTypeEndpointParameterMapper.convertRequestParamValue(Optional.fromNullable(requestValue), aggregatedType, aggregatedType); } }).toList(); return (T) aggregateType.get().createFrom(convertedValues, aggregatedType); }
@Override public <T> T mapRequest( EndpointParamDef endpointParamDef, RestxRequest request, RestxRequestMatch match, EndpointParameterKind parameterKind) { List<String> values = parameterKind.extractQueryParamStringedValuesFor(endpointParamDef, request, match); if(values == null) { return null; } final Optional<AggregateType> aggregateType = AggregateType.fromType(endpointParamDef.getRawType().getCanonicalName()); if(!aggregateType.isPresent()) { throw new IllegalStateException("Called mapRequest() on base type aggregate whereas it is not considered as an aggregate !"); } final Class aggregatedType = AggregateType.aggregatedTypeOf(endpointParamDef.getType()); List convertedValues = FluentIterable.from(values).transform(new Function<String, Object>() { @Override public Object apply(String requestValue) { return baseTypeEndpointParameterMapper.convertRequestParamValue(Optional.fromNullable(requestValue), aggregatedType, aggregatedType); } }).toList(); return (T) aggregateType.get().createFrom(convertedValues, aggregatedType); }