Skip to content

Commit

Permalink
Pagination changes
Browse files Browse the repository at this point in the history
* The newer version of spring-data-commons unearthed a shortcoming in
the handling of PagedResourcesAssembler's.
Added Pageable support where necessary
* Adjusted the default page size to 2000
(the same as org.springframework.data.web.PageableHandlerMethodArgumentResolver#DEFAULT_MAX_PAGE_SIZE)
  • Loading branch information
donovanmuller authored and ilayaperumalg committed Apr 25, 2017
1 parent c69070c commit 2184068
Show file tree
Hide file tree
Showing 9 changed files with 29 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ public PagedResources<AppRegistrationResource> list() {

@Override
public PagedResources<AppRegistrationResource> list(ApplicationType type) {
String uri = uriTemplate + "?size=10000" + ((type == null) ? "" : "&type=" + type.name());
String uri = uriTemplate + "?size=2000" + ((type == null) ? "" : "&type=" + type.name());
return restTemplate.getForObject(uri, AppRegistrationResource.Page.class);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ public class JobTemplate implements JobOperations {
@Override
public PagedResources<JobExecutionResource> executionList() {
String uriTemplate = executionsLink.getHref().toString();
uriTemplate = uriTemplate + "?size=10000";
uriTemplate = uriTemplate + "?size=2000";

return restTemplate.getForObject(uriTemplate, JobExecutionResource.Page.class);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ public class RuntimeTemplate implements RuntimeOperations {
@Override
public PagedResources<AppStatusResource> status() {
String uriTemplate = appStatusesUriTemplate.expand().getHref();
uriTemplate = uriTemplate + "?size=10000";
uriTemplate = uriTemplate + "?size=2000";
return restTemplate.getForObject(uriTemplate, AppStatusResource.Page.class);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ public class StreamTemplate implements StreamOperations {
@Override
public StreamDefinitionResource.Page list() {
String uriTemplate = definitionsLink.expand().getHref();
uriTemplate = uriTemplate + "?size=10000";
uriTemplate = uriTemplate + "?size=2000";
return restTemplate.getForObject(uriTemplate, StreamDefinitionResource.Page.class);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ public class TaskTemplate implements TaskOperations {
@Override
public TaskDefinitionResource.Page list() {
String uriTemplate = definitionsLink.getHref().toString();
uriTemplate = uriTemplate + "?size=10000";
uriTemplate = uriTemplate + "?size=2000";
return restTemplate.getForObject(uriTemplate, TaskDefinitionResource.Page.class);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import org.springframework.boot.configurationmetadata.ConfigurationMetadataProperty;
import org.springframework.cloud.dataflow.configuration.metadata.ApplicationConfigurationMetadataResolver;
import org.springframework.cloud.dataflow.core.ApplicationType;
Expand All @@ -44,6 +43,7 @@
import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.core.io.ResourceLoader;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PagedResourcesAssembler;
import org.springframework.hateoas.ExposesResourceFor;
import org.springframework.hateoas.PagedResources;
Expand Down Expand Up @@ -104,6 +104,7 @@ public AppRegistryController(AppRegistry appRegistry,
@RequestMapping(method = RequestMethod.GET)
@ResponseStatus(HttpStatus.OK)
public PagedResources<? extends AppRegistrationResource> list(
Pageable pageable,
PagedResourcesAssembler<AppRegistration> pagedResourcesAssembler,
@RequestParam(value = "type", required = false) ApplicationType type,
@RequestParam(value = "detailed", defaultValue = "false") boolean detailed) {
Expand All @@ -116,7 +117,8 @@ public PagedResources<? extends AppRegistrationResource> list(
}
}
Collections.sort(list);
return pagedResourcesAssembler.toResource(new PageImpl<>(list), assembler);
return pagedResourcesAssembler
.toResource(new PageImpl<>(list, pageable, appRegistry.findAll().size()), assembler);
}

/**
Expand Down Expand Up @@ -196,6 +198,7 @@ public void unregister(@PathVariable("type") ApplicationType type, @PathVariable
@RequestMapping(method = RequestMethod.POST)
@ResponseStatus(HttpStatus.CREATED)
public PagedResources<? extends AppRegistrationResource> registerAll(
Pageable pageable,
PagedResourcesAssembler<AppRegistration> pagedResourcesAssembler,
@RequestParam(value = "uri", required = false) String uri,
@RequestParam(value = "apps", required = false) Properties apps,
Expand All @@ -212,7 +215,9 @@ else if (!CollectionUtils.isEmpty(apps)) {
}
Collections.sort(registrations);
prefetchMetadata(registrations);
return pagedResourcesAssembler.toResource(new PageImpl<>(registrations), assembler);
return pagedResourcesAssembler.toResource(
new PageImpl<>(registrations, pageable, appRegistry.findAll().size()),
assembler);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,13 @@

package org.springframework.cloud.dataflow.server.controller;

import java.util.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ForkJoinPool;
import java.util.stream.Collectors;
Expand Down Expand Up @@ -235,15 +241,16 @@ public AppInstanceController(AppDeployer appDeployer) {
}

@RequestMapping
public PagedResources<AppInstanceStatusResource> list(@PathVariable String appId,
public PagedResources<AppInstanceStatusResource> list(Pageable pageable, @PathVariable String appId,
PagedResourcesAssembler<AppInstanceStatus> assembler) {
AppStatus status = appDeployer.status(appId);
if (status.getState().equals(DeploymentState.unknown)) {
throw new NoSuchAppException(appId);
}
List<AppInstanceStatus> appInstanceStatuses = new ArrayList<>(status.getInstances().values());
Collections.sort(appInstanceStatuses, INSTANCE_SORTER);
return assembler.toResource(new PageImpl<>(appInstanceStatuses), new InstanceAssembler(status));
return assembler.toResource(new PageImpl<>(appInstanceStatuses, pageable,
appInstanceStatuses.size()), new InstanceAssembler(status));
}

@RequestMapping("/{instanceId}")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import org.springframework.cloud.dataflow.core.ApplicationType;
import org.springframework.cloud.dataflow.core.StreamAppDefinition;
import org.springframework.cloud.dataflow.core.StreamDefinition;
Expand Down Expand Up @@ -239,9 +238,10 @@ public void delete(@PathVariable("name") String name) {
*/
@RequestMapping(value = "/{name}/related", method = RequestMethod.GET)
@ResponseStatus(HttpStatus.OK)
public PagedResources<StreamDefinitionResource> listRelated(@PathVariable("name") String name,
@RequestParam(value="nested", required = false, defaultValue = "false") boolean nested,
PagedResourcesAssembler<StreamDefinition> assembler) {
public PagedResources<StreamDefinitionResource> listRelated(Pageable pageable,
@PathVariable("name") String name,
@RequestParam(value = "nested", required = false, defaultValue = "false") boolean nested,
PagedResourcesAssembler<StreamDefinition> assembler) {
Set<StreamDefinition> relatedDefinitions = new LinkedHashSet<>();
StreamDefinition currentStreamDefinition = repository.findOne(name);
if (currentStreamDefinition == null) {
Expand All @@ -250,7 +250,8 @@ public PagedResources<StreamDefinitionResource> listRelated(@PathVariable("name"
Iterable<StreamDefinition> definitions = repository.findAll();
List<StreamDefinition> result = new ArrayList<>(findRelatedDefinitions(currentStreamDefinition, definitions,
relatedDefinitions, nested));
Page<StreamDefinition> page = new PageImpl<>(result);
Page<StreamDefinition> page = new PageImpl<>(result, pageable,
definitions.spliterator().getExactSizeIfKnown());
return assembler.toResource(page, new Assembler(page));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,6 @@ public PagedResources<TaskDefinitionResource> list(Pageable pageable, @RequestPa
}
}


/**
* Return a given task definition resource.
* @param name the name of an existing task definition (required)
Expand Down

0 comments on commit 2184068

Please sign in to comment.