You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by al...@apache.org on 2013/12/07 01:47:53 UTC
git commit: updated refs/heads/4.3 to c305e4e
Updated Branches:
refs/heads/4.3 90d29ac86 -> c305e4ec5
CLOUDSTACK-5390: obey page/pageSize parameters in listNetworks call
Conflicts:
server/src/com/cloud/network/NetworkServiceImpl.java
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/c305e4ec
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/c305e4ec
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/c305e4ec
Branch: refs/heads/4.3
Commit: c305e4ec5a0cf3e0403b96b1613316ac19155255
Parents: 90d29ac
Author: Alena Prokharchyk <al...@citrix.com>
Authored: Fri Dec 6 16:16:39 2013 -0800
Committer: Alena Prokharchyk <al...@citrix.com>
Committed: Fri Dec 6 16:47:41 2013 -0800
----------------------------------------------------------------------
.../com/cloud/network/NetworkServiceImpl.java | 36 +++++++++++++++++---
1 file changed, 31 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c305e4ec/server/src/com/cloud/network/NetworkServiceImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/NetworkServiceImpl.java b/server/src/com/cloud/network/NetworkServiceImpl.java
index c6c78f5..0a98503 100755
--- a/server/src/com/cloud/network/NetworkServiceImpl.java
+++ b/server/src/com/cloud/network/NetworkServiceImpl.java
@@ -1481,7 +1481,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService {
isRecursive = true;
}
- Filter searchFilter = new Filter(NetworkVO.class, "id", false, cmd.getStartIndex(), cmd.getPageSizeVal());
+ Filter searchFilter = new Filter(NetworkVO.class, "id", false, null, null);
SearchBuilder<NetworkVO> sb = _networksDao.createSearchBuilder();
if (forVpc != null) {
@@ -1608,14 +1608,40 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService {
networksToReturn=networksForDeploy;
}
- return networksToReturn;
+ //Now apply pagination
+ //Most likely pageSize will never exceed int value, and we need integer to partition the listToReturn
+ boolean notNull = cmd.getStartIndex() != null && cmd.getPageSizeVal() != null;
+ if (notNull && cmd.getStartIndex() <= Integer.MAX_VALUE && cmd.getStartIndex() >= Integer.MIN_VALUE &&
+ cmd.getPageSizeVal() <= Integer.MAX_VALUE && cmd.getPageSizeVal() >= Integer.MIN_VALUE) {
+ int startIndex = cmd.getStartIndex().intValue() == 0 ? 0 : cmd.getStartIndex().intValue() - 1;
+ List<NetworkVO> wPagination = new ArrayList<NetworkVO>();
+ List<List<NetworkVO>> partitions = partitionNetworks(networksToReturn, cmd.getPageSizeVal().intValue());
+ if (startIndex< partitions.size()) {
+ wPagination = partitions.get(startIndex);
+ }
+ return wPagination;
}
+ return networksToReturn;
+ }
+ private static List<List<NetworkVO>> partitionNetworks(List<NetworkVO> originalList,
+ int chunkSize) {
+ List<List<NetworkVO>> listOfChunks = new ArrayList<List<NetworkVO>>();
+ for (int i = 0; i < originalList.size() / chunkSize; i++) {
+ listOfChunks.add(originalList.subList(i * chunkSize, i * chunkSize
+ + chunkSize));
+ }
+ if (originalList.size() % chunkSize != 0) {
+ listOfChunks.add(originalList.subList(originalList.size()
+ - originalList.size() % chunkSize, originalList.size()));
+ }
+ return listOfChunks;
+ }
- private SearchCriteria<NetworkVO> buildNetworkSearchCriteria(SearchBuilder<NetworkVO> sb, String keyword, Long id,
- Boolean isSystem, Long zoneId, String guestIpType, String trafficType, Long physicalNetworkId,
- String aclType, boolean skipProjectNetworks, Boolean restartRequired, Boolean specifyIpRanges, Long vpcId, Map<String, String> tags) {
+ private SearchCriteria<NetworkVO> buildNetworkSearchCriteria(SearchBuilder<NetworkVO> sb, String keyword, Long id, Boolean isSystem, Long zoneId, String guestIpType,
+ String trafficType, Long physicalNetworkId, String aclType, boolean skipProjectNetworks, Boolean restartRequired, Boolean specifyIpRanges, Long vpcId,
+ Map<String, String> tags) {
SearchCriteria<NetworkVO> sc = sb.create();