package com.lesstif.jira.services;
import java.io.IOException;
import java.util.List;
import org.apache.commons.configuration.ConfigurationException;
import org.codehaus.jackson.map.DeserializationConfig;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.type.TypeReference;
import com.lesstif.jira.Constants;
import com.lesstif.jira.JIRAHTTPClient;
import com.lesstif.jira.project.Project;
import com.sun.jersey.api.client.ClientResponse;
import lombok.Data;
/**
* @see <a href="https://docs.atlassian.com/software/jira/docs/api/REST/latest/#d2e86">/rest/api/2/project</a>
*
* @author lesstif
*
*/
@Data
public class ProjectService {
private JIRAHTTPClient client = null;
public ProjectService() throws ConfigurationException {
client = new JIRAHTTPClient();
}
public List<Project> getProjectList() throws IOException {
if (client == null)
throw new IllegalStateException("HTTP Client not Initailized");
client.setResourceName(Constants.JIRA_RESOURCE_PROJECT);
ClientResponse response = client.get();
String content = response.getEntity(String.class);
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, true);
TypeReference<List<Project>> ref = new TypeReference<List<Project>>(){};
List<Project> prj = mapper.readValue(content, ref);
return prj;
}
// get Full project Information
public Project getProjectDetail(String idOrKey) throws IOException {
if (client == null)
throw new IllegalStateException("HTTP Client not Initailized");
client.setResourceName(Constants.JIRA_RESOURCE_PROJECT + "/" + idOrKey);
ClientResponse response = client.get();
String content = response.getEntity(String.class);
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, true);
TypeReference<Project> ref = new TypeReference<Project>(){};
Project prj = mapper.readValue(content, ref);
return prj;
}
}