/*
* Copyright (c) 2015 EMC Corporation
* All Rights Reserved
*/
package com.emc.vipr.client.catalog.impl;
import com.emc.vipr.client.ClientConfig;
import com.emc.vipr.client.core.util.ResourceUtils;
import com.emc.vipr.client.impl.RestClient;
import com.emc.vipr.model.catalog.ApiList;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.GenericType;
import javax.ws.rs.core.MediaType;
import java.net.URI;
import java.util.List;
public class ApiListUtils {
public static <T> List<T> postApiList(RestClient client, Object request, GenericType<List<T>> type, String path, Object... args) {
List<T> apiList;
if (isXmlType(client.getConfig())) {
apiList = client.post(ApiList.class, request, path, args).getList();
}
else {
apiList = client.post(type, request, path, args);
}
return ResourceUtils.defaultList(apiList);
}
public static <T> List<T> getApiList(RestClient client, GenericType<List<T>> type, String path, Object... args) {
List<T> apiList;
if (isXmlType(client.getConfig())) {
apiList = client.get(ApiList.class, path, args).getList();
}
else {
apiList = client.get(type, path, args);
}
return ResourceUtils.defaultList(apiList);
}
public static <T> List<T> getApiListUri(RestClient client, GenericType<List<T>> type, URI uri) {
List<T> apiList;
if (isXmlType(client.getConfig())) {
apiList = client.getURI(ApiList.class, uri).getList();
}
else {
apiList = client.getURI(type, uri);
}
return ResourceUtils.defaultList(apiList);
}
public static <T> List<T> getEntityList(ClientConfig config, GenericType<List<T>> type, ClientResponse response) {
List<T> apiList;
if (isXmlType(config)) {
apiList = response.getEntity(ApiList.class).getList();
}
else {
apiList = response.getEntity(type);
}
return ResourceUtils.defaultList(apiList);
}
private static boolean isXmlType(ClientConfig config) {
return config.getMediaType().equals(MediaType.APPLICATION_XML);
}
}