From b797313ac0e7c1fa7cfb82526fb0823f01cb7e98 Mon Sep 17 00:00:00 2001 From: Kris McQueen Date: Mon, 30 Aug 2010 15:15:19 -0700 Subject: [PATCH] Refactor listOSTypes API to new framework. --- .../cloud/api/commands/ListGuestOsCmd.java | 96 ++++--------------- .../cloud/api/response/GuestOSResponse.java | 39 ++++++++ .../com/cloud/server/ManagementServer.java | 3 +- .../cloud/server/ManagementServerImpl.java | 12 +-- 4 files changed, 67 insertions(+), 83 deletions(-) create mode 100644 server/src/com/cloud/api/response/GuestOSResponse.java diff --git a/server/src/com/cloud/api/commands/ListGuestOsCmd.java b/server/src/com/cloud/api/commands/ListGuestOsCmd.java index 3037eaf78c2..4631c81118c 100644 --- a/server/src/com/cloud/api/commands/ListGuestOsCmd.java +++ b/server/src/com/cloud/api/commands/ListGuestOsCmd.java @@ -20,29 +20,21 @@ package com.cloud.api.commands; import java.util.ArrayList; import java.util.List; -import java.util.Map; import org.apache.log4j.Logger; -import com.cloud.api.BaseCmd; +import com.cloud.api.BaseListCmd; +import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.ServerApiException; -import com.cloud.server.Criteria; +import com.cloud.api.response.GuestOSResponse; +import com.cloud.serializer.SerializerHelper; import com.cloud.storage.GuestOSVO; -import com.cloud.utils.Pair; -public class ListGuestOsCmd extends BaseCmd { +@Implementation(method="listGuestOSByCriteria") +public class ListGuestOsCmd extends BaseListCmd { public static final Logger s_logger = Logger.getLogger(ListIsosCmd.class.getName()); private static final String s_name = "listostypesresponse"; - private static final List> s_properties = new ArrayList>(); - - static { - s_properties.add(new Pair(BaseCmd.Properties.ID, Boolean.FALSE)); - s_properties.add(new Pair(BaseCmd.Properties.OS_CATEGORY_ID, Boolean.FALSE)); - s_properties.add(new Pair(BaseCmd.Properties.PAGE, Boolean.FALSE)); - s_properties.add(new Pair(BaseCmd.Properties.PAGESIZE, Boolean.FALSE)); - } ///////////////////////////////////////////////////// //////////////// API parameters ///////////////////// @@ -76,69 +68,21 @@ public class ListGuestOsCmd extends BaseCmd { public String getName() { return s_name; } - @Override - public List> getProperties() { - return s_properties; - } - @Override - public List> execute(Map params) { - - List guestOSList = null; - try - { - Long id = (Long)params.get(BaseCmd.Properties.ID.getName()); - Long osCategoryId = (Long)params.get(BaseCmd.Properties.OS_CATEGORY_ID.getName()); - Integer pageSize = (Integer)params.get(BaseCmd.Properties.PAGESIZE.getName()); - Integer page = (Integer)params.get(BaseCmd.Properties.PAGE.getName()); - - Long startIndex = Long.valueOf(0); - int pageSizeNum = 50; - if (pageSize != null) { - pageSizeNum = pageSize.intValue(); - } - if (page != null) { - int pageNum = page.intValue(); - if (pageNum > 0) { - startIndex = Long.valueOf(pageSizeNum * (pageNum-1)); - } - } - - Criteria c = new Criteria("id", Boolean.TRUE, startIndex, Long.valueOf(pageSizeNum)); - - if (id != null) { - c.addCriteria(Criteria.ID, id); - } - - if (osCategoryId != null) { - c.addCriteria(Criteria.OSCATEGORYID, osCategoryId); - } - guestOSList = getManagementServer().listGuestOSByCriteria(c); - } - catch (Exception ex) - { - s_logger.error("Exception listing guest OS", ex); - throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to list guest OS due to exception: " + ex.getMessage()); + @Override @SuppressWarnings("unchecked") + public String getResponse() { + List guestOSList = (List)getResponseObject(); + + List response = new ArrayList(); + for (GuestOSVO guestOS : guestOSList) { + GuestOSResponse guestOSResponse = new GuestOSResponse(); + guestOSResponse.setDescription(guestOS.getDisplayName()); + guestOSResponse.setId(guestOS.getId()); + guestOSResponse.setOsCategoryId(guestOS.getCategoryId()); + + response.add(guestOSResponse); } - - Object[] tag = null; - List> guestOSTags = new ArrayList>(); - if (guestOSList != null) { - tag = new Object[guestOSList.size()]; - int i = 0; - for (GuestOSVO guestOS : guestOSList) { - List> guestOSData = new ArrayList>(); - guestOSData.add(new Pair(BaseCmd.Properties.ID.getName(), guestOS.getId().toString())); - guestOSData.add(new Pair(BaseCmd.Properties.OS_CATEGORY_ID.getName(), guestOS.getCategoryId())); - guestOSData.add(new Pair(BaseCmd.Properties.DESCRIPTION.getName(), guestOS.getDisplayName())); - - tag[i++] = guestOSData; - } - } else { - tag = new Object[0]; - } - Pair guestOSTag = new Pair("ostype", tag); - guestOSTags.add(guestOSTag); - return guestOSTags; + + return SerializerHelper.toSerializedString(response); } } diff --git a/server/src/com/cloud/api/response/GuestOSResponse.java b/server/src/com/cloud/api/response/GuestOSResponse.java new file mode 100644 index 00000000000..7440cec3b20 --- /dev/null +++ b/server/src/com/cloud/api/response/GuestOSResponse.java @@ -0,0 +1,39 @@ +package com.cloud.api.response; + +import com.cloud.api.ResponseObject; +import com.cloud.serializer.Param; + +public class GuestOSResponse implements ResponseObject { + @Param(name="id") + private Long id; + + @Param(name="oscategoryid") + private Long osCategoryId; + + @Param(name="description") + private String description; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getOsCategoryId() { + return osCategoryId; + } + + public void setOsCategoryId(Long osCategoryId) { + this.osCategoryId = osCategoryId; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } +} diff --git a/server/src/com/cloud/server/ManagementServer.java b/server/src/com/cloud/server/ManagementServer.java index df79a74a103..c80fcd259ac 100644 --- a/server/src/com/cloud/server/ManagementServer.java +++ b/server/src/com/cloud/server/ManagementServer.java @@ -41,6 +41,7 @@ import com.cloud.api.commands.ListDomainChildrenCmd; import com.cloud.api.commands.ListDomainsCmd; import com.cloud.api.commands.ListEventsCmd; import com.cloud.api.commands.ListGuestOsCategoriesCmd; +import com.cloud.api.commands.ListGuestOsCmd; import com.cloud.api.commands.LockAccountCmd; import com.cloud.api.commands.LockUserCmd; import com.cloud.api.commands.RebootSystemVmCmd; @@ -1274,7 +1275,7 @@ public interface ManagementServer { * Obtains a list of all guest OS. * @return list of GuestOS */ - List listGuestOSByCriteria(Criteria c); + List listGuestOSByCriteria(ListGuestOsCmd cmd); /** * Obtains a list of all guest OS categories. diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java index 04ad35e49e6..a949a65ddb5 100755 --- a/server/src/com/cloud/server/ManagementServerImpl.java +++ b/server/src/com/cloud/server/ManagementServerImpl.java @@ -80,6 +80,7 @@ import com.cloud.api.commands.ListDomainChildrenCmd; import com.cloud.api.commands.ListDomainsCmd; import com.cloud.api.commands.ListEventsCmd; import com.cloud.api.commands.ListGuestOsCategoriesCmd; +import com.cloud.api.commands.ListGuestOsCmd; import com.cloud.api.commands.LockAccountCmd; import com.cloud.api.commands.LockUserCmd; import com.cloud.api.commands.PrepareForMaintenanceCmd; @@ -5884,12 +5885,11 @@ public class ManagementServerImpl implements ManagementServer { return _templateDao.listAll(); } - public List listGuestOSByCriteria(Criteria c) - { - - Filter searchFilter = new Filter(GuestOSVO.class, c.getOrderBy(), c.getAscending(), c.getOffset(), c.getLimit()); - Long id = (Long) c.getCriteria(Criteria.ID); - Long osCategoryId = (Long) c.getCriteria(Criteria.OSCATEGORYID); + @Override + public List listGuestOSByCriteria(ListGuestOsCmd cmd) { + Filter searchFilter = new Filter(GuestOSVO.class, "id", true, cmd.getStartIndex(), cmd.getPageSizeVal()); + Long id = cmd.getId(); + Long osCategoryId = cmd.getOsCategoryId(); SearchBuilder sb = _guestOSDao.createSearchBuilder(); sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);