mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-12 00:15:44 +01:00
Use streams
This commit is contained in:
@@ -1,7 +1,6 @@
|
|||||||
package sonia.scm.api.v2;
|
package sonia.scm.api.v2;
|
||||||
|
|
||||||
import com.fasterxml.jackson.databind.JsonNode;
|
import com.fasterxml.jackson.databind.JsonNode;
|
||||||
import com.google.common.collect.Lists;
|
|
||||||
|
|
||||||
import javax.annotation.Priority;
|
import javax.annotation.Priority;
|
||||||
import javax.ws.rs.Priorities;
|
import javax.ws.rs.Priorities;
|
||||||
@@ -12,6 +11,11 @@ import javax.ws.rs.core.MultivaluedMap;
|
|||||||
import javax.ws.rs.ext.Provider;
|
import javax.ws.rs.ext.Provider;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import static java.util.Arrays.stream;
|
||||||
|
import static java.util.Collections.emptyList;
|
||||||
|
import static java.util.Optional.ofNullable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>Post processor for rest requests filtering json responses when a {@value PARAMETER_FIELDS} query
|
* <p>Post processor for rest requests filtering json responses when a {@value PARAMETER_FIELDS} query
|
||||||
@@ -51,27 +55,16 @@ public class FieldContainerResponseFilter implements ContainerResponseFilter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private List<String> extractFieldsFrom(ContainerRequestContext requestContext) {
|
private List<String> extractFieldsFrom(ContainerRequestContext requestContext) {
|
||||||
List<String> fields = Lists.newArrayList();
|
return getFieldParameterFrom(requestContext)
|
||||||
|
.orElse(emptyList())
|
||||||
List<String> fieldParameters = getFieldParameterFrom(requestContext);
|
.stream()
|
||||||
if (fieldParameters != null && !fieldParameters.isEmpty()) {
|
.flatMap(p -> stream(p.split(FIELD_SEPARATOR)))
|
||||||
for (String fieldParameter : fieldParameters) {
|
.collect(Collectors.toList());
|
||||||
appendFieldsFromParameter(fields, fieldParameter);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return fields;
|
private Optional<List<String>> getFieldParameterFrom(ContainerRequestContext requestContext) {
|
||||||
}
|
|
||||||
|
|
||||||
private List<String> getFieldParameterFrom(ContainerRequestContext requestContext) {
|
|
||||||
MultivaluedMap<String, String> queryParameters = requestContext.getUriInfo().getQueryParameters();
|
MultivaluedMap<String, String> queryParameters = requestContext.getUriInfo().getQueryParameters();
|
||||||
return queryParameters.get(PARAMETER_FIELDS);
|
List<String> fieldParameters = queryParameters.get(PARAMETER_FIELDS);
|
||||||
|
return ofNullable(fieldParameters);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void appendFieldsFromParameter(List<String> fields, String fieldParameter) {
|
|
||||||
for (String field : fieldParameter.split(FIELD_SEPARATOR)) {
|
|
||||||
fields.add(field);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,8 @@ import javax.ws.rs.core.MultivaluedMap;
|
|||||||
import javax.ws.rs.core.UriInfo;
|
import javax.ws.rs.core.UriInfo;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
@@ -63,10 +65,35 @@ public class FieldContainerResponseFilterTest {
|
|||||||
assertEquals("{\"one\":1,\"five\":5}", objectMapper.writeValueAsString(node));
|
assertEquals("{\"one\":1,\"five\":5}", objectMapper.writeValueAsString(node));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testFilterEmpty() throws IOException {
|
||||||
|
applyFields();
|
||||||
|
JsonNode node = applyEntity("filter-test-002");
|
||||||
|
|
||||||
|
filter.filter(requestContext, responseContext);
|
||||||
|
|
||||||
|
assertEquals("{\"one\":1,\"two\":{\"three\":3,\"four\":4},\"five\":5}", objectMapper.writeValueAsString(node));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testFilterNotSet() throws IOException {
|
||||||
|
applyFields((List) null);
|
||||||
|
JsonNode node = applyEntity("filter-test-002");
|
||||||
|
|
||||||
|
filter.filter(requestContext, responseContext);
|
||||||
|
|
||||||
|
assertEquals("{\"one\":1,\"two\":{\"three\":3,\"four\":4},\"five\":5}", objectMapper.writeValueAsString(node));
|
||||||
|
}
|
||||||
|
|
||||||
private void applyFields(String... fields) {
|
private void applyFields(String... fields) {
|
||||||
|
ArrayList<String> fieldList = Lists.newArrayList(fields);
|
||||||
|
applyFields(fieldList);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void applyFields(List<String> fieldList) {
|
||||||
UriInfo info = mock(UriInfo.class);
|
UriInfo info = mock(UriInfo.class);
|
||||||
MultivaluedMap<String,String> queryParameters = mock(MultivaluedMap.class);
|
MultivaluedMap<String,String> queryParameters = mock(MultivaluedMap.class);
|
||||||
when(queryParameters.get("fields")).thenReturn(Lists.newArrayList(fields));
|
when(queryParameters.get("fields")).thenReturn(fieldList);
|
||||||
when(info.getQueryParameters()).thenReturn(queryParameters);
|
when(info.getQueryParameters()).thenReturn(queryParameters);
|
||||||
when(requestContext.getUriInfo()).thenReturn(info);
|
when(requestContext.getUriInfo()).thenReturn(info);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user