package org.ovirt.engine.core.vdsbroker.vdsbroker; import java.util.HashMap; import java.util.Map; @SuppressWarnings("unchecked") public final class VMListReturn { private static final String STATUS = "status"; private static final String VM_LIST = "vmList"; private static final Map<String, Object>[] EMPTY_ARRAY_OF_MAPS = new HashMap[0]; public Status status; public Map<String, Object>[] vmList = EMPTY_ARRAY_OF_MAPS; public VMListReturn(Map<String, Object> innerMap) { status = new Status((Map<String, Object>) innerMap.get(STATUS)); Object[] temp = (Object[]) innerMap.get(VM_LIST); if (temp != null) { vmList = new HashMap[temp.length]; for (int i = 0; i < temp.length; i++) { // 1196327: we need to process both types of list message // when temp[i] is a String we process array of vmids // when temp[i] is a Map we process a map with status to vmid mapping if (String.class.isInstance(temp[i])) { Map<String, Object> map = new HashMap<>(); map.put("vmId", temp[i]); vmList[i] = map; } else { vmList[i] = (Map<String, Object>) temp[i]; } } } } }