diff options
Diffstat (limited to 'plugins/tasks/tasks-core/jira/src/com/intellij/tasks/jira/soap/JiraSoapApi.java')
-rw-r--r-- | plugins/tasks/tasks-core/jira/src/com/intellij/tasks/jira/soap/JiraSoapApi.java | 114 |
1 files changed, 0 insertions, 114 deletions
diff --git a/plugins/tasks/tasks-core/jira/src/com/intellij/tasks/jira/soap/JiraSoapApi.java b/plugins/tasks/tasks-core/jira/src/com/intellij/tasks/jira/soap/JiraSoapApi.java deleted file mode 100644 index 148432902a86..000000000000 --- a/plugins/tasks/tasks-core/jira/src/com/intellij/tasks/jira/soap/JiraSoapApi.java +++ /dev/null @@ -1,114 +0,0 @@ -package com.intellij.tasks.jira.soap; - -import com.intellij.openapi.diagnostic.Logger; -import com.intellij.tasks.LocalTask; -import com.intellij.tasks.Task; -import com.intellij.tasks.TaskBundle; -import com.intellij.tasks.TaskState; -import com.intellij.tasks.impl.TaskUtil; -import com.intellij.tasks.jira.JiraRemoteApi; -import com.intellij.tasks.jira.JiraRepository; -import com.intellij.util.Function; -import com.intellij.util.containers.ContainerUtil; -import org.apache.commons.httpclient.HttpStatus; -import org.apache.commons.httpclient.NameValuePair; -import org.apache.commons.httpclient.methods.GetMethod; -import org.jdom.Element; -import org.jdom.input.SAXBuilder; -import org.jetbrains.annotations.NonNls; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.List; - -/** - * Legacy SOAP connector restored due to IDEA-120595. - * - * @author Mikhail Golubev - */ -public class JiraSoapApi extends JiraRemoteApi { - - private static final Logger LOG = Logger.getInstance(JiraSoapApi.class); - - @NonNls private static final String RSS_SEARCH_PATH = "/sr/jira.issueviews:searchrequest-xml/temp/SearchRequest.xml"; - public static final String RSS_ISSUE_PATH = "/si/jira.issueviews:issue-xml/"; - - public JiraSoapApi(@NotNull JiraRepository repository) { - super(repository); - } - - @NotNull - @Override - public List<Task> findTasks(@NotNull String query, int max) throws Exception { - - // Unfortunately, both SOAP and XML-RPC interfaces of JIRA don't allow fetching *all* tasks from server, but - // only filtered by some search term (see http://stackoverflow.com/questions/764282/how-can-jira-soap-api-not-have-this-method). - // JQL was added in SOAP only since JIRA 4.0 (see method JiraSoapService#getIssuesFromJqlSearch() at - // https://docs.atlassian.com/software/jira/docs/api/rpc-jira-plugin/latest/index.html?com/atlassian/jira/rpc/soap/JiraSoapService.html) - // So due to this limitation and the need to support these old versions of bug tracker (3.0, 4.2) we need the following ugly and hacky - // solution with extracting issues from RSS feed. - - GetMethod method = new GetMethod(myRepository.getUrl() + RSS_SEARCH_PATH); - method.setQueryString(new NameValuePair[] { - new NameValuePair("tempMax", String.valueOf(max)), - new NameValuePair("assignee", TaskUtil.encodeUrl(myRepository.getUsername())), - new NameValuePair("reset", "true"), - new NameValuePair("sorter/field", "updated"), - new NameValuePair("sorter/order", "DESC"), - new NameValuePair("pager/start", "0") - }); - return processRSS(method); - } - - private List<Task> processRSS(@NotNull GetMethod method) throws Exception { - // Basic authorization should be enough - int code = myRepository.getHttpClient().executeMethod(method); - if (code != HttpStatus.SC_OK) { - throw new Exception(TaskBundle.message("failure.http.error", code, method.getStatusText())); - } - Element root = new SAXBuilder(false).build(method.getResponseBodyAsStream()).getRootElement(); - Element channel = root.getChild("channel"); - if (channel != null) { - List<Element> children = channel.getChildren("item"); - LOG.debug("Total issues in JIRA RSS feed: " + children.size()); - return ContainerUtil.map(children, new Function<Element, Task>() { - public Task fun(Element element) { - return new JiraSoapTask(element, myRepository); - } - }); - } - else { - LOG.warn("JIRA channel not found"); - } - return ContainerUtil.emptyList(); - } - - @Nullable - @Override - public Task findTask(@NotNull String key) throws Exception { - try { - List<Task> tasks = processRSS(new GetMethod(myRepository.getUrl() + RSS_ISSUE_PATH + key + '/' + key + ".xml")); - return tasks.isEmpty() ? null : tasks.get(0); - } - catch (Exception e) { - LOG.warn("Cannot get issue " + key + ": " + e.getMessage()); - return null; - } - } - - @NotNull - @Override - public final ApiType getType() { - return ApiType.SOAP; - } - - @Override - public void setTaskState(@NotNull Task task, @NotNull TaskState state) throws Exception { - throw new Exception(TaskBundle.message("jira.failure.no.state.update")); - } - - @Override - public void updateTimeSpend(@NotNull LocalTask task, @NotNull String timeSpent, String comment) throws Exception { - throw new Exception(TaskBundle.message("jira.failure.no.time.spent")); - } -} |