From fa74b3a300a679f3e47a3fac13fab323cda34cf3 Mon Sep 17 00:00:00 2001 From: Alena Prokharchyk Date: Mon, 28 Jul 2014 14:41:50 -0700 Subject: [PATCH] CS-19072: fixed broken pagination and count in listVpcOfferings --- .../network/vpc/VpcProvisioningService.java | 4 +++- .../command/user/vpc/ListVPCOfferingsCmd.java | 10 ++++----- .../com/cloud/network/vpc/VpcManagerImpl.java | 21 +++++++++++++++---- 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/api/src/com/cloud/network/vpc/VpcProvisioningService.java b/api/src/com/cloud/network/vpc/VpcProvisioningService.java index 82a7baae959..cce285030b9 100644 --- a/api/src/com/cloud/network/vpc/VpcProvisioningService.java +++ b/api/src/com/cloud/network/vpc/VpcProvisioningService.java @@ -20,6 +20,8 @@ package com.cloud.network.vpc; import java.util.List; import java.util.Map; +import com.cloud.utils.Pair; + public interface VpcProvisioningService { public VpcOffering getVpcOffering(long vpcOfferingId); @@ -29,7 +31,7 @@ public interface VpcProvisioningService { Map serviceCapabilitystList, Long serviceOfferingId); - List listVpcOfferings(Long id, String name, String displayText, List supportedServicesStr, Boolean isDefault, String keyword, + Pair,Integer> listVpcOfferings(Long id, String name, String displayText, List supportedServicesStr, Boolean isDefault, String keyword, String state, Long startIndex, Long pageSizeVal); /** diff --git a/api/src/org/apache/cloudstack/api/command/user/vpc/ListVPCOfferingsCmd.java b/api/src/org/apache/cloudstack/api/command/user/vpc/ListVPCOfferingsCmd.java index e76afc92cd5..69d7c8b8d1e 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vpc/ListVPCOfferingsCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vpc/ListVPCOfferingsCmd.java @@ -19,16 +19,16 @@ package org.apache.cloudstack.api.command.user.vpc; import java.util.ArrayList; import java.util.List; -import org.apache.log4j.Logger; - import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.BaseListCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.response.ListResponse; import org.apache.cloudstack.api.response.VpcOfferingResponse; +import org.apache.log4j.Logger; import com.cloud.network.vpc.VpcOffering; +import com.cloud.utils.Pair; @APICommand(name = "listVPCOfferings", description = "Lists VPC offerings", responseObject = VpcOfferingResponse.class, requestHasSensitiveInfo = false, responseHasSensitiveInfo = false) @@ -93,17 +93,17 @@ public class ListVPCOfferingsCmd extends BaseListCmd { @Override public void execute() { - List offerings = + Pair, Integer> offerings = _vpcProvSvc.listVpcOfferings(getId(), getVpcOffName(), getDisplayText(), getSupportedServices(), isDefault, this.getKeyword(), getState(), this.getStartIndex(), this.getPageSizeVal()); ListResponse response = new ListResponse(); List offeringResponses = new ArrayList(); - for (VpcOffering offering : offerings) { + for (VpcOffering offering : offerings.first()) { VpcOfferingResponse offeringResponse = _responseGenerator.createVpcOfferingResponse(offering); offeringResponses.add(offeringResponse); } - response.setResponses(offeringResponses); + response.setResponses(offeringResponses, offerings.second()); response.setResponseName(getCommandName()); this.setResponseObject(response); } diff --git a/server/src/com/cloud/network/vpc/VpcManagerImpl.java b/server/src/com/cloud/network/vpc/VpcManagerImpl.java index 9971bd5583d..5aa4721e8a8 100644 --- a/server/src/com/cloud/network/vpc/VpcManagerImpl.java +++ b/server/src/com/cloud/network/vpc/VpcManagerImpl.java @@ -113,6 +113,7 @@ import com.cloud.user.ResourceLimitService; import com.cloud.user.User; import com.cloud.utils.NumbersUtil; import com.cloud.utils.Pair; +import com.cloud.utils.StringUtils; import com.cloud.utils.Ternary; import com.cloud.utils.component.ManagerBase; import com.cloud.utils.concurrency.NamedThreadFactory; @@ -608,9 +609,9 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis } @Override - public List listVpcOfferings(Long id, String name, String displayText, List supportedServicesStr, Boolean isDefault, String keyword, + public Pair,Integer> listVpcOfferings(Long id, String name, String displayText, List supportedServicesStr, Boolean isDefault, String keyword, String state, Long startIndex, Long pageSizeVal) { - Filter searchFilter = new Filter(VpcOfferingVO.class, "created", false, startIndex, pageSizeVal); + Filter searchFilter = new Filter(VpcOfferingVO.class, "created", false, null, null); SearchCriteria sc = _vpcOffDao.createSearchCriteria(); if (keyword != null) { @@ -670,9 +671,21 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis } } - return supportedOfferings; + List wPagination = StringUtils.applyPagination(supportedOfferings, startIndex, pageSizeVal); + if (wPagination != null) { + @SuppressWarnings("unchecked") + Pair, Integer> listWPagination = new Pair, Integer>((List) wPagination, supportedOfferings.size()); + return listWPagination; + } + return new Pair, Integer>(supportedOfferings, supportedOfferings.size()); } else { - return offerings; + List wPagination = StringUtils.applyPagination(offerings, startIndex, pageSizeVal); + if (wPagination != null) { + @SuppressWarnings("unchecked") + Pair, Integer> listWPagination = new Pair, Integer>((List) wPagination, offerings.size()); + return listWPagination; + } + return new Pair, Integer>(offerings, offerings.size()); } }